Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-42978-PoC-Research — CVE-2026-42978 — Windows Push Notifications (WpnService)におけるUse-After-Freeの競合状態。パッチ差分、根本原因分析、TOCTOUラボ、Sysmon/ETW検出ルール。 | Kitploit
ツール/GitHubGitHub/grizzzer/cve-2026-42978-poc-research
脆弱性分析エクスプロイトフォレンジックバイナリ解析学習と教育インシデントレスポンスラボと実践
GitHubgrizzzer/cve-2026-42978-poc-research

CVE-2026-42978-PoC-Research

CVE-2026-42978 — Windows Push Notifications (WpnService)におけるUse-After-Freeの競合状態。パッチ差分、根本原因分析、TOCTOUラボ、Sysmon/ETW検出ルール。

リポジトリを見る
28722ヶ月前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2026-42978 PoC & Research — Windows プッシュ通知の Use-After-Free

Windows プッシュ通知サービス (WpnService) における競合状態。このサービスは NT AUTHORITY\SYSTEM として実行されます。ローカルアクセスを持つ攻撃者は、プラットフォームのシャットダウン中に解放後使用 (use-after-free) を引き起こし、特権を昇格させる可能性があります。

  • CVE: CVE-2026-42978
  • BDU: BDU:2026-08249
  • 種類: CWE-362 (競合状態)、Use-After-Free
  • CVSS: 7.8 (High)
  • 影響を受けるバージョン: Windows 10、Windows 11、Windows Server 2016/2019/2022/2025
  • パッチ適用日: 2026年6月10日 (パッチチューズデー)
  • ステータス: 修正済み。このリポジトリは防御研究のみを目的としています。

動作の仕組み

WpnService は Windows プッシュ通知サービスです。セッション 0 で LocalSystem として svchost.exe -k netsvcs -p 内で実行されます。すべての通知配信 (トースト、タイル、バッジなど) はこのサービスを経由します。

脆弱性は wpncore.dll 内、特に クラスに存在します。このクラスはすべての通知 API 呼び出し (トースト配信、セッション管理、設定クエリなど) をラップし、 に委譲します。

PresentationEndpointFacade
PresentationEndpointImpl

バグ: プラットフォームシャットダウン中に、NotificationPlatform オブジェクトが破棄されます。しかし Facade メソッドはシャットダウンが進行中かどうかをチェックしません。プラットフォームへのポインタを取得し、そのプラットフォームがシャットダウンスレッドによって解放され、Facade がダングリングポインタを使用します。古典的な解放後使用 (use-after-free) の競合状態です。

脆弱なコード (wpncore.dll ビルド 26100.8521 から逆コンパイル)

root@kitploit:~
// PresentationEndpointFacade::ToastUnblockAll — VULNERABLE
long ToastUnblockAll(PresentationEndpointFacade *this) {
    // No lock. No shutdown check. Just grab the platform pointer and go.
    NotificationPlatformHandle::Get(this + 0x50);
    if (platform == NULL) Throw_Hr(...);
    // If shutdown frees the platform right here — use-after-free
    return PresentationEndpointImpl::UnblockToastsForEachApp(...);
}

脆弱な ToastUnblockAll の Ghidra 逆アセンブリ
Ghidra: 脆弱な ToastUnblockAll — プラットフォームアクセス前の同期がない

パッチ適用後のコード (wpncore.dll ビルド 26100.8655)

root@kitploit:~
// PresentationEndpointFacade::ToastUnblockAll — PATCHED
long ToastUnblockAll(PresentationEndpointFacade *this) {
    if (Feature_4097557817::IsEnabled()) {
        AcquireSRWLockShared(&Wns::s_platformLock);    // 1. shared lock
        if (Wns::s_platformShutdown)                    // 2. shutdown guard
            Throw_Hr(E_APPLICATION_EXITING);
        NotificationPlatformHandle::Get(this + 0x50);
        // ... do work ...
        ReleaseSRWLockShared(&Wns::s_platformLock);     // 3. RAII release
    } else {
        // feature flag off — old behavior preserved for rollback
    }
}

修正では以下の3つが追加されています:

  1. AcquireSRWLockShared — 共有リーダーライターロック。複数の API 呼び出しを同時実行できますが、シャットダウンは排他ロックを取得してすべてをブロックします。
  2. s_platformShutdown チェック — シャットダウンがすでに開始されている場合は、即座に E_APPLICATION_EXITING で終了します。
  3. RAII ロック解放 — ロックは wil::unique_storage ラッパーで保持されるため、例外がスローされても解放されます。

