MicrosoftのBrokering File Systemの脆弱性によりローカル権限昇格が可能に

Microsoftは、Brokering File System(BFS)ドライバーに存在する重大なuse-after-free脆弱性に対処しました。この脆弱性により、攻撃者がWindows システム上で権限を昇格できる可能性があります。

CVE-2025-29970として追跡されているこのセキュリティ上の欠陥は、bfs.sysコンポーネントに影響し、HT3Labsのセキュリティ研究者によって発見されました。

脆弱性の概要

Brokering File Systemは、約2年前にWindowsのWin32 App Isolation機能とともに導入されたミニフィルタードライバーで、分離されたアプリケーションのI/O操作を管理します。

BFSは特に、サンドボックス化されたアプリケーションからのファイルアクセスを処理するため、重要なセキュリティ境界となります。

この脆弱性は、ドライバー内のポリシーエントリのクリーンアップ中における不適切なメモリ管理に起因します。

Image
脆弱性の概要

欠陥はBfsCloseStorage関数にあり、DirectoryBlockListの連結リストが誤って解放されます。

クリーンアップ中、連結リストの先頭は最初の反復の終わりで解放されます。しかし、関数は追加のエントリを処理する後続の反復で、この解放済みメモリを参照し続けます。

これにより、システムクラッシュや権限昇格につながる可能性のある典型的なuse-after-free 状態が発生します。

BfsProcessDeletePolicyRequestのIOCTL呼び出しによってポリシーが削除されると、システムは関連するPolicyEntryオブジェクトとそのメンバーを解放します。

脆弱性はStorageObjectのクリーンアップ段階で発生し、BfsCloseStorage内の解放ループがDirectoryBlockList構造を不適切に扱います。

この関数は連結リストの最初のエントリを取得し、整合性チェックを実行し、ノードのリンクを解除し、付随するDirectoryBlockBufferとノード自体を解放し、さらに単一の反復内でリストの先頭も解放します。

この誤ったロジックにより、連結リストに複数のエントリが含まれている場合、先頭が早期に解放され、後続の反復で解放済みメモリにアクセスすることになります。

メモリの解放と再利用の間の時間的猶予が非常に短いため、悪用は困難です。しかし、ローカルアクセスと適切なトークンを持つ攻撃者であれば、この脆弱性をトリガーできる可能性があります。

CVE-2025-29970を悪用するには、攻撃者はいくつかの条件を満たす必要があります。まず、BFSのIOCTL呼び出しを可能にする特定のトークンを含むハンドルが必要で、通常はPixieSecurityが報告 しているように、AppSiloトークンを持つ適切なプロセスを偽装することで取得します。

削除要求の時点でPolicyTable内にPolicyEntryオブジェクトが存在している必要があり、これらのエントリには、複数のエントリを含むDirectoryBlockListを備えたStorageObjectが付随していなければなりません。

CVE-2025-29970は、ポインタの使用が限定的で機会の窓が狭いことから悪用が難しい一方で、Windowsのサンドボックス機構における継続的なセキュリティ懸念を浮き彫りにしています。

MicrosoftがAppContainerおよびAppSilo技術を通じてアプリケーション分離機能を拡充するにつれ、BFSのようなドライバーは権限昇格攻撃の標的としてますます魅力的になっています。

セキュリティ研究者は、組織がBrokering File Systemにおける本件および類似の脆弱性から保護するため、最新のWindowsセキュリティ更新プログラムを速やかに適用することを推奨しています。

翻訳元: https://gbhackers.com/microsoft-brokering-file-system-vulnerability/

ソース: gbhackers.com