iOS 10からiOS 12まで、ほぼすべてのiOSバージョンに影響する14の脆弱性によって、ハッキングされた多数のWebサイトが訪問者のデバイスを制御し、少なくとも2年間にわたって大量の個人データを盗むことに成功したと、Google Threat Analysis Group(TAG)エンジニアのIan Beer氏が記している。
脆弱性の7つはiOSブラウザに影響し、5つはカーネルの脆弱性、2つはサンドボックスエスケープに関するものだ。これらはまとめて、5つのエクスプロイトチェーンを作成するために使用されていた。それぞれがデバイスへのハッキング(通常はブラウザーの脆弱性の悪用)から始まり、攻撃をより高い特権レベルにエスカレートすることで、プライベートデータへのアクセスを獲得する。Ian Beer氏によると、これらの脆弱性の大部分は、出荷されるソフトウェアにあってはならないような、不十分な品質保証、あるいはあからさまなエラーが原因であった。例えばあるカーネルの脆弱性は、組み込みGPUドライバのC++メソッドのヒープオーバーフローに関連するものだった。このメソッドでは、必要な境界チェックを行わずに、ユーザが提供したデータを解析していた。別のカーネルの脆弱性は、"<"によるバウンダリチェックを"!="に置き換えたリファクタリングによって生じたもので、チェック対象となる値はIPCメッセージから直接読み取られたものだった。同じように、ユーザが提供したデータをフィルタリングせずに使用するケースとしては、ユーザが引数指定した長さでmemmove
を実行するという、IOKitの公開メソッドの別のカーネル脆弱性の原因となっているものがあった。それとは別の、正当化が困難な脆弱性として、"vouchers"機能の実装の目的でAppleが2014年に追加した"未完成"なコードが、テストや試用の目的で使用する引数でコールされた場合に、カーネルパニックを発生させる、というものがあった。Beer氏によれば、これらのバグの多くは、単体テストやコードレビュー、あるいはファジング(fuzzing)によって検出できたはずだ。
Beer氏は、エクスプロイトの分析をさらに進めて、ルートとしてサンドボックス化されないコードの実行特権を取得した後、攻撃者がどのようなデータにアクセスできるかを調査するため、自身のコマンドをセットアップしてサーバをコントロールする作業を行った。結果的には、Whatsapp、Telegram、iMessage、Gmail、Contacts、その他多くの主要なアプリをすべて発見し、暗号化されていないデータがすべて漏洩し、デバイスで利用可能なほぼすべての個人情報にアクセスできることが分かった。Beer氏が指摘するのは、Googleがこれら脆弱性チェーンを悪用していた、ハッキングされたウェブサイトをいくつか特定したが、それらがすべてではない、という点だ。
また、これは攻撃者としては失敗ケースであったことにも留意してください。私たちが調べたこの活動の他に、まだ確認できていないものがあることはほぼ間違いありません。
おそらく、この話で最も重要なことは、安全と見なすことのできるシステムは存在せず、この面では高い評価を受けているiPhoneもその例外ではない、ということだ。ユーザはそれを意識する必要がある。
実際のユーザは、自分たちのデバイスのセキュリティに対する一般認識に基づいてリスクを判断します。あなたが標的にされている場合、セキュリティ保護は攻撃のリスクを排除するものではない、という事実は残るのです。
さらに問題なのは、ターゲットを絞るという場合、それは個々人にターゲットを絞るという意味だけではないことだ、とBeer氏は言う。実際の攻撃は、もっと大規模なターゲットに対して行われることが少なくない。その対象となるのは、地理や民族を単位としたターゲットグループに属するという、単純な事実で十分なのだ。
Ian Beer氏の一連の記事に注目してほしい。その中で氏は、すべての脆弱性の詳細と、それをつなぎ合わせてエクスプロイトを実現して、詳細な情報を取得する方法について掘り下げている。