Windows WalletServiceの欠陥によりローカル攻撃者がSYSTEM権限を取得可能に

Windows WalletServiceで新たに公表されたローカル権限昇格の脆弱性(CVE-2026-49176として追跡)により、標準ユーザーがサービスのファイルパス解決およびデータベースコールバック処理方法を悪用することで、NT AUTHORITY\SYSTEMへ権限を昇格できることが判明しました。

Microsoftはこの欠陥を「重要」と評価しており、CVSS 3.1スコアは7.8で、CWE-269(不適切な権限管理)およびCWE-59(ファイルアクセス前のリンク解決不備)に分類されています。

WalletServiceは公開APIであるWindows.ApplicationModel.Wallet WinRT APIを支えており、標準ユーザーであれば誰でもWalletManager.RequestStoreAsync()を通じてアクセス可能です。

David Carliez氏によれば、このサービスは呼び出し元になりすましてFOLDERID_Documentsのパスを解決した後、LocalSystemに権限を戻してから、Extensible Storage Engine(ESE)の永続化コールバックを有効にした状態で\Wallet\サブフォルダ内のwallet.dbを開きます。

ユーザーはSHSetKnownFolderPathを使って自分自身のDocumentsフォルダを自由にリダイレクトできるため、攻撃者は以下のことが可能になります。

その後、ペイロードは自身がWinLocalSystemSidとして実行されていることを確認し、短命のWindowsサービスを起動してクリーンなSYSTEMトークンを取得します。そのトークンを複製し、WTSGetActiveConsoleSessionIdによってアクティブなコンソールセッションに再ターゲットした上で、CreateProcessAsUserWcmd.exeを起動し、目に見える対話型のSYSTEMシェルを生成します。

根本原因は信頼境界の侵害です。WalletServiceは呼び出し元が制御可能なID情報(リダイレクトされたDocumentsパス)を使ってファイルシステム上の場所を選択した後、そこに実際に格納されているものを検証する前に特権コンテキストへ戻ってしまいます。

Microsoftの修正は社内でFeature_Servicing_WalletServiceRedirectionGuardとして追跡されており、WalletDatabaseESE::Open内の脆弱なESEオープン処理と、関連するレガシーなフォルダ制限・クリーンアップ機能をゲートしています。

パッチ適用済みビルド(26200.8875以降)は依然として空のWalletディレクトリを作成しますが、攻撃者のデータベースを開くことはなく、コールバックを解決することもなく、悪意のあるDLLを読み込むこともありません。

防御側は、Wallet関連の動作の直前に非管理者プロセスがユーザーごとのDocumentsの既知フォルダマッピングを変更していないか、WalletServiceがホストするsvchost.exeがユーザー書き込み可能なプロファイルパスからDLLを読み込んでいないかを監視すべきです。

また、SYSTEMプロセスがユーザープロファイル内のバイナリを指す短命なサービスを作成・即座に削除していないか、トークンのセッション変更に続いてwinsta0\default上でcmd.exeが起動されていないか、そしてサービスの正規の初回利用より前の日付を持つWalletデータベースが存在しないかにも注意が必要です。

組織は、特にローカルアクセスが日常的に発生する共有環境や複数ユーザーが利用するWindows 11エンドポイントを中心に、WalletServiceが有効なシステムへのパッチ適用を優先すべきです。

SOC調査の死角を削減し、ANY.RUNで脅威を早期に封じ込めることで、対応コストと業務への支障を軽減しましょう。

翻訳元: https://cyberpress.org/windows-walletservice-flaw/

ソース: cyberpress.org