この脆弱性は、マイクロソフトが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 権限で誘導できる という、かなり危険な状況が生まれてしまうわけです。攻撃者は「特定フォルダへのショートカット」をあらかじめ作っておけば、狙った場所の削除が可能になります。
面白いのが、Windows の WNF(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 権限のプロセス)がそのファイル/フォルダへアクセスしようとした瞬間、
という流れが起こります。
この “一時停止の隙間” の間に、プロセス 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)