かつて山市良と呼ばれたおじさんのブログ

セイテクエンジニアのブログ  かつて山市良と呼ばれたおじさんのブログ  ITニュース. CrowdStrike障害に学ぶ、起動できないAzure VMの復旧法

 

 

ITニュース. CrowdStrike障害に学ぶ、起動できないAzure VMの復旧法

2024年07月24日配信
執筆者:山内 和朗

 2024年7月19日、CrowdStrike社のセキュリティソフトを導入しているWindowsが、同社が配信したアップデートの影響で一斉にクラッシュし、再起動とブルースクリーン、回復オプションの表示を繰り返すという問題が発生しました。公共交通機関や金融、通信メディアなど、影響が世界中のこれらのサービス利用者に及んだため、大きなニュースとして取り上げられましたが、Microsoftによるとこの障害の影響を直接受けたWindowsデバイスは、世界中のWindowsデバイスの1%未満(推計)だということです。


 CrowdStrike社は問題を特定し、問題を解消したアップデートを既に提供していますが、影響を受けたデバイスはブルースクリーンと再起動(そして復旧オプションの表示)を繰り返すことになるため、自動的に修復されることはないでしょう。そのため、完全な問題の解消にはしばらく時間がかかると思われます。


 当初、テロやサイバー攻撃の疑いや、同時期に発生したMicrosoft 365のサービスの問題を含めてMicrosoftやWindowsの問題であるかのような報道がされましたが、直接的にはサードパーティのソフトウェアの問題です。デバイスが影響を受けた場合は、以下のCrowdStrikeやMicrosoft、その他、パブリッククラウドベンダーの公開する最新情報やガイダンスに従ってください。というか、影響を受けたところは既に対処を終えているか、対処中のはずです。

Windows ホストに対する Falcon コンテンツ更新に関する声明(CrowdStrike)
CrowdStrike の障害の影響を受けたお客様への支援について(Microsoft News Center)
How do I recover AWS resources that were affected by the CrowdStrike Falcon agent?(AWS re:Post)

 今回の問題はサードパーティのソフトウェアの問題であり、直接的な影響を受けたデバイスは国内では少ないと思われることから、このブログで詳しく取り上げるつもりはありませんでした。しかし、クラウド上の仮想マシン(VM)が正常起動できなくなった場合の復旧方法について知っておくことは、将来同様の問題が発生したときの良い訓練になると思い、記事にしました。

 

WinRE/WinPEは、正常起動しないWindowsのための復旧環境

 

 以前より発生する頻度は少なくなっていますが、Windowsのブルースクリーンエラーは決して珍しいことではありません。各種コンテナー技術(ユニバーサルWindowsプラットフォームや仮想化ベースのセキュリティなど)は、システム(カーネル)とユーザーモードを分離し、ユーザーモードのプログラムがブルースクリーンのような致命的なエラーを引き起こすことを防止します。カーネルモードドライバーについても、署名のないドライバーのインストールをブロックするなど、悪意のあるコードが起動プロセスに読み込まれないようにするなど、セキュリティ機能で保護されています。しかし依然として、セキュリティソフトウェアについては、Windowsのブートの初期段階から保護を提供するため、その一部はカーネルモードドライバーとして実装される必要があり、Windowsの新しいバージョンのリリースや品質更新プログラムとの組み合わせ、あるいはカーネルモードドライバー自身の問題によりブルースクリーンを引き起こすことがまれにあります。セキュリティ保護の結果として、ブルースクリーンでクラッシュすることもあります(不正なメモリアクセスなど不適切なコードの実行をブロックするために意図的にクラッシュさせるなど)。


 再移動やブルースクリーンを繰り返すなど、何らかの理由で正常起動しなくなってしまったWindowsデバイスを復旧するには、このブログでも何度も登場している「Windows回復環境(Windows Recovery Environment≪Windows RE、WinRE≫)」または「Windowsプレインストール環境(Windows Preinstallation Environment≪Winodws PE、WinPE≫)」を使用するのが一般的です(画面1)。※1

 

※1 Microsoftは今回のCrowdStrike問題の復旧オプションとして、WinRE/WinPEのコマンドプロンプトの他に、WinREの「システムの復元」による復旧、「セーフブート」で起動しての復旧、USBから起動できるリカバリツールの提供、およびPXE(Preboot Execution Environment)ブートの方法も案内しています(→Microsoft Community Hub)。


 例えば、障害の原因がWindows Updateの更新プログラムのインストールの場合は、WinREの「更新プログアムのアンインストール」を実行するか、WinRE/WinPEのコマンドプロンプトからDISMコマンドを実行して更新プログラムをアンインストールすることで復旧することができます。今回の問題は、WinRE/WinPEのコマンドプロンプトを使用して、問題のあるCrowdStrikeのカーネルモードドライバーのファイルを「C:¥Windows¥System32¥Drivers¥CrowdStrike」ディレクトリから削除することでした。

 

