2024年1月10日、2024年最初のセキュリティ更新プログラムがリリースされました。Windows 11 バージョン22H2/23H2以外を利用しているユーザーの中には、その日の更新プログラムの一つがエラー「0x80070643」で失敗を繰り返すことに悩んだ人もいるでしょう。この更新プログラムは、「Windows回復環境」の脆弱性問題を解決するセキュリティ更新プログラムです。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
以下の連載で説明したように、「Windows 11 バージョン22H2」以降のWindows 11では、「Windows回復環境(Windows Recovery Environment《WinRE》)」の脆弱(ぜいじゃく)性問題を解決するために、「品質更新プログラム」(毎月の累積更新プログラム)によって必要に応じてWinREが更新されるようになりました。
WinREの更新では、一時ディレクトリ(C:\$WinREAgent)でパッチを適用した更新済みの「WinREイメージ」(winre.wim)で回復パーティションのイメージが置き換えられるため、パッチによってイメージサイズが大きくなり、回復パーティションの空き領域が不足すると、更新に失敗します。上記の連載では、その失敗がサイレントに無視(ログには残ります)されることを指摘しました。
上記のWinREの脆弱性は、「BitLockerのセキュリティ機能のバイパスの脆弱性(CVE-2022-41099)」という最大深刻度「重要」のものですが、悪用の確認「なし」、脆弱性評価「悪用される可能性は低い」となっていました。
筆者が把握している限り、このWinREの更新は他のバージョンのWindowsにも「2023年11月のセキュリティ更新プログラム」に含まれる形で提供されました。そして、Windows 11 バージョン22H2/23H2の「2024年1月のOSの品質更新プログラム」には、「BitLockerのセキュリティ機能のバイパスの脆弱性(CVE-2024-20666)」(https://msrc.microsoft.com/update-guide/vulnerability/CVE-2024-20666)のWinREの更新が含まれます。
2024年最初の定例更新日である1月10日(日本時間)、「Windows 11 バージョン21H2」「Windows 10 バージョン21H2/22H2」「Windows Server 2022」向けに、WinREのセキュリティ更新プログラムが個別に提供されました。このセキュリティ更新プログラムは「BitLockerのセキュリティ機能のバイパスの脆弱性(CVE-2024-20666)」に対処するもので、脆弱性の評価はCVE-2022-41099と変わりません。また、「Windows Server 2016」や「Windows Server 2019」については、「2024年1月のOSの品質更新プログラム」にWinREの更新を伴わないCVE-2024-20666対応の修正が含まれているようです。
前述のように、品質更新プログラムに含まれるWinREの更新は、回復パーティションのサイズが不足している場合、更新されずに脆弱性は放置されます。それでも、悪用の事実がない現在、脆弱性が放置されても重大な影響はないと思われます。
しかし、個別に提供されたWinREのセキュリティ更新プログラムは、回復パーティションのサイズが不足していると、エラー「0x80070643」でインストールに失敗し、その結果が更新の履歴に残ってしまうのです(画面1、画面2)。エラーを解消しない限り、永遠に失敗を繰り返すのかどうかまでは分かりませんが、対策しないまま、この次のWindows Updateを実施したところ、同じエラーで失敗しました。
このエラーを回避する方法は、“回復パーティションに十分な空き領域を確保する”ことです。それには、OSドライブ(C:)を縮小して空き領域を確保し、回復パーティションを再作成して、WinREを再セットアップする必要があります。
その手順は、以下のドキュメントで説明されていますが、パーティション操作を誤ると重大な結果を招くため、ここで再度説明しておきましょう。操作に自信がない場合は、更新プログラムのKB番号を控えておき、(Microsoftが別の方法を用意しない限り)同じエラーを無視し続けてください。繰り返しますが、現時点でこの脆弱性の悪用の事実はなく、悪用される可能性も低いものです。
まず、WinREの更新エラーの理由が“ディスクの容量不足”であることを確認します。「C:\Windows\Logs\WinREAgent」ディレクトリを開き、ログファイル「setupact.log」と「setuperr.log」を調べ、ディスク容量不足が原因であること(Failed to stage WinRE servicing operation due to insufficient disk space in WinRE partition)と足りない容量(winre size [xxx], target WinRE size [yyy]の場合、yyy-xxxバイト)を調べます(画面3)。
操作手順は、UEFI(Unified Extensible Firmware Interface)ベースのシステムとBIOS(Basic Input/Output System)ベースのシステムでは異なるので注意してください。まず、「ファイル名を指定して実行」([Windows]+[R]キーで起動)から「msinfo32」を実行し、「BIOSモード:UEFI」(UEFIベース)か「BIOSモード:レガシ」(BIOSベース)かどうかを調べます。
次に、「コマンドプロンプト」(cmd.exe)を管理者として開き操作します。パーティションは「DISKPART」コマンドで操作しますが、管理ツール「ディスクの管理」スナップイン(Diskmgmt.msc)の表示と見比べながら、正しいパーティションを慎重に識別してください。
UEFIベースのシステムの場合は、管理者として開いたコマンドプロンプトで以下のように操作します。この例は、OSディスク番号が「0」、OSパーティション(C:ドライブ)番号が「3」、回復パーティション番号が「4」の場合(対象のディスク番号と回復パーティション番号は「reagentc /info」の実行結果から判断できます)で、回復パーティションのサイズを50MB増やす場合の例になります。
reagentc /info reagentc /disable DISKPART DISKPART> LIST DISK DISKPART> SELECT DISK 0 DISKPART> LIST PARTITION DISKPART> SELECT PARTITION 3 DISKPART> SHRINK DESIRED=50 MINIMUM=50 DISKPART> SELECT PARTITION 4 DISKPART> DELETE PARTITION OVERRIDE DISKPART> CREATE PARTITION PRIMARY DISKPART> FORMAT QUICK FS=NTFS LABEL="WinRE" DISKPART> set id=de94bba4-06d1-4d40-a16a-bfd50179d6ac DISKPART> gpt attributes=0x8000000000000001 DISKPART> LIST PARTITION DISKPART> EXIT reagentc /enable reagentc /info
BIOSベースのシステムの場合は、管理者として開いたコマンドプロンプトで以下のように操作します。この例は、OSディスク番号が「0」、OSパーティション(C:ドライブ)番号が「2」、回復パーティション番号が「3」の場合(対象のディスク番号と回復パーティション番号は「reagentc /info」の実行結果から判断できます)で、回復パーティションのサイズを50MB増やす場合の例になります。
reagentc /info reagentc /disable DISKPART DISKPART> LIST DISK DISKPART> SELECT DISK 0 DISKPART> LIST PARTITION DISKPART> SELECT PARTITION 2 DISKPART> SHRINK DESIRED=50 MINIMUM=50 DISKPART> SELECT PARTITION 3 DISKPART> DELETE PARTITION OVERRIDE DISKPART> CREATE PARTITION PRIMARY DISKPART> FORMAT QUICK FS=NTFS LABEL="WinRE" DISKPART> set id=27 DISKPART> LIST PARTITION DISKPART> EXIT reagentc /enable reagentc /info
回復パーティションのサイズを拡張したら、Windows Updateを再実行して、WinREの更新プログラムのインストールに成功することを確認します(画面4)。
筆者が確認した限り、WinREを無効にしているシステム(「reagentc /disable」コマンドで無効化、Microsoft Azure上のWindows Serverは既定でWinREが無効)にも提供され、その場合、WinREが利用可能でないという理由(Error……WinRE is not available)でインストール失敗を繰り返します。
また、Windows Server 2022の「Server Core」インストール(日本語版および英語版で確認)では、回復パーティションに余裕がある場合でも、WinREの更新プログラムのインストールが失敗するという問題を確認しています(「setupact.log」と「setuperr.log」に“[WinREUpdInst] Failed to add DISM package by path[gle=0x0000007a]”エラーが記録されます)。
こちらは、おそらくServer Coreインストール固有の問題と思われます。Microsoftによって解決策が示されるまで(更新プログラムの撤回や新しい更新プログラムの提供など)エラーは無視するしかなさそうです。
Microsoftは、CVE-2024-20666の脆弱性に対処するまた別のPowerShellサンプルスクリプトを2024年1月9日(米国時間)に公開しています。このスクリプトが今回の更新エラーを回避する目的で提供されたというニュースもありますが、公開日からすると、CVE-2024-20666の脆弱性にマニュアルでパッチするサンプルを示すものであり、(回復パーティションのサイズの拡張は行われないため)今回の更新エラーを解決するものではありませんし、WinREが無効な場合の更新エラー(WinREの更新は不要)やServer Coreでの更新エラーを解決できるものではありません。
本稿公開時点でこの既知の問題(https://learn.microsoft.com/en-us/windows/release-health/status-windows-10-22h2#3231msgdesc)のステータスは「確認済み(Confirmed)」であって、「解決済み(Resolved)」にはなっていません。Microsoftは現在、この問題の解決に向けて取り組んでおり、今後のリリースで更新プログラムを提供するとしています。
岩手県花巻市在住。Microsoft MVP 2008 to 2024(Cloud and Datacenter Management)。SIer、IT出版社、中堅企業のシステム管理者を経て、フリーのテクニカルライターに。Microsoft製品、テクノロジーを中心に、IT雑誌、Webサイトへの記事の寄稿、ドキュメント作成、事例取材などを手掛ける。個人ブログは『山市良のえぬなんとかわーるど』。近著は『Windows版Docker&Windowsコンテナーテクノロジ入門』(日経BP社)、『ITプロフェッショナル向けWindowsトラブル解決 コマンド&テクニック集』(日経BP社)。
Copyright © ITmedia, Inc. All Rights Reserved.