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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-97798-exploit — CVE-2026-97798 Windows Error Reporting - SYSTEM権限へのコマンドインジェクション | Kitploit
ツール/GitHubGitHub/g4sp4rcs/cve-2026-97798-exploit
特権昇格脆弱性分析エクスプロイトポストエクスプロイトレッドチーミングペイロード開発
GitHubg4sp4rcs/cve-2026-97798-exploit

CVE-2026-97798-exploit

CVE-2026-97798 Windows Error Reporting - SYSTEM権限へのコマンドインジェクション

リポジトリを見る
4257日前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2026-97798 — Windows Error Reportingの引数インジェクションによるSYSTEM権限昇格

[!WARNING] このリポジトリは、許可された脆弱性研究および管理されたラボ環境での検証を目的としています。この概念実証(PoC)は、互換性のあるfaultrep.dll!SpawnDataCollector実装を正確に1つ特定できない場合、フェイルクローズ(安全側に倒れて失敗)します。

CVE-2026-97798は、Windows Error Reporting(WER)のTime Travel Debuggingパスにおけるローカル権限昇格の脆弱性です。非特権の呼び出し元が、WERの特権境界を越えて攻撃者が制御するコマンドライン構文を保持できてしまいます。昇格したコレクターはその後、その入力を引数の境界を保持せずにTTTracer.exeのコマンドラインへ連結します。そのため、注入された-outおよび-launchスイッチはTTDレコーダーによってレコーダーオプションとして解釈され、攻撃者が選択した実行ファイルをコレクターの昇格トークンで起動できるようになります。

含まれる単一ファイルのPoCは、このプリミティブをインタラクティブなNT AUTHORITY\SYSTEMシェルへと変換します。これは標準ユーザーアカウント、および中整合性レベルでUACフィルタリングされた管理者アカウントの両方から検証済みです。

インタラクティブなSYSTEMシェル

動画

リポジトリの内容

パス説明
src/CVE-2026-97798.cpp完全な単一イメージのエクスプロイトソース
bin/CVE-2026-97798.exe再現可能なx64ラボビルド
build.ps1決定論的なLLVM-MinGWビルドスクリプト
assets/system-shell.png分離VMから取得したwhoamiの証拠

レポートPDFはまだ含まれていません。長編の論文は現在編集中です。

根本原因

脆弱なフローは複数のコンポーネントをまたいでいます:

low/medium-integrity process
  -> faultrep.dll!CElevatedDataCollection::ControlTimeTravelDebugging
  -> faultrep.dll!SpawnDataCollector
  -> Windows Error Reporting service (elevated collector)
  -> CDataCollection::ControlTimeTravelDebugging
  -> TtdControl::LaunchRecordingProcess
  -> TTTracer.exe / TTDRecord.dll command-line parser
  -> attacker-controlled -launch target

リクエストには、正規の実行ファイルで始まりながら追加の TTD スイッチを付加した Process 値が含まれています。脆弱な実装では、弱い完全一致のブロックリストを適用した後、プロセス文字列を特権レコーダーのコマンドラインに直接フォーマットします。プロセス値が単一の引数としてシリアライズされないため、TTTracer が結果を解析する際にその空白が引数の区切り文字となります。

概念的には、注入される部分は次のとおりです:

Process=CVE-2026-97798-payload.exe
  -out ..\..\Users\Public\Documents\CVE97798\trace
  -launch ..\..\Users\Public\Documents\CVE97798\CVE-2026-97798-payload.exe
  --payload;

相対パスは意図的なものです。WER はこのデータを .ttdconfig のパス名にも組み込んでおり、絶対ドライブプレフィックスはコロンを持ち込んで ERROR_INVALID_NAME で失敗します。トラバーサル形式のパスは、制御された公開ディレクトリに正規化しつつ、このパーサーの競合を回避します。

これは引数インジェクションの問題(CWE-88)であり、従来のシェルコマンドインジェクションではありません。脆弱なシンクにおいて cmd.exe /c は不要です。TTTracer 自体が注入されたスイッチを解釈します。

単一ファイル PoC の設計

通常の使用では CVE-2026-97798.exe のみが必要です。同じ PE イメージが、いくつかの内部モードで自身を再エントリします。

  1. ロードされた PE64 例外テーブルを解析し、WER コレクターのオペコードとプロトコル不変条件を含む一意の関数から faultrep.dll!SpawnDataCollector を動的に解決します。ビルド固有の RVA は埋め込まれていません。
  2. 統合されたコンソールクライアントを起動し、プルーフ状態を作成します。
  3. WER の昇格コレクターを取得し、細工された TTD リクエストを送信します。
  4. TTTracer が同じイメージをペイロードモードで起動します。
  5. ペイロードは名前付きパイプを通じて実際の cmd.exe を公開し、可視のユーザーセッションコンソールがセッション 0 で作成されたシェルと対話できるようにします。

