
Microsoft HoloLens Device Portalのサービス拒否エクスプロイト。繰り返しのAPIペアリングリクエストにより、CPU過負荷とシステムの応答不能を引き起こします。
Tânia Silva、António Pinto、Pedro Pinto、Sara Paiva
サービス拒否(DoS)攻撃は、標的システムに過負荷をかけ、送信されたすべてのリクエストに徐々に応答できなくなるようにすることを目的としています。これにより、正規ユーザーはサービスへのアクセスを失うことになり、アプリケーションの分野によっては、そのプロセスにとって極めて重要になる可能性があります。この問題に対して、我々は複合現実(MR)体験を提供するHoloLensヘッドセットを分析しました。HoloLens 1および2は、HoloLens上のコンテンツと機能をリモートで管理・操作するためのフレームワークを提供します。このツールは図1.1に示すように「Device Portal」と呼ばれ、ヘッドマウントデバイスに保存されているアプリケーション、ドキュメント、マルチメディアコンテンツを管理できます。また、このツールは、デバイス上でのユーザーのアクティビティのリアルタイム表示や、即時の録画・スクリーンキャプチャも可能にします。さらに、システムコンポーネントの監視と、その時点でシステム上で実行中のプロセスの管理も可能にします。
図1.1:HoloLens Device Portal
図1.2に、実行された攻撃のアーキテクチャを示します。攻撃を実行するには、悪意のある人物が標的と同じネットワークに接続されている必要があります。この接続により、攻撃者はセキュリティスキャナを使用してネットワーク全体を分析し、ネットワーク上で利用可能なデバイスを特定できます。
ネットワークに接続された任意のデバイスは、ブラウザに該当するHoloLensのIPを入力するだけで「Device Portal」にアクセスできます。スキャナから収集した情報に基づき、攻撃者はIPを特定し、そのIPを使用してリモート管理サービスへのアクセスを試みることができます。「Device Portal」で操作が実行された際のネットワークトラフィックを分析することで、攻撃者はデバイスのAPIに対して行われたリクエストを入手できます。この情報を用いて、攻撃者はこれらのAPIリクエストを連続的に実行するスクリプトを開発できます。これらのリクエストをすべて受信するとCPUが過負荷になり、その結果、システムは正規ユーザーのコマンドに応答しなくなり、HoloLensの使用がブロックされます。ユーザーがヘッドセットを再起動しようとしても、IPが変わらない限り、または攻撃者が停止を決定しない限り、攻撃は継続されます。
図1.2:HoloLens DoS攻撃のアーキテクチャ
この攻撃を正しく再現するために必要な要件は次のとおりです。
攻撃を実行するために特定のオペレーティングシステムは必要ありません。DoSに使用するスクリプトは、スクリプト実行用に選択したツールの要件に合わせて調整する必要があります。
悪意のある人物は、ネットワークに接続されたヘッドセットの現在のIPを特定するためにネットワークスキャンツールを選択して攻撃を開始します。「Device Portal」のホームページにアクセスするには、ブラウザにヘッドセットのIPを入力するだけで済みます。このページでは、ログイン資格情報の入力を求められます。ただし、不正な試行回数が3回に達すると、ユーザーはヘッドセットとの新しいペアリングを要求できるページにリダイレクトされ、その後、新しいユーザーを作成できます。このWebページの要素を検査することで、HoloLens APIに対して行われたネットワークリクエストを分析できます。これらのリクエストには、リクエストのボディとヘッダーに関する情報が含まれており、図1.3に示すように、別のツールで簡単に複製できます。これらのリクエストを送信できることが、特定された攻撃ベクトルでした。
図1.3:HoloLens APIリクエスト
新しいペアリングリクエストが行われるたびに、HoloLensのプロセスが一時停止され、図1.4に示すように、デバイスのペアリングを続行するためにWebページで入力する必要があるPINがユーザーのビューにオーバーレイ表示されます。HoloLensは、このPINが消えたときにのみ通常の動作を再開します。PINを消すには、ユーザーはWebページでペアリングプロセスを完了するか、設定メニューを開いてHoloLensの通常のビューに戻ることができます。
図1.4:HoloLensのペアリングPIN
この問題をテストするために、攻撃者が手動で停止するまで発生する可能性のあるエラーを無視して、APIに対してペアリングリクエストを繰り返し送信するスクリプトが開発されました(図1.5および付録Aを参照)。このスクリプトは、コンピューターの電源が入るたびに実行するようにスケジュールできるため、Windows PowerShell用に開発されました。これにより、攻撃者は、通常HoloLensと同じネットワークに接続されている標的マシンにスクリプトをインストールできます。攻撃はユーザーに気付かれずにバックグラウンドで実行され、機器を使用不能にします。PowerShellには「New-ScheduledTask」コマンドがあり、コンピューターの電源が入るたびに悪意のあるスクリプトを実行するトリガーを作成できます。
図1.5:PowerShellスクリプト
ペアリングリクエストが行われるたびに、ペアリングPINがユーザーのビューにオーバーレイ表示されます。前述のスクリプトで実施したテストの結果、リクエストを継続的に送信すると、HoloLensがユーザーのビューに新しいPINを絶えずオーバーレイ表示し、他のタスクを実行できなくなることが観察されました。ユーザーはこのPINの上にメニューを開くオプションがありますが、ヘッドセットが絶えず新しいリクエストを受信しているため、このメニューで操作を実行する時間がありません。時間が経つにつれて、グラスは不具合を起こし始め、HoloLensはユーザーが話すジェスチャやコマンドを理解するのに苦労します。このようにして、攻撃が停止されるまで、ユーザーはデバイスを使用できなくなります。
この攻撃はさまざまなシナリオでテストされ、その全体において効果的であることが証明されました。ユーザーがHoloLensを再起動しようとすると、予想どおりAPIは応答を停止します。ただし、スクリプトで定義されているように、サーバーから返されるエラーは無視されるため、バックグラウンドで実行を継続できます。HoloLensがネットワークへの接続を再確立したことが検出されると、攻撃は持続し、ユーザーは他のタスクを実行できなくなります。信頼済みデバイスがすでにヘッドセットとペアリングされている場合でもテストを実施しました。結果は同じであり、送信元のIPがすでにペアリングされているIPと異なる限り、攻撃を実行できます。
実施したテスト中、CPUの過負荷によりヘッドセットが過熱することが観察されました。図1.6に、攻撃中のヘッドセットのCPUとメモリの処理状況を示します。特定の瞬間にCPUが非常に高いレベルまで上昇し、機器が過熱して他のサービスへの応答が遅延することがわかります。
図1.6:CPUとメモリの処理
要するに、このDoS攻撃は、ペアリングリクエストでHoloLens APIに過負荷をかけるものです。これにより、新しいPINが数秒以内にユーザーのビューに絶えずオーバーレイ表示されます。この動作により、攻撃が停止されるまで、正規ユーザーはHoloLensで他のタスクを実行できなくなります。この種の攻撃に対する適切な緩和策は、特定のIPから送信されたペアリングリクエストに制限を適用するAPIレベルのものになります。ただし、攻撃者がリクエスト内のIPを偽装しようとする場合、この方法は簡単に回避される可能性があります。したがって、短時間内に行われるリクエストの総数も制限することが提案されます。