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 をスキップする

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

人気

すべて見る →

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

すべてのツールを探索

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

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

Abraxas Labs - sqlite-collate-depth

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

sqlite-collate-depth

Class: Crash Reach: Local

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 で ASan が sqlite3WalkExprNN 内でスタックオーバーフローする (rc=134)。RCE ではない。

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

IDCVE 未割当
ClassCrash (sqlite3WalkExprNN 内の ASan スタックオーバーフロー、RCE は実証されていない)
ReachLocal (信頼できない 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
ProductSQLite 3.53.4
Affected3.53.4 (b09c88c); 後の trunk の COLLATE 高さチェックの残骸
Auth信頼できない SQL または VIEW; デフォルトの load_extension はオフのまま
LicenseGNU Affero GPL v3.0
Lab127.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 をはるかに超えていた); ASan が sqlite3WalkExprNN で死ぬには 120k が必要だった。

これはピン上の 14 の残骸のうち G1 である。兄弟は他の投稿である。

ラボ

cd lab
./run.sh

公式 sqlite-src-3530400 からの ASan アマルガメーション (タグ version-3.53.4 のフォールバッククローン)。Compose 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()。

修正

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

Trunk 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 制限やスロットリングなしのリソース割り当て
ツールをダウンロード