配布される成果物は 1 つの EXE のままです。実行時には、同じイメージの 2 つのエイリアスをステージングします。1 つは統合コンソール用、もう 1 つは昇格ペイロード用です。ペイロードのエイリアスは TTTracer の -onlaunch ターゲットとしても使用されるため、レコーダーは実際に起動したプロセスを監視し、その短いペイロード段階が終了すると終了します。PoC は各トリガーの前と、ペイロード成功後の再度に、古い TTD 状態をリセットします。これにより、中断された実行が次の実行を HRESULT 0x80070032 で失敗させることを防ぎます。

標準ユーザーの場合、昇格コレクターのパスは SYSTEM に直接到達します。UAC フィルター済み管理者の場合、WER はまずリンクされた高管理者トークンでペイロードを起動します。アカウント名は変わりませんが、TokenIsElevated=true になります。その後 PoC は同じイメージを SYSTEM として再エントリします。最初に直接 SYSTEM トークンのプロセス作成を試み、フォールバックとして短命のタスクスケジューラエントリを使用します。フォールバックタスクは起動直後に削除されます。

検証済み環境

コンポーネント検証済みの値
OSWindows 11 24H2 x64、ビルド 26100.9550
脆弱な faultrep.dll10.0.26100.9549
修正済み比較対象faultrep.dll 10.0.26100.9711
TTTracer / TTDRecord1.11.580.0
動的リゾルバチェック9549: RVA 0x4CEB0、9711: RVA 0x4E40C
PoC SHA-256C7B8FAFB132D69E9BD5A398AE183107155129C7080A87D56EFE55572450B4147

リゾルバは x64 例外テーブルを走査し、コレクターのラージフレーム設定、リクエストオペコード 0xD0000002、メッセージサイズ 0x578、待機タイムアウト 10000、および期待される 3 つの待機/サービスエラーマッピングを持つ関数を 1 つ要求します。これは提供された両方の faultrep.dll ビルドに対してチェックされ、無関係な PE イメージに対してネガティブテストされました。ビルド番号や RVA は保存されません。将来のビルドがその実装を十分に変更し、マッチが曖昧または不完全になった場合、PoC は間接呼び出しを行う前に停止します。

使用方法

脆弱なビルドの使い捨てスナップショットを使用してください。非昇格の PowerShell またはコマンドプロンプトから:

.\bin\CVE-2026-97798.exe

成功すると、統合コンソールに次のように出力されます:

[CVE-2026-97798] Exploit shell token:
nt authority\system

機械可読な証明は以下のとおり記述されています:

C:\Users\Public\Documents\CVE97798\system-proof.txt

リゾルバは、脆弱性をトリガーせずにオフラインの x64 DLL に対してテストすることもできます:

.\bin\CVE-2026-97798.exe --resolve C:\path\to\faultrep.dll

インストール済みのシステム DLL を、脆弱なパスをトリガーせずにプリフライトするには、次のようにします:

.\bin\CVE-2026-97798.exe --preflight

フィルタリングされた管理者の検証が成功すると、次のようになりました:

cve=CVE-2026-97798
user=NT AUTHORITY\SYSTEM
is_system=true
is_elevated=true
payload_session=0
shell_session=0
spawn_error=0

ビルド

x64 版の LLVM-MinGW ツールチェーンをインストールし、x86_64-w64-mingw32-clang++.exe を PATH に配置するか、その絶対パスを明示的に指定してください:

.\build.ps1

# or
.\build.ps1 -Compiler C:\toolchains\llvm-mingw\bin\x86_64-w64-mingw32-clang++.exe

ビルドは静的であり、PEリンカーのタイムスタンプを抑制するため、同一のソースとツールチェーンの入力からは同じ実行ファイルハッシュが生成されます。

クリーンアップ

まずPoCコンソールを閉じてください。昇格したラボ用コンソールから、TTDの状態がまだアクティブな場合:

Stop-Process -Name TTTracer,TTDInject -Force -ErrorAction SilentlyContinue
C:\Windows\System32\TTTracer.exe -cleanup
Remove-Item -Recurse -Force C:\Users\Public\Documents\CVE97798

使い捨て VM のスナップショットを元に戻すことが、推奨される最終的なクリーンアップです。

検出と修復

有用なテレメトリには、WER からの予期しない TTTracer.exe の実行、繰り返しまたは異常な -onlaunch、-out、-launch スイッチを含むコマンドライン、ユーザーが書き込み可能なディレクトリから起動されたレコーダーの子プロセスなどが含まれます。TTTracer 単体でアラートを出すのではなく、WER のアクティビティ、TTTracer のコマンドライン、作成者の PID、トークンの昇格、ファイルハッシュを相互に関連付けてください。

faultrep.dll バージョン 10.0.26100.9711 以降の置き換え更新プログラムを含む Microsoft の更新プログラムをインストールしてください。修正された実装では、信頼できないデータがレコーダーに到達する前に、レガシー TTD 要求パスが無効化されます。

参考資料

  • Microsoft Security Response Center — CVE-2026-97798
  • Microsoft Learn — Time Travel Debugging command-line utility
  • MITRE CWE-88 — Argument Injection
ツールをダウンロード