あなたの好奇心を刺激する、テックと科学の総合ニュースサイト

モスクワに拠点を置くセキュリティ企業Kasperskyの研究者らは、2019年から2022年12月にかけて、極めて危険なiMessageの脆弱性が野放しになっていたこと、攻撃者が、AppleやArmのようなチップサプライヤー以外にはほとんど知られていない、文書化されていないハードウェア機能の脆弱性を悪用することで、前例のないレベルのアクセスを達成することができていた事実を明らかにした。

彼らはこれを「Operation Triangulation」と名付け、“これまで見た中で最も洗練された攻撃チェーン”について詳述している。

Chaos Communication Congressにおいて、Kasperskyのセキュリティ研究者であるBoris Larin、Leonid Bezvershenko、Georgy KucherinがOperation Triangulationに関するプレゼンテーションを行った。これは、3人が高度なiMessage攻撃で「使用されたすべてのエクスプロイトと脆弱性の詳細を公開」した初めての機会となった。加えて、Kaspersky SecureListブログですべての作業を共有した。

Larin氏は、「この悪用が巧妙であること、そしてこの機能が不明瞭であることから、攻撃者が高度な技術力を持っていたことが示唆されます。私たちの分析では、彼らがこの機能をどのように認識したのかは明らかになっていませんが、過去のファームウェアやソースコードのリリースで偶発的に開示された可能性など、あらゆる可能性を探っています。また、ハードウェアのリバースエンジニアリングによって偶然発見した可能性もあります」と、Ars Technicaに対してメールで語っている。

ゼロクリックiMessageエクスプロイトへのゼロデイアタックチェーン

ロシア政府当局者によると、ロシア国内の外交公館や大使館内で働く数千人のiPhoneも、この大量のバックドア・キャンペーンの影響を受けており、6月に明るみに出たようだ。Kasperskyによると、少なくとも4年間にわたり、感染はiMessageのテキストで配信され、受信者が何らかのアクションを起こすことなく、複雑なエクスプロイトチェーンを通じてマルウェアがインストールされたという。

これにより、デバイスはフル機能のスパイウェアに感染し、特にマイクの録音、写真、位置情報、その他の機密データを攻撃者が管理するサーバーに送信するようになった。再起動すれば解消されるが、攻撃者は、デバイスが再起動された直後に新しい悪意のあるiMessageテキストをデバイスに送信するだけで、攻撃を継続させる事が出来たという。

このエクスプロイトは、以下に挙げる4つの重要なゼロデイ脆弱性を悪用していた。Appleは4つの脆弱性すべてにパッチを適用している。

この脆弱性は、2022年12月にiOS 16.2がリリースされるまで存在していた。

攻撃者は、まず、AppleのTrueTypeフォント実装の脆弱性であるCVE-2023-41990を悪用した。この最初のチェーンリンクは、リターン指向プログラミングやジャンプ指向プログラミングなどのテクニックを使って最新のエクスプロイト防御を迂回するもので、攻撃者は最小限のシステム特権ではあるものの、リモートでコードを実行することができた。

その後、エクスプロイト・チェーンの次のリンクは、最も機密性の高いデバイス機能とデータ用に確保されたOSのコアであるiOSカーネルをターゲットにした。このカーネル操作は、CVE-2023-42434とCVE-2023-39606によってもたらされた。CVE-2023-42434はXNUのメモリ破壊の脆弱性で、iOSカーネル内部のメモリを破壊しようとする試みに耐えるように設計されたメカニズムだ。このリンクは、秘密のMMIOレジスタに存在する脆弱性であるCVE-2023-39606を悪用した。この脆弱性は、カーネルが侵害された後でも悪意のあるコードのインジェクションやカーネルの改変を防ぐ、先に説明した防御機能であるページ保護レイヤーをバイパスすることを可能にした。

その後、このチェーンはCVE-2023-32435として追跡されているSafariの脆弱性を悪用し、シェルコードを実行した。その結果、シェルコードは再びCVE-2023-32434とCVE-2023-38606を悪用し、最終的に最後のスパイウェアペイロードをインストールするために必要なルートアクセスを達成した。

956608 1703711603580
(Credit: Kaspersky)

