Appleは最近、セキュリティ研究デバイスプログラム(SRD)を発表しました。これは、選ばれたセキュリティ研究者に特別なiPhoneを提供し、iOSのセキュリティ問題の根絶を支援するプログラムです(「Apple、専用のセキュリティ研究デバイスを発表」、2020年7月23日参照)。研究者たちは発見したセキュリティ上の脆弱性を、できれば悪用される前に修正することができます。
Apple の発表といくつかの論理的推論に基づいて、このプログラムと特定のデバイスがどのように機能するかを推測することができます。
AppleからiPhoneを購入すると、それは製品版のスマートフォンであり、製品版のコード署名鍵がシステムオンチップ(SoC)に焼き込まれています。製品版の鍵を持つことは、production fused(多くの場合、prod fusedと略されます)と呼ばれます。この端末では、Appleの製品版証明書(社内ではprod certと呼ばれます)で署名されたiOSのリリースバージョンが実行されます。iPhoneが起動すると、SoCに焼き込まれたコードがオペレーティングシステムをチェックします。prod certで適切に署名されていない場合、iPhoneは起動しません。Jailbreaking(脱獄)とは、(部分的には)この制限を回避する方法を見つける技術です。
同様に、iOSは本番環境のApp Store証明書で署名されたアプリのみを実行します。これにより、App Storeを経由せずにアプリを直接インストールするサイドローディングが防止されます。ただし、サードパーティの開発者が自社開発証明書を使用してアプリに署名し、そのアプリを自分のiPhoneで実行できるようにするなど、いくつかの例外があります。実際には、このプロセスはしばしば問題を抱えています。(この説明ではコード署名の詳細を大幅に簡略化していますが、一般的な手順を網羅しています。)
これらの制限が存在すると、Apple社内でのソフトウェア開発は非常に困難になります。Apple社内では、エンジニアは開発キー(dev-fusedと呼ばれます)付きのiPhoneを使用し、iOSの開発ビルドを実行しています。iOSの開発ビルドには、シェル、多くのアプリ内のデバッグおよびプロファイリングコード、テストフック、内部フレームワークが含まれています。開発用iOSビルドは開発者証明書で署名されているため、 dev-fused iPhoneで起動します。
さらに、iOSの開発ビルドでは、アプリの実行前に証明書のチェックが行われません。開発ビルドが組み込まれたiPhoneには、好きなアプリを自由にロードできます。このため、Appleのエンジニアは作業がはるかに容易になります。サードパーティ開発者にとってアプリの署名プロセスがうまく機能しない理由の一つは、Appleのエンジニアがそれを使用していないため、問題の修正にプレッシャーをかけないからでしょう。
たとえiOS開発ビルドのコピーを入手し、それを製品版iPhoneにロードできたとしても、製品版証明書で署名されていないため起動しません。同様に、iOSのリリースビルドもDev-Fused iPhoneでは起動しません。
前述の通り、iOSの開発ビルドにはシェルが含まれています。シェルは、Unixコマンドやスクリプトを実行するターミナルの背後にあるアプリです。macOSとiOSは以前はデフォルトでbashシェルを使用していました。macOSは最近zshに移行し、iOSもzshに移行した可能性があります。
iPhoneは本格的なコンピュータなので、Appleのエンジニアは開発中のiPhoneにSSHでログインし、シェルで作業します。これは、サーバーエンジニアがリモートサーバーにSSHでログインしてサーバーコードを操作するのと変わりません。ログインできないコンピュータで作業するのは非常に困難です。iOSのリリースバージョンには、ログインできるものがない(つまり、セキュリティ強化と脱獄の困難化のため)シェルが含まれていません。
Appleがセキュリティ研究者による脆弱性発見を支援したいのであれば、SSHで接続できるシェルを備えたiPhoneを提供する必要がある。非公式の情報によると、SRD iPhoneは製品版でも社内開発版でもなく、おそらく新しいSRD証明書を搭載したiPhone 11、いわゆる「SRD fused」だとか。SRD fusedは、Apple社内iOSビルドの一部機能を備え、SRD証明書で署名された特別なiOSビルドを実行する。つまり、iOSのSRDビルドは、製品版iPhoneでもApple社内開発iPhoneでも動作しないということだ。
Appleは、研究者向けにXcodeの特別な内部ビルドに加え、iPhoneへのソフトウェアのロードやiOS内部のデバッグ用に設計されたツールも提供している可能性が高い。Appleは、通常のサードパーティ開発者が決して踏み込まないiOSの奥深くまで探索するための幅広い内部ツールを保有している。これらのツールはセキュリティ研究者にとって間違いなく役立つだろう。AppleはiOS、Xcode、そしてサポートフレームワークの新しい内部ビルドを毎日リリースしている。セキュリティ研究者が毎日ビルドを入手する可能性は低いだろうが、定期的なアップデートは提供されるだろう。
iOSのSRDビルドも、iOS開発ビルドと同様に、コード署名を確認せずにアプリを実行する可能性があります。これが事実であることを示す具体的な情報はありませんが、理にかなっていると言えるでしょう。これにより、セキュリティ研究者はアプリに任意の権限を設定できるようになり、iOSの内部保護が実際にどのように機能するかについて多くのことを学ぶことができます。また、iPhoneにアプリをロードするたびにXcodeのコード署名機能に煩わされる必要がなくなります。
iOSには複数のレベルのセキュリティが存在します。完全に機能するエクスプロイトは通常、複数の個別の脆弱性を連鎖させることで構築されます。例えば、ある脆弱性は、不正なJPEGがJPEGデコーダーを乗っ取ることを許す可能性があります。しかし、JPEGデコーダーはサンドボックス化されており、侵入されてもほとんどアクセスできません。別の脆弱性はサンドボックスからの脱出を許す可能性があります。3つ目の脆弱性は、ルート権限へのエスカレーションを許す可能性があります。これら3つを連鎖させると、写真を見るだけでiPhoneを侵害するエクスプロイトが完成します。(これは「ドライブバイエクスプロイト」と呼ばれます。)
iOSのSRDビルドでは、セキュリティ研究者が作業をより容易に行えるよう、数十に及ぶiOSセキュリティ制限の一部が無効化されますが、大半はそのまま残ります。Appleは、セキュリティ研究者が本格的な多段階攻撃を発見することを期待していません。研究者が個々のセキュリティ制限を回避する方法を見つけ、Appleのエンジニアがそれらのミスを慎重に修正できれば、Appleは満足するでしょう。
悪意のある人物がこれらのSRDを入手するのをどうやって防いでいるのか、疑問に思ったことはありませんか?Appleは、SRDや特別なiOSビルドが本来の受信者以外に漏洩しないよう、何らかの強力な対策を講じていると考えられます。まず、業界で最も厳格な秘密保持契約を結んでいると考えられます。過去には、Appleのセキュリティ対策として、未発表のハードウェアにアクセスできる人は、窓のない施錠された部屋に保管し、鍵は特定の人にのみ渡すことを義務付けていました。Appleはグループごとに異なるコードネームを使用することがあるため、コードネームが漏洩した場合、追跡が可能です。
Apple社内では、未発表のiPhoneが数日おきにインターネット経由で「自宅へ電話」し、担当の従業員がまだiPhoneを持っているかどうかを確認しています。SRDも同様のことを行う可能性があります。
SRDは特別な証明書が付いているとはいえ、標準的なiPhone 11である可能性が高いものの、Appleはそれでもその写真やスクリーンショットの流通を望まない可能性があります。これまで、Appleのセキュリティ担当者は未発表製品の筐体に「ランダム」なマーキングを施してきました。そのため、写真がインターネット上に公開された場合、Appleはそれがどのデバイスであるかを特定できます。iOSの各SRDビルドにも識別マーカーが追加される可能性があるため、ビルドが漏洩した場合、Appleはそれがどこから来たのかを特定できます。Appleのエンジニアがかつて私に話してくれたところによると、一部のOS内部ビルドではステガノグラフィーが使用され、スクリーンショットの下位ビットにiPhoneのIPアドレスとMACアドレスが隠されているそうです。このデータは肉眼では見えませんが、スクリーンショットがオンライン上に公開された場合、Appleはそれがどこから来たのかを確認できるツールを持っています。
SRDが盗まれた場合、iOSのSRDビルドの署名方法によっては、Appleがそのデバイスの証明書を失効させ、将来のiOSビルドがそのデバイス上で実行できないようにできる可能性があります。AppleはSRDをリモートでブロックすることも考えられますが、SRDを盗むほど賢い人なら、それをファラデーバッグに入れて、インターネット上に現れてブロックコマンドを受信しないようにするでしょう。
最近発生したiPhoneのハッキング事件を受けて、Appleはセキュリティ研究のあり方を見直す動きを見せているかもしれません。Appleは普段から秘密主義を貫いているため、セキュリティ研究デバイスプログラムは異例の取り組みと言えるでしょう。また、組織犯罪や政府の諜報機関による悪用を防ぐため、多大な労力を費やしたことも明らかです。このプログラムによって、より安全なiPhoneが私たち全員に提供されることを期待しています。