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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ツール/GitHubGitHub/ashu7ank/cve-2026-92392
防御ツール脆弱性スキャナーコンテナセキュリティ動的分析 (サンドボックス)脆弱性分析情報収集セキュリティ仮想化ファジング
GitHubashu7ank/cve-2026-92392

CVE-2026-92392

ローカルの curl/libcurl ビルドについて、CVE-2026-92392 の HTTP/2 アップロードにおける use-after-free 脆弱性への露出を検査します。パッシブなインベントリ、マウント済みイメージのスキャン、および範囲を限定したループバック PoC プローブを備えています。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2026-92392 curl/libcurl 露出チェッカーおよびPOC

cve_2026_92392_check.py は、ローカルの curl および libcurl アーティファクトについて CVE-2026-92392(curl/libcurl における HTTP/2 アップロードの use-after-free)への露出を評価します。

これは、パッシブなローカルインベントリ、提供されたバナーによる評価、非実行の マウントイメージスキャン、および境界付きのループバック HTTP/2 プロトコルプローブをサポートします。 プローブは防御的かつ非兵器化されています。コマンドペイロード、シェルコード、 メモリアドレス操作、情報漏洩ロジック、RCE ペイロードは含まれていません。

アクティブプローブは 127.0.0.1 にのみバインドし、リモートのターゲット URL や ホストを受け付けず、選択されたローカルの curl バイナリのみを実行します。

このチェッカーが確立するもの

チェッカーは4つの異なる証拠レベルを区別します:

証拠レベル確立するもの確立しないもの
ビルド分類バージョンで特定された curl/libcurl アーティファクトが上流の影響範囲外にあるか、上流で影響を受けるがベンダーのパッチ状態が不明か、提供されたパッチ状態の証拠を用いて影響が確認されているかアプリケーションが実際に影響を受ける HTTP/2 アップロード経路を使用しているかどうか
ランタイム露出コンテキスト提供されたアプリケーションの事実が、HTTP/2 アップロードが攻撃者制御のエンドポイントに到達し得ることを示すかどうか脆弱性が実際にトリガーされたかどうか
プロトコル刺激ローカルループバックハーネスが、1つの HTTP/2 接続上で2回のアップロードを伴う、文書化された両方のリセットバリアントを配信したかどうかuse-after-free、クラッシュの原因、またはコード実行
CVE に帰属するサニタイザー結果候補シーケンス、AddressSanitizer のヒープ use-after-free、上流で影響を受けるアーティファクトの同一性、および一致する HTTP/2 スタックがすべて観測されたかどうか別のシステムにおける信頼性または実用的な悪用可能性

クリーンな実行、不完全なプロトコル実行、またはクラッシュしないサニタイザー実行は、 ビルドが安全であることを証明するものではありません。

脆弱性の概要

CVE-2026-92392 は curl/libcurl の HTTP/2 アップロード処理に影響します。アップロード中、 影響を受けるビルドは REFUSED_STREAM または HTTP_1_1_REQUIRED のいずれかを運ぶ HTTP/2 RST_STREAM を処理する可能性があります。その後、元の転送の HTTP/2 状態が 切り離された後に、バッファされたアップロードデータが新しいリクエストとして 解析される可能性があります。その後の HTTP/2 コールバックが、古い Curl_easy ポインタを 参照する可能性があります。

このチェッカーを改訂するために使用された REA 比較により、関連するクリーンアップの 順序の違いが確認されました:

  1. 影響を受けるアーティファクトは Curl_conn_ev_data_done を呼び出し、保留中の ハンドルを処理し、その後にのみ Curl_req_done を呼び出します。
  2. Curl_req_done は req_flush に到達しますが、HTTP/2 の data-done 経路は すでにストリームコンテキストをクリアしています。
  3. 残りのバッファされたアップロードデータは、同じ生の easy-handle ポインタに 関連付けられた、後続の HTTP/2 ストリームを作成する可能性があります。
  4. 修正された実装は Curl_conn_ev_data_done の前に Curl_req_done を実行し、 その古い順序を排除しています。

これはチェッカーの証明モデルを裏付ける実装上の証拠です。ベンダーの パッチ状態については、依然として独立した検証が必要です。

影響を受ける上流リリース

上流のアドバイザリは、脆弱な実装が curl 8.12.0 で導入されたと特定しています。 チェッカーは上流リリースを次のように分類します:

リリース条件分類
8.12.0 より前NOT AFFECTED
8.12.0 から 8.22.0 まで(修正済みバックポートを除く)上流で影響あり
8.14 ブランチの 8.14.3 以降修正済みバックポート
8.16 ブランチの 8.16.2 以降修正済みバックポート
8.20 ブランチの 8.20.2 以降修正済みバックポート
8.23.0 以降NOT AFFECTED
開発版、スナップショット、ナイトリービルド、または曖昧なバージョンINDETERMINATE

ベンダーは curl の上流バージョン文字列を変更せずに修正をバックポートできます。 したがって、影響を受ける上流バージョンはインベントリの証拠であり、ベンダービルドが 未パッチであることの決定的な証明ではありません。

--patch-state は、下流のセマンティック修正状態がベンダーのアドバイザリ、パッケージの 変更履歴、ソース比較、またはその他の信頼できるアーティファクトレベルの方法によって 検証されている場合にのみ使用してください。

--patch-state の値意味
unknownデフォルト。影響を受ける上流バージョンは UPSTREAM-AFFECTED VERSION を生成します。
absentオペレーターが下流の修正が存在しないことを独自に検証済み。HTTP/2 対応の影響を受けるビルドは AFFECTED BUILD を生成します。
presentオペレーターが下流のセマンティック修正が存在することを独自に検証済み。これはオペレーターによる主張であり、curl の上流修正とのバイナリ等価性を自動的に証明するものではありません。

要件

  • Python 3.10 以降。
  • 標準ライブラリ以外の Python 依存関係は不要。
  • --poc 用のローカル curl 実行ファイル。
  • 意味のあるアクティブプロービングには、確認済みの HTTP/2 サポート。
  • --poc-proof asan 用の AddressSanitizer 計装済み curl ビルド。
  • --tls を使用する場合のみ openssl コマンド。
  • アクティブプロービング用の、製品として識別可能なネイティブ ELF または Mach-O curl 実行ファイル。

アクティブ PoC モードは、スクリプト、ラッパー、正体不明のネイティブ実行ファイル、および PE/Windows バイナリを拒否します。パッシブ評価はバナーおよびマウントされたファイルシステムに対して引き続き利用可能です。

クイックスタート

PATH 内で見つかった curl バイナリを検査します:

python3 cve_2026_92392_check.py

JSON形式で出力します:

{
  "name": "example",
  "version": "1.0.0",
  "description": "サンプル設定",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}
python3 cve_2026_92392_check.py --json

内部セルフテストを実行します:

python3 cve_2026_92392_check.py --self-test
python3 -O cve_2026_92392_check.py --self-test

選択した curl 実行ファイルと libcurl 共有ライブラリを検査します:

python3 cve_2026_92392_check.py \
  --curl-binary /opt/curl/bin/curl \
  --libcurl-path /opt/curl/lib/libcurl.so \
  --json

信頼できる curl バナーをバイナリを実行せずに評価する:

python3 cve_2026_92392_check.py \
  --version-string 'curl 8.12.0 libcurl/8.12.0 nghttp2/1.61.0' \
  --json

8.12.0 のようなベアバージョンは、検証済みの curl/libcurl の識別情報としての証拠にはなりません。

リモートインベントリのワークフロー

チェッカーは意図的にリモートホストへ接続しません。認可された管理チャネルを通じてバナーを取得し、ローカルに保存してから、ローカルで評価してください:

ssh [email protected] 'curl --version' > host-curl-version.txt

python3 cve_2026_92392_check.py \
  --version-file host-curl-version.txt \
  --http2-use unknown \
  --untrusted-upload unknown \
  --https-certificate unknown \
  --json

アプリケーションレビューまたは信頼できるトレースによって、アップロードがHTTP/2を使用し、攻撃者が制御するエンドポイントに到達でき、そのHTTPS証明書を受け入れることが確認された場合は、それらの事実を明示的に提供してください:

python3 cve_2026_92392_check.py \
  --version-file host-curl-version.txt \
  --http2-use yes \
  --untrusted-upload yes \
  --https-certificate yes \
  --patch-state unknown \
  --json

クリアテキストの h2c には --https-certificate not-applicable を使用します。

--http2-use yes は実行時の HTTP/2 使用を識別します。これは、その 成果物が HTTP/2 サポート付きでコンパイルされたことを証明するものではありません。同様に、--untrusted-upload yes はアプリケーションのデータフローを記述し、--https-certificate yes は 別個の HTTPS 信頼条件を記録します。

マウント済みイメージの評価

--root を使用すると、検出されたファイルを実行せずに、マウントされたコンテナイメージ、VM イメージ、または展開された ファイルシステムをスキャンできます:

python3 cve_2026_92392_check.py \
  --root /mnt/rootfs \
  --json