機能フラグ Feature_4097557817 は WIL (Windows Internal Library) による段階的なロールアウトのためのものです。これにより Microsoft は修正を段階的に有効にし、何か問題が発生した場合に無効にすることができます。

修正の規模

これは一つの関数だけのバグではありません。同じロック+ガードパターンが wpncore.dll の 49 個の関数 に追加されました:

カテゴリ関数
トースト操作ToastUnblockAll, ToastCreateSession, ToastCloseSession, ToastRequestAllNotifications, ToastSuppress
タイル操作TileCreateSession, TileCloseSession, TileRequestResourceForeground
登録RegisterApplication, UnregisterApplication, RegisterHandler, UpdateRegistration, RegisterSystemApplication
設定ChangeAppSetting, QueryAppSetting, QueryGlobalSetting, RegisterSettingCallback, UnregisterSettingCallback
配信Deliver, GetPayloadForNotificationId, Submit, PostScheduledNotification
クエリGetRegisteredHandler, GetRegisteredHandlersFromParent, GetSettingsFromHandler, GetAssetsFromHandler

プラットフォームにアクセスするすべての PresentationEndpointFacade::* メソッドに同じ修正が適用されました。下位の PresentationEndpointImpl::* メソッドは変更されていません — 問題は Facade 層のみにありました。

影響

WpnService は SYSTEM として実行されます。競合に勝利した場合:

  1. 解放された NotificationPlatform オブジェクトのメモリが再利用され、攻撃者制御のデータで埋められる可能性があります (ヒープスプレー)
  2. 続いてダングリングポインタに対する仮想メソッド呼び出しが攻撃者制御のアドレスにジャンプします
  3. NT AUTHORITY\SYSTEM としてのコード実行

実際の悪用 (ヒープスプレー、vtable ハイジャック、コード実行の達成) はこの研究の範囲外です。このリポジトリは 根本原因の理解 と 検出の構築 に焦点を当てています。

TOCTOU 競合状態ラボ

lab/ ディレクトリには、WpnService に触れることなくバグのクラスを再現するスタンドアロンの C デモが含まれています。WpnService と同様の名前付きパイプと共有メモリアーキテクチャを使用しています。

動作の仕組み:

  • vulnerable_service.exe は共有メモリからメッセージ長を読み取り、検証し、50ms スリープした後、再度 長さを読み取ります (ダブルフェッチ)。
  • race_attacker.exe は安全な長さを設定し、サービスをトリガーした後、即座に共有メモリをオーバーフロー値に書き換えます。
  • タイミングが合えば、サービスは2回目のフェッチでオーバーフロー値を読み取り、バッファオーバーフローが発生します。

vulnerable_service.exe --patched を実行すると修正が確認できます: ローカル変数へのシングルフェッチキャプチャ。

TOCTOU 競合状態デモ
左: サービスが競合を検出 (5/5)。右: 攻撃者が共有メモリ値を書き換え。

ビルドと実行

GCC (MinGW) が必要です。lab/ ディレクトリから:

root@kitploit:~
build.bat

ターミナル 1:

root@kitploit:~
vulnerable_service.exe

ターミナル 2:

root@kitploit:~
race_attacker.exe 5

その後、vulnerable_service.exe --patched と比較してください — 同じ攻撃でも、競合は0検出されます。

検出

ETW モニター (detection/etw_wpn_monitor.ps1)

7つの指標をチェックする PowerShell スクリプト:

  1. WpnService の状態と PID
  2. クラッシュ/再起動履歴 (悪用に失敗するとクラッシュ痕跡が残ります)
  3. プッシュ通知プラットフォームのイベントログバースト検出
  4. WPN 関連の名前付きパイプ
  5. パッチ検証 (wpncore.dll の日付を確認)
  6. WPN モジュールが読み込まれているプロセス
  7. 通知データパスのシンボリックリンク/ジャンクション監査
root@kitploit:~
powershell -ExecutionPolicy Bypass .\detection\etw_wpn_monitor.ps1

ETW モニター出力
ETW モニター: WpnService 実行中 (PID 6432)、クラッシュなし、100 イベント/時間、システムはパッチ適用済み

Sysmon ルール (detection/sysmon_wpn_race_detect.xml)

継続的な監視のための6つのルールグループ:

