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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
sqlite-xfer-auth — SQLite 3.53.4 - 高 - ローカル - 権限の残留 - INSERT SELECT xfer がソース READ をスキップ | Kitploit
ツール/GitHubGitHub/abraxas/sqlite-xfer-auth
脆弱性分析コード分析エクスプロイトセキュリティ仮想化論文と研究データベースセキュリティラボと実践
GitHubabraxas/sqlite-xfer-auth

sqlite-xfer-auth

SQLite 3.53.4 - 高 - ローカル - 権限の残留 - INSERT SELECT xfer がソース READ をスキップ

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

人気

すべて見る →

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

すべてのツールを探索

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

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

Abraxas Labs - sqlite-xfer-auth

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

sqlite-xfer-auth

分類: 権限の取りこぼし 到達範囲: ローカル

SQLite 3.53.4 (b09c88c, SOURCE_ID 2026-07-24 19:02:57 bf7c7f30031888f4e796e429ab3978879485813aaca6f641c7b33e4e09459bcc) は、INSERT INTO dest SELECT * FROM src に対して依然として xferOptimization の高速パスを取る。sqlite3AuthCheck は dest に対する SQLITE_INSERT のみである。このコピーは src に対して sqlite3Select も列単位の sqlite3AuthRead も呼び出さない。SELECT * FROM src は拒否される。INSERT SELECT は witness をコピーする。authorizer ログは INSERT:dest である。

authorizer は、embedder がインストールしない限りオフである。RCE ではない。DRH は Fossil d1cdb817 を 3.53 のバグ修正ではなく 3.54 の機能として扱った。3.54.0 はまだドラフトである。

IDCVE 未割当
分類権限の取りこぼし (READ 拒否テーブルのコピー)
到達範囲ローカル (embedder の sqlite3_set_authorizer)
CWECWE-863
CVSSHigh: 7.5 CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
製品SQLite (Hwaci)
影響を受けるバージョン3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69)
認証src に対する READ/SELECT を拒否し dest への INSERT を許可する、インストール済み authorizer に対するローカル SQL
ライセンスGNU Affero GPL v3.0
ラボ127.0.0.1:18850 のみ

攻撃者ができること

dest がスキーマ互換で INSERT が許可されている場合に、INSERT INTO dest SELECT * FROM src を準備する。生の B-tree レコードが READ 拒否されたソーステーブルを離れ、dest に着地する。素の SELECT * FROM src は SQLITE_AUTH となる。xfer パスは SELECT をコンパイルしないため、ソースの SQLITE_SELECT、テーブルレベルの SQLITE_READ、および列単位の sqlite3AuthRead は決して発火しない。

信頼できない SQL / 列 ACL ゲートとして sqlite3_set_authorizer をインストールした embedder が必要である。デフォルトのライブラリではこのコールバックは NULL である。RCE ではない。

発見の経緯

この GA における他の取りこぼしと同じ 3.53.4 の Crit/High ハントである。authorizer は sqlite3_set_authorizer に文書化されている。INSERT の認証は dest テーブルのみである (insert.c:969)。xfer は sqlite3Select() より前に取られる (insert.c:1020-1038)。xferOptimization はレコードをコピーする。このピンでの insert.c の grep: sqlite3AuthCheck が 1 つ、sqlite3AuthRead はなし。SQLITE_OMIT_XFER_OPT はデフォルトのビルドフラグではない。

フォーラム 2026-05-21T03:31:22Z。トランク d1cdb817cafd03a4 は 3.54 専用である。DRH: 新機能であり、branch-3.53 には入れない。

ラボ

cd lab
./run.sh

amalgamation 3.53.4 と lab/xfer_auth.c をビルドする。Compose sqlite-xfer-auth。127.0.0.1:18850 にバインドする。オラクルはインプロセス authorizer からの JSON である: SELECT * FROM src は拒否; INSERT INTO dest SELECT * FROM src は ok; dest は SQLITE-XFER-AUTH-WITNESS を持つ; insert アクションは INSERT:dest のみである。

SUCCESS sqlite-xfer-auth how=xfer-opt-skip-src-read select-src=denied insert-select=ok dest-has-witness=yes SQLITE-XFER-AUTH-WITNESS

修正

3.54 d1cdb817 が行うようにソースを認可する: authorizer が登録されている場合、xferOptimization は src に対して SELECT/READ を sqlite3AuthCheck しなければならない (または高速パスを拒否して sqlite3Select にフォールスルーする)。それまでは、あるテーブルに対する READ を拒否する embedder は、互換性のある dest への INSERT も拒否するか、-DSQLITE_OMIT_XFER_OPT でコンパイルしなければならない。

参考文献

  • sqlite.org/src タグ version-3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69)
  • src/insert.c sqlite3AuthCheck INSERT dest、sqlite3Select より前の xferOptimization
  • フォーラム 2026-05-21T03:31:22Z · チェックイン d1cdb817cafd03a4
  • sqlite3_set_authorizer
ツールをダウンロード