画面1
画面1 WinRE(画面左)やWinPE(画面右)のコマンドプロンプトを使用すると、CrowdStrikeの障害に限らず、正常起動できないWindowsの復旧をオフラインで試みることができる

 

WinRE/WinPEを使用できないクラウド上のVMの場合は?

 

 クラウド上のVMインスタンスの場合、通常、ローカルコンソールにアクセスする手段は提供されていません(画面2)。そのため、WinRE/WinPEで起動して復旧作業を行うことができません。

 

画面2
画面2 Azure VMの場合、ローカルコンソールへのアクセスは「ブート診断」ツールのスクリーンショットのみ。再起動を繰り返し回復オプションが表示されたとしても、対話する手段はない(画面のブルースクリーンはWindows SysinternalsのNotMyFault《Microsoft》を使用して再現したもの)

 

 Azure上のVM(Azure VM)の場合、WinREやWinPEへのアクセスはサポートされていません。※2 そもそも、Azure MarketplaceのWindowsイメージではWinREが無効になっています。WinREをセットアップしたとしても、そのWinREで再起動しても「ブート診断」ツールでスクリーンショットを見ることしかできず、WinREと対話する方法がありません。Azure VMには対域外のトラブルシューティング環境として「シリアルコンソール」(Windowsゲストの場合は緊急管理サービス≪EMS≫のSACプロンプト)へのアクセスを標準でサポートしていますが、これは第三のOSによる起動ではなく、起動中のOSに対する帯域外アクセスであり※2、WinRE/WinPEの代わりにはなりません。

 

※2 Azure Windows VM の CMD と PowerShell(Microsoft Learn)

 MicrosoftはWinRE/WinPEの代替として、CrowdStrike障害からAzure VMを復旧するためのオプションを複数用意しています。それらは正常起動不能になったAzure VMの復旧にも応用できるものです。


 オプションの1つは、Azure BackupによるVMのバックアップが存在する場合、バックアップからリストアすることです。しかし、このオプションはVMのバックアップが行われていることが大前提ですし、最後のバックアップ以降の変更(データを含む)が失われてしまいます。


 もう1つのオプションは、Azure CLIまたはAzureポータルを使用して、復旧作業用のAzure VMを作成し、問題のVMのOSディスクをアタッチして、復旧作業用のAzure VMで復旧作業を行い、OSディスクをデタッチして、問題のVMのOSディスクと入れ替える(スワップ)する方法です。Azureポータルを使用した、具体的な手順が以下のドキュメントに記されています。

Azure portal を使用して OS ディスクを修復 VM にアタッチして Windows VM のトラブルシューティングを行う(Microsoft Learn)

 CrowdStrikeの問題の影響を受けたAzure VMではない、全く正常はVMですが、この復旧方法を体験してみました。復旧作業用VMを使用して、そのVMのCドライブのルートにファイルを作成してみます。

 

  1. 問題のVMを停止し、OSディスクのスナップショットを作成する。

  2. OSディスクのスナップショットからマネージドディスクを作成する。

  3. スナップショットから作成したマネージドディスクを復旧作業用VMにデータディスクとしてアタッチする(画面3)。
    画面3
    画面3 問題のVMのOSディスクのコピーを復旧用VMのデータディスクとしてアタッチする

  4. 復旧作業用VMで問題のディスクをオフラインで操作し、問題を取り除く(画面4)。(CrowdStrike障害の場合は問題のドライバーファイルの削除。)
    画面4
    画面4 復旧用VMで(問題のVMのゲストが)オフラインの状態で復旧作業を行う。ここでは復旧作業として「C:¥Repair.txt」を作成

  5. 復旧作業用VMを停止し、データディスクを切断する。

  6. 問題のVMのOSディスクを問題を取り除いたマネージドディスクと入れ替える(画面5、画面6)。

     

    画面5
    画面5 問題のVMで「OSディスクのスワップ」を実行し、OSディスクを復旧作業後のものに置き換える

    画面6

    画面6 OSディスクが復旧作業後のものに置き換わった

     

被害を最小限に抑えるための防災訓練はIT環境でも重要

 

 一連の復旧作業は、初めての場合は不安が大きいかもしれません。問題が発生する前に、2台のVMを作成して、体験してみると安心でしょう。言うならば、将来の障害に備えた防災訓練です。OSディスクが暗号化されている場合は、暗号化のロックを解除するための追加の手順も必要になるため、事前に確認しておくことをお勧めします。なお、AWSを利用している場合は、前掲のAWSの復旧手順をご確認ください。

blog_subscribe

blog_comment

最新記事