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

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

人気

すべて見る →

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

すべてのツールを探索

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

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

Abraxas Labs - sqlite-xfer-auth

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

解説記事: https://abraxaslabs.tech/research/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 はその証拠をコピーします。オーソライザのログは INSERT:dest です。

オーソライザは、エンベッダがインストールしない限り無効です。RCE ではありません。DRH は Fossil d1cdb817 を 3.53 のバグ修正ではなく 3.54 の機能として扱いました。3.54.0 はまだドラフトです。

IDCVE 未割り当て
クラス権限の取り残し (READ 拒否テーブルのコピー)
到達範囲ローカル (エンベッダの 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 を許可するオーソライザがインストールされた状態でのローカル 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 をインストールしたエンベッダが必要です。デフォルトのライブラリではこのコールバックは NULL です。RCE ではありません。

発見の経緯

この GA における他の取り残しと同様、3.53.4 の Crit/High 探索の一環です。オーソライザは 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

アマルガメーション 3.53.4 と lab/xfer_auth.c をビルドする。sqlite-xfer-auth を構成する。127.0.0.1:18850 にバインドする。オラクルはインプロセスオーソライザーからの JSON である: SELECT * FROM src は拒否され、INSERT INTO dest SELECT * FROM src は成功し、dest は SQLITE-XFER-AUTH-WITNESS を持ち、挿入アクションは 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 と同じ方法でソースを認可します。オーソライザーが登録されている場合、xferOptimization は src に対して SELECT/READ の sqlite3AuthCheck を実行する必要があります(または高速パスを拒否して sqlite3Select にフォールスルーする)。それまでの間、テーブルに対する READ を DENY する埋め込み側は、互換性のあるすべての dest への INSERT も DENY するか、-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
ツールをダウンロード