ルールキャッチする内容
WPN_EoP_ChildProcesssvchost (netsvcs) が cmd/powershell/wscript を生成
WPN_PipeAccessWPN 関連の名前付きパイプへの接続
WPN_FileCreation通知データディレクトリでのファイル作成
WPN_RegistryTamperingPushNotifications キーへのレジストリ書き込み
WPN_ProcessAccesssvchost への PROCESS_ALL_ACCESS ハンドル
WPN_ThreadInjectionsvchost への CreateRemoteThread

インストール:

root@kitploit:~
sysmon64.exe -accepteula -i detection\sysmon_wpn_race_detect.xml

イベントビューアー

WpnService のアクティビティは Microsoft-Windows-PushNotifications-Platform/Operational に記録されます。注目すべき主要なイベント:

  • イベント 1225: トランスポートレベルの WPN コマンド
  • 高速イベントバースト (>20/分) — 競合スプレーの可能性
  • エラー/重大イベント — 悪用失敗によるクラッシュの可能性

イベントビューアー WPN イベント
イベントビューアー: PushNotifications-Platform 操作ログ、イベント ID 1225

パッチ差分解析

wpncore.dll の差分解析からの主な発見:

  • .text セクションが 18,432 バイト 増加 (49 関数にわたる新しいロック/ガードコード)
  • .data セクションが 96 バイト 増加 (新しい Wns::s_platformLock および Wns::s_platformShutdown グローバル変数)
  • 新しいインポートは追加されていません — AcquireSRWLockShared/ReleaseSRWLockShared は既にインポートテーブルに存在していました
  • 新しい RAII デストラクタ: ~unique_any_t<...ReleaseSRWLockExclusive...> によりロックラッパーの追加が確認されました

完全なレポートは reports/ にあります。

関連 CVE

CVE-2026-42978 は、2026年6月に修正された9つの WPN 関連脆弱性のクラスターの一部です:

CVE種類CWE
CVE-2026-42977EoP競合状態
CVE-2026-42978EoP競合状態
CVE-2026-42979EoP競合状態
CVE-2026-42991EoP競合状態
CVE-2026-42969情報漏洩競合状態
CVE-2026-42970情報漏洩競合状態
CVE-2026-42973情報漏洩競合状態
CVE-2026-26167EoP—
CVE-2026-32160EoP—

プロジェクト構成

root@kitploit:~
CVE-2026-42978/
├── README.md
├── lab/
│   ├── vulnerable_service.c    # ダブルフェッチバグを持つモック WpnService
│   ├── race_attacker.c         # ダブルフェッチを悪用する攻撃者プログラム
│   └── build.bat               # GCC ビルドスクリプト
├── detection/
│   ├── etw_wpn_monitor.ps1     # 7つのチェックを行う PowerShell 検出器
│   └── sysmon_wpn_race_detect.xml  # Sysmon ルール設定
├── reports/
│   ├── PE_DIFF_REPORT.txt      # PE セクション/インポート差分結果
│   └── FUNCTION_DIFF_REPORT.txt # 関数レベルの差分 (49 個変更)
└── img/                        # このREADME用のスクリーンショット

必要条件

  • Windows 10/11 (ラボおよび検出ツールの実行用)
  • GCC / MinGW (C ラボのビルド用)
  • Python 3.9+ (差分スクリプト用)
  • Ghidra 11+ (ヘッドレス逆コンパイル用、オプション)
  • Sysmon (検出ルール用、オプション)

免責事項

このプロジェクトは 防御的なセキュリティ研究 を目的としています。脆弱性は修正済みです。武器化されたエクスプロイトコードは含まれていません。TOCTOU ラボはスタンドアロンのモックサービス上でバグのクラスをデモンストレーションするものであり、WpnService やシステムコンポーネントとは相互作用しません。

お使いの Windows が最新であることを確認してください。etw_wpn_monitor.ps1 がシステムを未パッチと報告した場合は、直ちに 2026 年 6 月の累積更新プログラムをインストールしてください。

貢献

追加したいものがあれば (より良い検出ルール、エクスプロイトの概念実証、Ghidra Version Tracking セッション、YARA シグネチャ、またはこのクラスターの関連 CVE の分析など)、PR を歓迎します。

貢献のアイデア:

  • 検出の SIEM 側の Sigma ルール
  • CVE-2026-42977/42979/42991 (同じ WPN 競合ファミリ) の詳細分析
  • WinDbg ベースの解放後使用のヒープ分析
  • リアルタイム ALPC バースト検出機能を備えた改良版 ETW モニター
  • Windows Defender ASR ルールの推奨

質問がある場合や研究について議論したい場合は、Issue を開いてください。

ライセンス

MIT

ツールをダウンロード