Slapdash Safeguards

にわか仕込みのセキュリティ

CVE-2025-60710の概要

この脆弱性は、マイクロソフトが2025年11月のパッチチューズデーで公開したもので、告知ページはこちらです:
https://msrc.microsoft.com/update-guide/vulnerability/CVE-2025-60710

影響を受けるバージョンは Windows 11 25H2 で、バージョンは 10.0.26200.0 から 10.0.26200.7171 未満 です。

該当するタスクスケジューラのパスは
\Microsoft\Windows\WindowsAI\Recall\PolicyConfigurationです

基本原理

今回の脆弱性は、実は Windows のタスクスケジューラ(taskhostw.exe) に潜んでいます。ポイントとなるのは、\Microsoft\Windows\WindowsAI\Recall\PolicyConfiguration というタスクが動いたときの挙動です。

このタスクが実行されると、taskhostw.exe は

C:\Users%username%\AppData\Local\CoreAIPlatform.00\UKPの中をチェックして、{????????-????-????-????-????????????} という GUID 形式に見えるフォルダを探しにいくんですね。

問題はここから。

なんと taskhostw.exe は、そのフォルダが ショートカットかどうか、そしてそのショートカットがどこを指しているかを一切確認しません。それなのに、NT AUTHORITY\SYSTEM 権限でそのフォルダを削除してしまいます。

つまりどうなるかというと──
特定フォルダの削除を SYSTEM 権限で誘導できる という、かなり危険な状況が生まれてしまうわけです。攻撃者は「特定フォルダへのショートカット」をあらかじめ作っておけば、狙った場所の削除が可能になります。


面白いのが、WindowsWNF(Windows Notification Facility) のイベントが、この Recall PolicyConfiguration タスクを簡単に起動してしまう。

代表的なものを挙げると:

RecallPolicyCheckUpdateTrigger
 WNF State Name:7508BCA32C079E41
 → Recall Policy の設定更新をチェックするイベント

AADStatusChangeTrigger
 WNF State Name:7508BCA32C0F8241
 → Azure AD の状態が変わったときに発火

DisableAIDataAnalysisTrigger
 WNF State Name:7528BCA32C079E41
 → AI データ分析の無効化イベント

UserLoginTrigger
 WNF State Name:7510BCA338038113
 → ユーザーのログインで発火

◆ File Opportunistic Lockとは?

FileOpLock は、Windowsファイルシステムが持つ “非同期通知メカニズム” の一種です。
簡単に言えば、プロセスがファイルやディレクトリに対して “先に場所取って、アクセスされたら通知を受け取る” ための仕組みです。

どういうことかというと──

あるプロセス A が特定のファイル/フォルダにFileOpLockを掛けておくと、別のプロセス(たとえば SYSTEM 権限のプロセス)がそのファイル/フォルダへアクセスしようとした瞬間、

  • Windows カーネルはそのアクセスを一時停止

  • すぐにプロセス A に通知

  • A が登録していた「コールバック関数」が即座に実行される

という流れが起こります。

この “一時停止の隙間” の間に、プロセス A は 好きな操作を挟み込める のが最大のポイントです。

例えば、
フォルダをシンボリックリンクにすり替えるといった操作を A が瞬時に行った後、SYSTEM プロセスは“書き換えられた後のフォルダ” に対して処理を再開します。

つまり FileOpLock は、攻撃者に SYSTEM プロセスのファイル操作へ割り込む権利(タイム・スライス) を与えてしまう仕組みとも言えます。


◆ FileOpLock がなぜ脆弱性利用で使われるのか?

想像してみてください。

もし Windows に “SYSTEM 権限で任意のファイルを削除してしまう脆弱性” があった場合、 削除処理はほぼ一瞬 … ミリ秒単位で終わってしまうので、「その瞬間をどうやって狙うか?」が最大の問題になります。

そこで登場するのが FileOpLock です。

FileOpLock を使うことで、

  • SYSTEM プロセスが対象フォルダへアクセス

  • FileOpLock が割り込み

  • 登録されたコールバックが実行される

  • その瞬間にフォルダやリンクをすり替える

といった “時間差攻撃” が可能になります。

FileOpLock と FileLink は、現代の Windows 権限昇格系エクスプロイトでよく使われる道具です。内部実装はスレッドプールやカーネル処理などかなり複雑ですが、本記事ではそこまで深掘りせず、仕組みを理解して必要なときに使えるようにするというスタンスにします。

実装例はこちらでも確認できます:
https://github.com/ybdt/evasion-hub/tree/master/05-Privilege%20Escalation/CVE-2025-60710-main/CVE-2025-60710


◆ CVE-2025-60710 の利用フロー(ざっくり)

ここからは、実際に FileOpLock を使って今回の脆弱性を利用する流れを説明します。


● ステップ1

C:\Users\%username%\AppData\Local\CoreAIPlatform.00\UKP\
配下に、{????????-????-????-????-????????????} という GUID 形式のフォルダを作成。


● ステップ2

FileOpLock::CreateLock() を使い、そのフォルダに対して Oplock(オポチュニスティックロック)を取得。同時にコールバック関数 cb0 を定義。


● ステップ3

ZwUpdateWnfStateData() を呼び出し、WNF State Name 7508BCA32C079E41 のイベントを発火。これは RecallPolicyCheckUpdateTrigger に対応するイベント。


● ステップ4

SYSTEM プロセスがフォルダの削除を開始しようとするが、 Oplock が掛かっているためカーネルが削除処理を一時停止し、 コールバック cb0 が発動。


● ステップ5

cb0 の中で、フォルダをショートカットにすり替え、攻撃者が削除させたい任意のパスを指すようにする。


● ステップ6

SYSTEM プロセスが処理を再開すると、攻撃者が指定したフォルダが SYSTEM 権限で削除される


参考

https://deepwiki.com/Wh04m1001/CVE-2025-60710
https://deepwiki.com/Wh04m1001/CVE-2025-60710/2-cve-2025-60710:-the-vulnerability

https://deepwiki.com/Wh04m1001/CVE-2025-60710/3-exploitation-techniques
https://deepwiki.com/Wh04m1001/CVE-2025-60710/3.2-msi-rollback-exploitation-(fileorfolderdelete.cpp)