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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
sqlite-cte-nest — SQLite 3.53.4 - 高 - ローカル - クラッシュ - ネストされたCTEがnNestSelビュー深度上限をスキップする | Kitploit
ツール/GitHubGitHub/abraxas/sqlite-cte-nest
静的分析脆弱性分析エクスプロイトファジング論文と研究データベースセキュリティ
GitHubabraxas/sqlite-cte-nest

sqlite-cte-nest

SQLite 3.53.4 - 高 - ローカル - クラッシュ - ネストされたCTEがnNestSelビュー深度上限をスキップする

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

人気

すべて見る →

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

すべてのツールを探索

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

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

Abraxas Labs - sqlite-cte-nest

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

sqlite-cte-nest

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

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

sqlite3ResultSetOfSelect は nNestSel をインクリメントし、チェーンが SQLITE_LIMIT_EXPR_DEPTH に達すると VIEWs and/or subqueries nested too deep エラーを返す。このピンではネストされた VIEW はすでにその上限に達している。select.c:5754 (sqlite3SrcItemAttachSubquery) での CTE アタッチは nNestSel をインクリメントしない。その後 selectExpander / sqlite3WalkSelect が CTE チェーンを再帰し、C スタックが破壊される。

小さな CTE チェーンは行を返す。N=25000 のネストされた FROM はパーサーの Recursion limit となりクラッシュしない。.limit expr_depth 20 でのネストされた VIEW は too-deep エラーとなる。CTE N=25000 は ASan スタックオーバーフローとなる。RCE ではない。

IDCVE 未割当
分類クラッシュ (selectExpander における ASan スタックオーバーフロー。RCE は実証されていない)
到達範囲ローカル (信頼できない SQL またはネストされた CTE スキーマ)
CWECWE-674
CVSSHigh: 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
製品SQLite (GitHub ミラー sqlite/sqlite)
影響バージョン3.53.4 (b09c88c); 後のトランク CTE nNestSel の残存
認証信頼できない SQL または仕込まれた WITH チェーン
ライセンスGNU Affero GPL v3.0
ラボ127.0.0.1:18810 のみ。ASan アマルガメーション。クラッシュ実証。

攻撃者ができること

信頼できない .db 上で、SQL として、または VIEW 本体として長い CTE チェーンを投入する:

WITH c0 AS (SELECT 1),
     c1 AS (SELECT * FROM c0),
     ...
     cN AS (SELECT * FROM cN-1)
SELECT * FROM cN;

selectExpander は各 CTE をネストされた FROM サブクエリとして走査する。nNestSel は決して動かない。ホストプロセスは C スタック上で死ぬ。ネストされた VIEW はすでに上限が設けられている。ネストされた FROM はパーサーの再帰制限に達する。この残存が CTE アタッチ経路である。SQLite は CTE 名をシェルに評価しない。クラッシュであり、RCE ではない。

発見の経緯

https://github.com/sqlite/sqlite タグ https://github.com/sqlite/sqlite/releases/tag/version-3.53.4 の 20 回のソース探索。このピン (3f3fb9b638 / branch-3.53 38430aa5ed, 2026-06-16) ではネストされた VIEW には上限が設けられていた。CTE アタッチには設けられていなかった。トランク f547308713 (2026-10-05) はこの GA より後である。

すでに記録済みの誤った道: ネストされた VIEW をクラッシュとみなすこと (それらは too-deep エラーとなる); ネストされた FROM N=25000 をクラッシュとみなすこと (パーサーの Recursion limit); 5-CTE チェーンを上限が適用される証拠とすること。

ラボ

cd lab
./run.sh

公式 sqlite-src-3530400 zip、ASan アマルガメーション、compose sqlite-cte-nest、公開 127.0.0.1:18810。ループバックにバインドすること。他人の SQLite にこれを向けないこと。

SUCCESS sqlite-cte-nest how=asan-stack-overflow crash-n=25000 small-cte=ok nested-views=too-deep nested-from=rejected SQLITE-CTE-NEST-WITNESS

修正

sqlite3ResultSetOfSelect が VIEW に対してすでに行っているように、CTE アタッチ時に nNestSel をインクリメントし、SQLITE_LIMIT_EXPR_DEPTH でエラーを返す。トランク f547308713 (2026-10-05, "Limit the depth of recursion for CTEs using SQLITE_LIMIT_EXPR_DEPTH") がその種のパッチである。これは 3.53.4 には含まれていない。

参考文献

  • https://github.com/sqlite/sqlite タグ https://github.com/sqlite/sqlite/releases/tag/version-3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69)
  • 正規 https://sqlite.org/src SOURCE_ID 2026-07-24 19:02:57 bf7c7f30031888f4e796e429ab3978879485813aaca6f641c7b33e4e09459bcc
  • src/select.c sqlite3ResultSetOfSelect (nNestSel++), CTE アタッチ :5754
  • src/walker.c sqlite3WalkSelectFrom サブクエリ走査
  • selectExpander / sqlite3SelectExpand
  • フォーラムバグ 2026-10-04T04:58:58Z; トランク f547308713
ツールをダウンロード