セキュリティ

Apple端末のセキュリティチップ「Secure Enclave」はどのようにして突破されてしまったのか?


Appleデバイスで機密データの暗号化に使用される「Secure Enclave(SEP)」にパッチ不可能な脆弱性が存在すると、中国人ハッカーグループ「Pangu」に所属するwindknown氏がMOSEC 2020にて発表しました。この脆弱性に関する情報をまとめた資料がGitHubで公開されており、仮想メモリ空間の暗号化キーの抜き出しといった脆弱性の詳細を知ることができます。

presentations/Attack_Secure_Boot_of_SEP.pdf at master · windknown/presentations · GitHub
https://github.com/windknown/presentations/blob/master/Attack_Secure_Boot_of_SEP.pdf

ほぼすべてのApple端末に組み込まれている「Secure Enclave」は、ファイルの暗号化だけでなく、パスワードやApple Payで使用されるクレジットカード、Touch IDやFace IDなどの生体認証を有効にするためのキーなどの保存も担うチップ。そのチップにパッチ不可能な脆弱性が見つかったことで、パスワードやクレジットカード情報への完全なアクセス権を第三者に取得されてしまう危険性が懸念されていました。

Apple端末のセキュリティを担う「Secure Enclave」チップにパッチ修復不可能な脆弱性が見つかる - GIGAZINE


Secure Enclaveを攻撃する仕組みを理解するためには、iOSのブートの流れを知っておく必要があります。iOSのブートでは、通常のOSを起動するiBootが行われる「AP空間」と、Secure Enclaveによる「SEPOS」の起動が行われる「SEP空間」がそれぞれ分離されているとのこと。起動時にメモリ上に展開されるIMG4ファイルも、AP空間とSEP空間においては異なるファイルが読み込まれ、AP空間では通常のOSが、SEP空間ではSEPOSが起動します。


Secure Enclaveは4096バイトのRAMを持つチップで、AP空間からは電源管理や割り込み駆動を行うための「メールボックス」や共有メモリにアクセスすることが可能。AP空間から入力されたパスワードなどの機密情報はSecure Enclaveのデバイス固有値(UID)などによって暗号化されます。


Secure Enclaveの仮想メモリと物理メモリの変換テーブルはこんな感じ。


変換テーブルのメモリ領域のうち「Mapped IO registers」はSEP空間とAP空間のどちらからも読み書きすることが可能。SEP空間とAP空間はメールボックスの役割を果たすMapped IO registersを介してデータの送受信を行うというわけ。AP空間におけるMapped IO registersのベースアドレスは「0x2_0DA0_4000」、SEP空間におけるベースアドレスは「0xCDA0_0B80(物理メモリでは0x2_0DA0_0B80)」となっているとのこと。Mapped IO registersで送受信されるメッセージ表が以下。


それぞれのメッセージは4バイトのデータを含んでおり、そのデータの一覧が以下。このうち「Boot TZ0」はSecure Enclaveに外部のRAM領域を割り当て、SEPOSの起動に必要なメモリ容量を確保するためにAP空間から送信されるデータで、今回のSecure Enclaveに関する脆弱性において重要な存在です。


Boot TZ0を行う前に、AP空間において「Base」「End」「Lock」の3つのレジスタを設定する必要があるとのこと。プロセッサの世代ごとにレジスタが設定されているメモリのアドレスは異なっており、対応表は以下となっています。


Secure Enclaveに割り当てれたメモリ領域は、起動するたびに値が変わる24バイトのキーによって暗号化され、Secure EnclaveのROMとSEPOSからは暗号化を意識せず透過的に利用することができます。AES-256-XEX方式によるAESキーはSecure EnclaveのROMとSEPOSそれぞれに対して生成され、暗号化されたデータを復号する際に使用するキーが異なります。暗号化よるメッセージ認証符号(MAC)が必要であるため、実際に使用できるメモリ容量は半減するとのこと。


ただし、Secure Enclaveによってすべてのメモリ領域が暗号化されるわけではありません。「0x8_00BF_0000」と「0x8_00BF_F000」から始まる領域は、暗号化が行われていないとのこと。


TZ0レジスタの設定やメモリの割り当て、暗号化が完了した後、Secure EnclaveはIMG4ファイルをメモリ上に展開してSEPOSを起動。SEPOSが暗号化されたメモリ空間にアクセスするためのAESキーを作成し、Secure Enclaveのファームウェアを読み込むことでSEP空間側の起動が完了するとのこと。

以上のSecure Enclaveによる暗号化の構造を踏まえた上で、Secure Enclaveに対する攻撃は「メモリ空間の分離を取り払って」「暗号化されていないメモリ領域からAESキーを抜き出して」「AP空間とSEP空間でキャッシュを競合させる」ことでデータを抜き出すことができるようになるとのこと。

まずはAP空間とSEP空間でメモリ領域を共有させます。AP空間のコードは「Checkm8」による改変が可能なので、TZ0レジスタを設定する際に、開始アドレスを「0x10_0000」だけオフセットするとのこと。この操作により、AP空間とSEP空間の分離を解除させることができるようです。


AP空間からSEP空間のメモリ領域を参照できるようにはなりましたが、SEP空間のメモリ領域は暗号化されており、そのままでは読み取ることができません。ここで利用するのが、SEP空間においても暗号化されていない「0x8_00BF_0000」と「0x8_00BF_F000」から始まる領域です。仮想アドレスのマッピングを操作し、「0x8_00BF_0000」と「0x8_00BF_F000」から始まる領域を読み込むようにコードを変更することで、ブート時に生成されたSEP ROM用のAESキーを抜き出すことが可能になるとのこと。最後にAP空間のプロセッサとSEP空間のプロセッサのキャッシュを競合させ、SEPOS用のAESキーを抜き出せば、Secure Enclaveによって暗号化されたデータをダンプすることができるようになります。

今回の脆弱性がすべて利用できるのは、A8/A9プロセッサで、A7/A10プロセッサは一部の脆弱性を利用可能。脆弱性を発表したwindknown氏は「この脆弱性の活用方法を見るのが楽しみだ」とコメントしています。

この記事のタイトルとURLをコピーする

・関連記事
iOSのコアとなるソースコードの一部「iBoot」がネットに流出、「史上最大のリーク」との指摘も - GIGAZINE

Apple端末のセキュリティを担う「Secure Enclave」チップにパッチ修復不可能な脆弱性が見つかる - GIGAZINE

T2チップを搭載するMacBookは「史上最強」のマイク盗聴防止機構を備えることが判明 - GIGAZINE

iPhone 8やiPhone Xを脱獄させる新たな手法が発見される、パッチによる修正は不可能 - GIGAZINE

iPhoneを脱獄してAndroid OSをインストールできるツールがリリース - GIGAZINE

in モバイル,   ソフトウェア,   ハードウェア,   セキュリティ, Posted by darkhorse_log

You can read the machine translated English article here.