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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
sqlite-wal-pagesize — SQLite 3.53.4 - 高 - ローカル - 情報漏洩 - WAL/DB ページサイズ不一致による未初期化ページ末尾 | Kitploit
ツール/GitHubGitHub/abraxas/sqlite-wal-pagesize
メモリフォレンジック脆弱性分析エクスプロイト情報収集論文と研究データベースセキュリティラボと実践
GitHubabraxas/sqlite-wal-pagesize

sqlite-wal-pagesize

SQLite 3.53.4 - 高 - ローカル - 情報漏洩 - WAL/DB ページサイズ不一致による未初期化ページ末尾

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

人気

すべて見る →

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

すべてのツールを探索

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

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

Abraxas Labs - sqlite-wal-pagesize

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

sqlite-wal-pagesize

分類: 情報漏洩 到達範囲: ローカル

SQLite 3.53.4 (b09c88c) は、WAL フレームを末尾の memset なしで完全な pager ページにショートリードする。walIndexRecover は [512, SQLITE_MAX_PAGE_SIZE] 内の任意の 2 の冪の WAL ページサイズを受け入れ、データベースのページサイズと比較しない。リサイクルされた pcache スロットは、通常の SQL を通じて以前のヒープ/ページバイトを返す。

ラボ: 4096 ページの WAL モード .db、兄弟 -wal のヘッダーページサイズ 512、SELECT b FROM t が 2000 バイトを返した。512 バイトフレームを超えた末尾は SQLITE-WAL-PAGESIZE-WITNESS だった。RCE ではない。

IDCVE 未割当
分類情報漏洩 (SQL 経由の未初期化 pager 末尾)
到達範囲ローカル (信頼できない .db と兄弟 -wal)
CWECWE-908, CWE-200
CVSSHigh: 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
製品SQLite (Hwaci)
影響バージョン3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69); SOURCE_ID 2026-07-24 19:02:57 bf7c7f30031888f4e796e429ab3978879485813aaca6f641c7b33e4e09459bcc
認証なし (被害者が攻撃者のファイルを開く)
ライセンスGNU Affero GPL v3.0
ラボ127.0.0.1:18830 のみ

攻撃者ができること

WAL モードの .db と、ヘッダーページサイズがデータベースより小さい有効な 2 の冪である兄弟 -wal を配布する。リカバリはそれを受け入れる。sqlite3WalReadFrame は WAL フレームサイズのみを、.db からサイズ決定された pager バッファにコピーする。そのフレームより大きいペイロードを主張するテーブルリーフセルは、リサイクルされた pcache 末尾から満たされる。その blob に対する SELECT / substr() / hex() は、同一プロセス内の以前のページからの残留 pager/ヒープバイトを返す。

逆の不一致 (WAL が pager より大きい) はチェックポイント時に SQLITE_CORRUPT となる。この残留は小さい WAL の読み取りパスに限られる。RCE ではない。

発見の経緯

後期トランクの残留マトリックスの後、3.53.4 を 20 回ソース探索した。Winter がフォーラムで 2026-08-17T15:54:41Z として報告した。トランク f9b4ee3695 / branch-3.53 4fde87b2a0 (2026-08-16) はこの GA (2026-07-24) より後である。このピンでの sqlite3WalReadFrame は依然として (nOut>sz ? sz : nOut) であり、末尾の memset はない。

回り道: 初期のリーフセルが不正で、SELECT が SQLITE_CORRUPT rc=11 を返した。機能するセルは、4096 バイトの pager ページ上の 512 バイトフレームにまたがる 2000 バイトのローカルペイロードを主張する。

ラボ

cd lab
./run.sh

正規のソース zip から SQLite 3.53.4 をビルドする。Compose sqlite-wal-pagesize。公開 127.0.0.1:18830。48x4000 バイトの witness 行で pcache をプライムし、ショートリードリーフに対して SELECT b FROM t を実行する。

SUCCESS sqlite-wal-pagesize how=wal-shortread-pcache-tail len=2000 rootpage=2 SQLITE-WAL-PAGESIZE-WITNESS

修正

リカバリ中に WAL ヘッダーのページサイズとデータベースのページサイズを比較する。一致しない場合、WAL を拒否するか、pager ページを完全に初期化する:

if( nOut>sz ){
  memset(pOut+sz, 0, nOut-sz);
  nOut = sz;
}

このハンクはこの GA より後のトランクにある。3.53.4 には含まれていない。

参考文献

  • sqlite.org/src タグ version-3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69)
  • src/wal.c sqlite3WalReadFrame, walIndexRecover
  • src/pager.c readDbPage
  • フォーラム 2026-08-17T15:54:41Z (Winter)
ツールをダウンロード