ルートスキャン:

  • スキャン対象としてファイルシステムのルートを拒否する。
  • 検出されたバイナリを実行しない。
  • 名前付きの curl、curl.exe、libcurl アーティファクトのみを検査する。
  • 名前変更された curl バイナリや静的に埋め込まれた libcurl は評価しない。
  • 文字列からバージョンや HTTP/2 の手がかりを復元できるが、文字列のみの証拠は INDETERMINATE のままとなる場合がある。

判定と露出モデル

ビルド判定は 2 つの条件によって決定される:

前提条件意味
P1影響を受ける上流範囲内の検証済み curl/libcurl の識別情報とバージョン。ただし検証済みの下流パッチ状態に従う
P2評価対象アーティファクトにコンパイルされた HTTP/2 サポート

実行時の露出は別途評価される:

前提条件意味
P3評価対象のアップロードが実際に HTTP/2 をネゴシエートする
P4アプリケーションが攻撃者制御の HTTP/2 エンドポイントへアップロードできる
P5HTTPS 使用時に HTTPS 証明書が受け入れられる
P6アーキテクチャ、libc、TLS 割り当て動作、CA バンドルなど、エクスプロイト固有の環境詳細
P7アップロードサイズ、並行性、ペイロードウィンドウ、タイミングなど、エクスプロイト側の段取り

P1 と P2 がビルドの適用可否を決定する。P3 と P4 は、潜在的に影響を受ける使用が特定されるかどうかを決定する。P5 から P7 はリモートエクスプロイトの条件に影響するが、HTTP/2 の use-after-free が存在するかどうかには影響しない。

判定意味
NOT AFFECTEDバージョンが上流の影響範囲外であるか、修正済みバックポートが特定されたか、HTTP/2 が権威的に存在しない。
UPSTREAM-AFFECTED VERSIONHTTP/2 サポートを備えた影響を受ける上流バージョンが特定されたが、下流のパッチ状態は不明。
AFFECTED BUILD影響を受ける上流バージョンと HTTP/2 サポートが特定され、独立して検証された証拠として --patch-state absent が指定された。
INDETERMINATE製品の識別情報、バージョン、HTTP/2 サポート、またはリリース状態を確立できなかった。

ループバックプロトコルプローブ

デフォルトのアクティブプローブは、127.0.0.1 にバインドされたサーバーに対して 2 つの合成アップロードを実行する。これは文書化された両方のリセットバリアントを送信する:

  • REFUSED_STREAM
  • HTTP_1_1_REQUIRED

各バリアントについて、ハーネスはアップロードの停止を待ち、部分的なレスポンスを送信し、RST_STREAM を送信し、ストリームレベルの証拠を記録する。プロトコルの証明は、両方のリセットバリアントが送信され、各バリアントについて 1 つの接続上で 2 つのアップロードストリームが観測された場合にのみ満たされる。

python3 cve_2026_92392_check.py \
  --curl-binary /path/to/curl \
  --poc \
  --poc-proof protocol \
  --json

STIMULUS REPRODUCED という結果は、境界付けられたプロトコル条件が観測されたことを意味します。これは use-after-free、クラッシュの因果関係、CVE の帰属、またはコード実行を証明するものではありません。

デフォルトでは、選択されたアーティファクトが上流で影響を受ける HTTP/2 対応の curl ビルドとして識別されない場合、PoC モードはスキップされます。--force は、ローカルのネガティブコントロールに対して無害なループバックハーネスを実行することを許可しますが、ネイティブフォーマットや製品識別の検証をバイパスするものではありません。

python3 cve_2026_92392_check.py \
  --curl-binary /path/to/known-fixed-curl \
  --poc \
  --force \
  --json

AddressSanitizer モード

AddressSanitizer モードは、無害なリクエスト風のマーカーを含む、ローカルで生成された合成アップロードを使用します。これはクリーンアップ経路の候補プローブであり、公開されているエクスプロイトの形状をコピーしたものではありません。

python3 cve_2026_92392_check.py \
  --curl-binary /path/to/asan/curl \
  --poc \
  --poc-proof asan \
  --json

チェッカーが CVE-2026-92392 REPRODUCED を報告するのは、以下のすべてが真である場合のみです:

  1. 候補のループバックシーケンスが配信された。
  2. AddressSanitizer が heap-use-after-free を報告した。
  3. 選択されたアーティファクトが、上流で影響を受ける HTTP/2 対応の curl ビルドであると識別された。
  4. シンボル化されたサニタイザースタックが、curl が開示した HTTP/2 コールバックパス(on_begin_headers および HTTP/2 コンテキストを含む)と一致した。
ツールをダウンロード