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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
sqlite-collate-depth — SQLite 3.53.4 - 高 - ローカル - クラッシュ - COLLATE チェーンが SQLITE_LIMIT_EXPR_DEPTH をスキップする | Kitploit
ツール/GitHubGitHub/abraxas/sqlite-collate-depth
静的分析脆弱性分析エクスプロイトファジングデータベースセキュリティ
GitHubabraxas/sqlite-collate-depth

sqlite-collate-depth

SQLite 3.53.4 - 高 - ローカル - クラッシュ - COLLATE チェーンが SQLITE_LIMIT_EXPR_DEPTH をスキップする

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

人気

すべて見る →

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

すべてのツールを探索

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

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

Abraxas Labs - sqlite-collate-depth

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

解説記事: https://abraxaslabs.tech/research/sqlite-collate-depth

sqlite-collate-depth

分類: クラッシュ 到達範囲: ローカル

SQLite 3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69、SOURCE_ID 2026-07-24 19:02:57 bf7c7f30031888f4e796e429ab3978879485813aaca6f641c7b33e4e09459bcc) - Hwaci

COLLATE の文法アクションは sqlite3ExprCheckHeight を一切呼び出さない。sqlite3ExprAddCollateToken は nHeight が 1 のままの TK_COLLATE ノードを確保し、その pLeft に直前の式をぶら下げる。通常の演算子は sqlite3PExpr を経由するため、ドキュメント化された SQLITE_LIMIT_EXPR_DEPTH(デフォルト 1000)が適用される。この演算子には適用されない。

それでもウォーカーはすべての pLeft に対して再帰する。EP_Skip はアフィニティ用であり、sqlite3WalkExprNN 用ではない。50 ノードのチェーンは 1 を返す。8k や 40k でも同様で、深さ制限を超えてしまう。120k では sqlite3WalkExprNN 内で ASan スタックオーバーフローが発生する(rc=134)。RCE ではない。

正規のツリーは https://sqlite.org/src にある。GitHub の sqlite/sqlite は Fossil のミラーである。公式 zip は sqlite-src-3530400。パブリックドメインのライブラリ。本パックは AGPLv3。

IDCVE 未割当
分類クラッシュ(sqlite3WalkExprNN 内の ASan スタックオーバーフロー。RCE は実証されていない)
到達範囲ローカル(信頼できない SQL、または仕込まれた VIEW)
CWECWE-674、CWE-770
CVSSHigh: 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
製品SQLite 3.53.4
影響を受けるバージョン3.53.4(b09c88c)。後期トランクの COLLATE 高さチェックの取り残し
認証信頼できない SQL または VIEW。デフォルトの load_extension は無効のまま
ライセンスGNU Affero GPL v3.0
ラボ127.0.0.1:18800 のみ。ASan アマルガメーション。クラッシュ実証。

攻撃者ができること

長い後置 COLLATE BINARY チェーンを SQL として与えるか、信頼できない .db 内の VIEW に仕込む。ホストプロセスはチェーンを辿り、C スタック上で死ぬ。ドキュメント化された式の深さ制限は、この演算子では決して実行されない。

SELECT 1 COLLATE BINARY COLLATE BINARY ... で十分である。CREATE VIEW v AS SELECT 1 COLLATE BINARY ... に続けて、新しい接続で SELECT * FROM v を実行しても同じ形になる。デフォルトの SQLITE_LIMIT_SQL_LENGTH(1e9)は、本ラボで 8 MB のスタックをオーバーフローさせた約 1.8 MB のチェーンを許容する。

これはエンベッダプロセスのクラッシュである。命令ポインタの制御ではない。load_extension は無効のままである。

発見の経緯

OpenLiteSpeed の後、SQLite タグ version-3.53.4 を対象に 20 回のソース探索を行った。最新の GA であり、3.54.0 のドラフトではない。sqlite.org/security.html は信頼できない SQL と信頼できない .db を第一級の脅威として扱っている。デフォルトの load_extension は無効である。

COLLATE に対する parse.y は 3 行である:

expr(A) ::= expr(A) COLLATE ids(C). {
  A = sqlite3ExprAddCollateToken(pParse, A, &C, 1);
}

sqlite3ExprAddCollateToken は pNew->pLeft = pExpr と EP_Collate|EP_Skip を設定します。sqlite3ExprAlloc は nHeight = 1 のままにしました。sqlite3ExprCheckHeight はありません。sqlite3PExpr は他のすべての二項演算子に対してこの両方を行います。

誤った方向性: 8k の COLLATE をクラッシュとみなすこと(1 を返しました); 40k をクラッシュとみなすこと(これも 1 を返し、SQLITE_LIMIT_EXPR_DEPTH の 1000 をはるかに超えていました); sqlite3WalkExprNN で ASan が落ちるまでに 120k を要すること。

これはピン上の 14 個の残りのうち G1 です。兄弟は他の投稿です。

ラボ

cd lab
./run.sh

公式の sqlite-src-3530400 からの ASan アマルガメーション(タグ version-3.53.4 のフォールバッククローン)。sqlite-collate-depth を構成する。127.0.0.1:18800 上のダミー HTTP。ループバックにバインドする。

SUCCESS sqlite-collate-depth how=asan-stack-overflow control=50 crash-n=120000 SQLITE-COLLATE-DEPTH-WITNESS

50 COLLATE は 1 を返します。8k と 40k も 1 を返します。120k は rc=134 で失敗し、sqlite3WalkExprNN 内で ASan のスタックオーバーフローが発生します。ピンチェックは SELECT sqlite_version() / SELECT sqlite_source_id() です。

修正

sqlite3PExpr が既に行っているのと同じように、pLeft をアタッチした後に COLLATE ノードに対して sqlite3ExprCheckHeight を呼び出します。子から nHeight を再計算します。後置演算子も依然として式ツリーです。

トランク 252c0b7bf5 (2026-10-04) はこの GA より後です。

参考資料

  • https://sqlite.org/src タグ version-3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69)
  • https://github.com/sqlite/sqlite (Fossil ミラー) ツリー https://github.com/sqlite/sqlite/tree/version-3.53.4
  • 公式 zip https://www.sqlite.org/2026/sqlite-src-3530400.zip
  • https://sqlite.org/security.html
  • src/parse.y の COLLATE アクション
  • src/expr.c の sqlite3ExprAddCollateToken、sqlite3ExprAlloc (nHeight = 1)、sqlite3PExpr / sqlite3ExprCheckHeight
  • src/walker.c の sqlite3WalkExprNN
  • src/sqliteLimit.h の SQLITE_MAX_EXPR_DEPTH デフォルト 1000
  • CWE-674 制御されない再帰
  • CWE-770 制限やスロットリングなしのリソース割り当て
ツールをダウンロード