nmtysh.log

Tech系のネタや日々の独り言などを書いています。

Windows 11 HomeでWinREの脆弱性対処スクリプトを実行した時のメモ

下記の脆弱性に対応するPowerShellスクリプトが公開されたので実行してみました。
Homeエディションだからなのか、スクリプトの途中でエラーが発生しました。

Microsoftが「Windows回復環境」(WinRE)の脆弱性に対処するスクリプトを公開 - 窓の杜
KB5025175: CVE-2022-41099 のセキュリティの脆弱性に対処するために、展開されたデバイスの WinRE パーティションを更新する - Microsoft サポート
KB5025175: Updating the WinRE partition on deployed devices to address security vulnerabilities in CVE-2022-41099 - Microsoft Support

環境

  • OS
  • バージョン
    • 22H2
  • エディション
    • Home
  • ビルド
    • 22621.1413

手順

Homeエディションだからなのか、スクリプトの途中でエラーが発生しました。

  1. サイト から "PatchWinREScript_2004plus.ps1" をコピペして保存します。
    • インデントが消えている状態でベタ貼りされているので、取得しづらい……
    • ファイルとして公開して欲しい……
  2. Windows Update カタログ からパッチをダウンロードします。
    • 1のファイルと同じフォルダに保存します。
    • 私の環境では "2023-02 Dynamic Update for Windows 11 Version 22H2 for x64-based Systems (KB5023527)" を保存しました。
  3. ターミナルを管理者モードで起動します。
  4. コマンドを実行します。

     .\PatchWinREScript_2004plus.ps1 -packagePath "windows11.0-kb5023527-x64_076cd9782ebb8aed56ad5d99c07201035d92e66a.cab"
    
  5. 手元の環境では途中でpsファイルのエラーが発生したので、残りの処理を手動で実行しました。

     reagentc /disable
     reagentc /enable
     reagentc /info
    

実行ログ

PS C:\Users\user\Downloads> .\PatchWinREScript_2004plus.ps1 -packagePath "windows11.0-kb5023527-x64_076cd9782ebb8aed56ad5d99c07201035d92e66a.cab"
03/21/2023 18:11:40 - No input for mount directory
03/21/2023 18:11:40 - Use default path from temporary directory
03/21/2023 18:11:40 - Working Dir: C:\Users\user\AppData\Local\Temp\
03/21/2023 18:11:40 - MountDir: C:\Users\user\AppData\Local\Temp\CA551926-299B-27A55276EC22_Mount
03/21/2023 18:11:40 - Create mount directory C:\Users\user\AppData\Local\Temp\CA551926-299B-27A55276EC22_Mount

    Directory: C:\Users\user\AppData\Local\Temp

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d----          2023/03/21    18:11                CA551926-299B-27A55276EC22_Mount
03/21/2023 18:11:40 - Set ACL for mount directory
処理ファイル: C:\Users\user\AppData\Local\Temp\CA551926-299B-27A55276EC22_Mount
1 個のファイルが正常に処理されました。0 個のファイルを処理できませんでした
処理ファイル: C:\Users\user\AppData\Local\Temp\CA551926-299B-27A55276EC22_Mount
1 個のファイルが正常に処理されました。0 個のファイルを処理できませんでした
処理ファイル: C:\Users\user\AppData\Local\Temp\CA551926-299B-27A55276EC22_Mount
1 個のファイルが正常に処理されました。0 個のファイルを処理できませんでした
03/21/2023 18:11:40 - Mount WinRE:
REAGENTC.EXE: 操作は成功しました。

03/21/2023 18:12:24 - TargetFile: C:\Users\user\AppData\Local\Temp\CA551926-299B-27A55276EC22_Mount\Windows\System32\bootmenuux.dll
03/21/2023 18:12:24 - Target file version: 10.0.22621.317
03/21/2023 18:12:24 - Windows 11, version 22H2
03/21/2023 18:12:24 - Apply package:windows11.0-kb5023527-x64_076cd9782ebb8aed56ad5d99c07201035d92e66a.cab
03/21/2023 18:12:38 - Successfully applied the package
03/21/2023 18:12:38 - Cleanup image
03/21/2023 18:12:42 - Cleanup image succeed
03/21/2023 18:12:42 - TargetFile: C:\Users\user\AppData\Local\Temp\CA551926-299B-27A55276EC22_Mount\Windows\System32\bootmenuux.dll
03/21/2023 18:12:42 - Target file version: 10.0.22621.815
03/21/2023 18:12:42 - Windows 11, version 22H2
03/21/2023 18:12:42 - Windows 11, version 22H2 with revision 815 >= 815, updates have been applied
03/21/2023 18:12:42 - After patch, find expected version for target file
03/21/2023 18:12:42 - Patch succeed, unmount to commit change

展開イメージのサービスと管理ツール
バージョン: 10.0.22621.1

イメージを保存しています
[==========================100.0%==========================]
イメージのマウントを解除しています
[==========================100.0%==========================]
操作は正常に完了しました。
03/21/2023 18:13:24 - Checking BitLocker status
InvalidOperation: C:\Users\user\Downloads\PatchWinREScript_2004plus.ps1:44
Line |
  44 |      switch ($BitLocker.GetProtectionStatus().protectionStatus) {
     |              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     | Method invocation failed because
     | [Deserialized.System.Management.ManagementObject#Root\cimv2\Security\MicrosoftVolumeEncryption\Win32_EncryptableVolume] does not contain a method named 'GetProtectionStatus'.
03/21/2023 18:13:26 - Bitlocker isn’t enabled on the OS
この操作を正しく終了しました。
03/21/2023 18:13:26 - Delete mount direcotry

BitLockerが有効の環境ですがメソッドが存在しないというエラーが発生しました。
BitLocker周りの確認処理でエラーが出るので後続処理を手動で実行しました。

PS C:\Users\user\Downloads> reagentc /disable
REAGENTC.EXE: 操作は成功しました。

PS C:\Users\user\Downloads> reagentc /enable
REAGENTC.EXE: 操作は成功しました。

PS C:\Users\user\Downloads> reagentc /info
Windows 回復環境 (Windows RE) およびシステム リセット構成
情報:

    Windows RE の状態:         Enabled
    Windows RE の場所:         \\?\GLOBALROOT\device\harddisk0\partition4\Recovery\WindowsRE
    ブート構成データ (BCD) ID: ********-****-****-****-************
    回復イメージの場所:
    回復イメージ インデックス: 0
    カスタム イメージの場所:
    カスタム イメージ インデックス: 0

REAGENTC.EXE: 操作は成功しました。

ドキュメントを見るとGetProtectionStatus()やGetKeyProtectors()は存在しているのに手元の環境だと does not contain a method named になったので、環境によってはダメなのかもしれないです。
手動で残りを実行しましたが、果たして大丈夫だったのか不安になります……

2023/03/22 追記
Windows 10 Pro 22H2の環境でも同じくBitLocker周りでスクリプトがエラーになりました。PowerShell 7を使っているから?
Win10の環境では Get-WmiObject でエラーになりました。どうやら Get-CimInstance に置き換わったらしい。
( Get-CimInstance に書き換えてもWin11で実行した時と同様の箇所でエラーになりました……)

参考