カリフォルニア大学サンタバーバラ校の研究者らは、6つのベンダーの多数のAndroidチップセットにブートローダーの脆弱性があることを発見した。
9人の研究者からなるチームは、Androidアーキテクチャのあまり研究されていない側面、つまり起動時のOSとチップ間の相互作用に着目することにしました。その動作を詳細に解析するため、「BootStomp」と呼ばれるツールを開発しました。これは、「OSを制御する攻撃者からの入力によってブートローダーの実行やセキュリティ機能が侵害される可能性のある問題領域を特定するように設計されています」。
このツールは、Huawei、Qualcomm、MediaTek、NVIDIA のブートローダーに悪用可能なバグを発見しました。6 つの新しいバグと、すでに知られていたものの Qualcomm デバイスにはまだ存在していた CVE-2014-9798 です (既知のバグであったため、9798 は BootStomp が意図したとおりに動作していることを確認するための便利な参照情報も提供しました)。
「これらの脆弱性のいくつかは、Android OSのルート権限を持つ攻撃者がブートローダーの一部として任意のコードを実行できるようにする可能性がある」とグループは論文に記している。
「これにより、信頼チェーン全体が危険にさらされ、通常は TrustZone に制限されているコードやストレージへのアクセス、永続的なサービス拒否攻撃 (デバイスのブロックなど) の実行などの悪意のある機能が可能になります。」
問題の根本は、ブートローダーの信頼チェーンがどのチップセットでも同じであることが理想的だが、そうではないことだ。Google はシリコンベンダーの作業を簡素化するためにカスタマイズの余地を残している。
たとえば、ARM 環境では、チップセット メーカーは Trusted Boot プロセスのどの段階でも独自のコードをプロセスに組み込むことができます。また、「ブート プロセスのどの時点でどのコードを挿入すべきかについての指示はありません」。
「さらに、モデムなどの周辺ハードウェアには異なるベンダーのコードが組み込まれている可能性があり、初期化プロセスの変更が必要になるため、初期化タスクをブートシーケンスの残りの部分とあまり密接に結合することはできません。」
たとえば、モバイル GSM または LTE モデムは、システム オン チップ (SoC) の一部である場合もあれば、独立したチップである場合もあります。これにより、ブートローダがチップおよびモデムと対話する方法が決まります。
言い換えれば、スマートフォンの設計の違いにより、起動時の決定ポイントが追加され、脆弱性が生じる可能性があります。
BootStompアーキテクチャ
研究者らは、Huawei のブートローダーにおいて、メモリ破損の脆弱性 (永続的なルートキットのインストールに悪用可能)、任意のメモリ書き込み (攻撃者が任意のコードを「ブートローダー自体として」実行可能)、およびユーザーの関与なしにデバイスをルート化する方法を発見しました。
BootStompによって合計38件の潜在的なバグが発見されたため、他のどの企業もそれほど良い結果を出せなかったと言っても過言ではないでしょう。報告書では、報告された脆弱性を認めた企業としてHuaweiとNVIDIAの名前が挙がっていますが、著者らは、ベンダーが否定した脆弱性は1件のみであると述べています。®