Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
sqlite-session-ncol — SQLite 3.53.4 - 高 - ローカル - ヒープOOB書き込み - セッションチェンジセットの同名nCol増加 | Kitploit
ツール/GitHubGitHub/abraxas/sqlite-session-ncol
メモリフォレンジック脆弱性分析エクスプロイトファジングバイナリ解析論文と研究データベースセキュリティ
GitHubabraxas/sqlite-session-ncol

sqlite-session-ncol

SQLite 3.53.4 - 高 - ローカル - ヒープOOB書き込み - セッションチェンジセットの同名nCol増加

リポジトリを見る
208日前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

Abraxas Labs - sqlite-session-ncol

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  sqlite-session-ncol

解説記事: https://abraxaslabs.tech/research/sqlite-session-ncol

sqlite-session-ncol

クラス: ヒープOOB書き込み 到達範囲: ローカル

SQLite 3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69、SOURCE_ID 2026-07-24 19:02:57 bf7c7f30031888f4e796e429ab3978879485813aaca6f641c7b33e4e09459bcc) を -DSQLITE_ENABLE_SESSION 付きでビルド。テーブル名 t を nCol=2 で再利用した後に nCol=64 で再利用する2ブロックのチェンジセットが sessionTableInfo のリセット (sqlite3session.c:5619) をスキップし、最初のブロックの aUpdateMask を超えて memset する。sessionUpdateFind におけるサイズ12のASan WRITE。対照実験では単一の2列UPDATEで apply-rc=0。

SESSION が有効でない限り、デフォルトのアマルガメーションには該当しない。CVE-2026-50812 のNPDは 3.53.2 以降で修正済み。武器化されたRCEペイロードではない。オラクルはASan WRITEである。

IDCVE未割当
クラスヒープOOB書き込み (サイズ12のASan WRITE。RCEは実証されていない)
到達範囲ローカル (sqlite3changeset_apply* 経由の信頼できないチェンジセット)
CWECWE-787
CVSSHigh: 8.1 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
製品SQLite Session extra (Hwaci)
影響を受けるバージョン3.53.4 (b09c88c) を -DSQLITE_ENABLE_SESSION 付きでコンパイルしたもの
認証ホストが信頼できないチェンジセットを適用する
ライセンスGNU Affero GPL v3.0
ラボ127.0.0.1:18900 のみ。サイズ12のASan WRITEの証拠。

攻撃者ができること

2番目のテーブルブロックがより大きな nCol でテーブル名を再利用する、信頼できないチェンジセットを適用する。ヒープOOB書き込み。extraをコンパイルする。SESSION が有効でない限り、デフォルトのアマルガメーションには該当しない。

最初のブロックは pIter->nCol から aUpdateMask を割り当てる。後続の同名ブロックは sessionTableInfo のリセットをスキップし、古い割り当てを超えてより大きなマスクを memset する。ラボ: nCol=2 の後に nCol=64 のUPDATE。sessionUpdateFind におけるサイズ12のASan WRITE。対照実験では単一の2列UPDATEで apply-rc=0。

このパックを write-what-where ガジェットとして扱ってはならない。サイズ12のASan WRITEがオラクルである。

発見の経緯

3.53.2 のFTS5 / session-NPDの波の後、SQLite 3.53.4 に対して20回のソースハンティングを行った。CVE-2026-50812 は修正済みである (sessionBindRow は欠落した値を SQLITE_CORRUPT として扱う)。Sessionは依然として SessionApplyCtx をテーブル名のみでキー付けしている。同じ名前でより大きな宣言列数を持つ2番目のブロックが aUpdateMask を再利用する。

既に記録済みの誤った道: デフォルトのアマルガメーションを対象範囲内とみなすこと (SESSIONはオフ); CVE-2026-50812 の再申請; 2列スキーマに対して nCol=64 の単一テーブルブロックを送信すること (schemaMismatch、書き込みなし); 12バイトの memset からRCEを主張すること。

ラボ

cd lab
./run.sh

公式の sqlite-src-3530400 zip からの ASan アマルガメーション。追加で -DSQLITE_ENABLE_SESSION -DSQLITE_ENABLE_PREUPDATE_HOOK を付けてコンパイル。ヘルスチェックは 127.0.0.1:18900。ループバックにバインドする。

SUCCESS sqlite-session-ncol how=asan-heap-write-sessionUpdateFind write-size=12 control-apply-rc=0 SQLITE-SESSION-NCOL-WITNESS

修正

後続のチェンジセットテーブルブロックが名前を再利用する場合、新しい名前の場合と同じ方法で SessionApplyCtx を再構築します。すなわち、aUpdateMask を解放し、sessionTableInfo を再実行し、実際のスキーマより大きい nCol を拒否します。トランク 3f57024aec / ブランチ-3.53 a1dd7123d8(2026-08-17)はこの GA より後です。

参考資料

  • https://sqlite.org/src タグ version-3.53.4(b09c88c14082339b66c7b7158d609a771e64ca69)
  • https://github.com/sqlite/sqlite/blob/b09c88c14082339b66c7b7158d609a771e64ca69/ext/session/sqlite3session.c sessionChangesetApply :5619、sessionUpdateFind :4381-4412
  • フォーラム https://sqlite.org/bugs/info/2026-08-16T10:15:25Z
  • CVE-2026-50812 のセッション NPD は 3.53.2+ で修正済み
ツールをダウンロード