被害者のデバイスのroot権限を獲得するために使用される4つのゼロデイを含む、複雑な攻撃チェーンの全容は以下の通りだ:

  • 攻撃者は悪意のあるiMessageの添付ファイルを送信し、アプリケーションはユーザーに何の兆候も見せずにそれを処理します。
  • この添付ファイルは、文書化されていないApple専用のADJUST TrueTypeフォント命令におけるリモートコード実行の脆弱性CVE-2023-41990を悪用しています。この命令は、パッチによって削除されるまで、90年代初期から存在していました。
  • これは、リターン/ジャンプ指向のプログラミングと、NSExpression/NSPredicateクエリー言語で書かれた複数のステージを使用し、JavaScriptで書かれた特権昇格エクスプロイトを実行するためにJavaScriptCoreライブラリー環境にパッチを適用します。
  • このJavaScriptエクスプロイトは、完全に読めないように難読化され、サイズを最小限に抑えている。それでも約11,000行のコードがあり、主にJavaScriptCoreとカーネル・メモリの解析と操作に特化しています。
  • JavaScriptCoreのデバッグ機能DollarVM ($vm)を悪用して、スクリプトからJavaScriptCoreのメモリを操作し、ネイティブAPI関数を実行する能力を獲得しています。
  • 新旧両方のiPhoneをサポートするように設計されており、最近のモデルを悪用するためのPointer Authentication Code(PAC)バイパスが含まれています。
  • XNUのメモリマッピングシスコール(mach_make_memory_entryおよびvm_map)における整数オーバーフローの脆弱性CVE-2023-32434を利用し、ユーザーレベルでデバイスの物理メモリ全体への読み書きアクセスを取得します。
  • これは、ハードウェア・メモリ・マップド I/O (MMIO) レジスタを使用して、ページ保護レイヤ (PPL) をバイパスします。これは CVE-2023-38606 として緩和されています。
  • すべての脆弱性を悪用した後、JavaScriptエクスプロイトは、スパイウェアの実行を含め、デバイスに対して好きなことを行うことができますが、攻撃者は次のことを選択しました:(b)不可視モードでSafariプロセスを実行し、次のステージのウェブページに転送します。
  • このWebページには、被害者を確認するスクリプトがあり、チェックに合格すると、次のステージであるSafariエクスプロイトを受け取ります。
  • Safariエクスプロイトは、CVE-2023-32435を使用してシェルコードを実行する。
  • シェルコードは、Machオブジェクト・ファイルの形で別のカーネル・エクスプロイトを実行する。これは同じ脆弱性を使用します:CVE-2023-32434とCVE-2023-38606です。サイズと機能の点でも巨大だが、JavaScriptで書かれたカーネル・エクスプロイトとはまったく異なります。上記の脆弱性の悪用に関連する特定の部分だけが、この2つの共通点です。それでも、そのコードの大半は、カーネルメモリの解析と操作に特化している。エクスプロイト後のさまざまなユーティリティが含まれているが、それらはほとんど使われていません。
  • エクスプロイトはroot権限を取得し、スパイウェアをロードする他のステージの実行に進みます。これらのステージについては、以前の記事で取り上げました

研究者らは、「この攻撃チェーンのあらゆる側面」をほぼリバース・エンジニアリングしたと強調しており、2024年には、各脆弱性とその利用方法についてさらに踏み込んだ記事を発表する予定だという。

ただし、約12ヶ月に及ぶ集中的な調査の後でもまだ解決されていない部分があると、Larin氏は述べている。具体的には、CVE-2023-38606に関しては謎が残っており、その謎を解明してほしいと述べている。

他のiOSセキュリティ研究者が我々の発見を確認し、攻撃者がどのようにしてこのハードウェア機能を知ったかについて考えられる説明を思いつくことができるように、我々は技術的な詳細を公表する。

この欠陥を悪用することで、攻撃者は、カーネルメモリへの読み書きアクセスを取得した際に攻撃者がデバイスを完全に制御することができなくなるApple製チップのハードウェア保護をバイパスすることができるという。

通常は、このような保護機能を備えたApple製デバイスでは、そのような攻撃者は、悪意のあるコードを他のプロセスに注入したり、カーネルコードや機密性の高いカーネルデータを変更したりといった、悪用後の重要なテクニックを実行することができない。この強力な保護機能は、シークレット機能の脆弱性を悪用することで回避された。現在までに発見された悪用ではほとんど破られていないこの保護機能は、AppleのM1およびM2 CPUにも搭載されている。

「これは普通の脆弱性ではありません。iOSのエコシステムは閉鎖的であるため、発見プロセスは困難で時間がかかり、ハードウェアとソフトウェアの両方のアーキテクチャを包括的に理解する必要がありました。この発見が改めて我々に教えてくれたのは、高度なハードウェアベースの保護でさえ、洗練された攻撃者の前では、特にこれらの保護をバイパスすることを可能にするハードウェア機能がある場合には、効果がなくなる可能性があるということですと、Larin氏は述べている。

詳細な技術文書の中でKasperskyは、CVE-2023-38606はApple A12-A16 Bionicプロセッサの未知のMMIO(メモリマップドI/O)レジスタをターゲットにしており、おそらくチップのGPUコプロセッサにリンクされているが、いわゆるデバイスツリー(リバースエンジニアにとって有用な、特定のハードウェア・セットの機械可読記述)には記載されていないと説明している。研究者がソースコード、カーネルイメージ、ファームウェアをさらに調査した後でも、MMIOアドレスに関する記述を見つけることはできなかった。

MIMO Ranges
(Credit: Kaspersky)

研究者らはこれについて以下のように推測している:

私たちの推測では、この未知のハードウェア機能は、Appleのエンジニアや工場がデバッグやテスト目的で使用することを意図していたか、誤って含まれていた可能性が高い。この機能はファームウェアでは使用されないため、攻撃者がどのようにしてその使用方法を知るのか、我々には見当がつかない。

Kasperskyは、この文書化されていないハードウェア機能が完成したコンシューマーバージョンのiPhoneに含まれているのは、間違いであるか、Appleのエンジニアがデバッグやテストを行う際に役立つように残されたものであると推測している。

Appleは、物理アドレスのマッピングを制限するためにデバイスツリーを更新することで、この欠陥を修正した。

しかし、そもそも攻撃者がどのようにしてこのような不明瞭な悪用可能なメカニズムの知識を得たのかは、依然として不明である。

iPhoneに影響を与えるだけでなく、これらの重要なゼロデイと秘密のハードウェア機能は、Mac、iPod、iPad、Apple TV、Apple Watchにも存在していたようだ。加えて、Kasperskyが回収したエクスプロイトは、これらのデバイスでも動作するように意図的に開発されたものだった。Appleはこれらのプラットフォームにもパッチを適用している。


Sources

Follow Me !

\ この記事が気に入ったら是非フォローを! /

Share on:

関連コンテンツ

おすすめ記事

コメントする