最近大きく報道された事例では、ジョージア工科大学の科学者が、あらゆる種類の悪意ある活動を実行できる特別に細工されたアプリ(適切に Jekyll と名付けられている)を App Store に導入し、Apple がユーザーを保護するために導入したすべてのセキュリティ対策を回避しました。
これは決して小さな成果ではありません。Appleは、モバイルOSのユーザーがWebブラウジングから銀行口座の更新まで、日常的な活動でデバイスを使用する際に安心して利用できるよう、多大な努力を払ってきました。デバイス上で実行できるソフトウェアと実行できないソフトウェアを定める厳格なルールを施行することで、Appleはユーザーを悪意のあるソフトウェアからほぼ確実に守ってきました。
確かに、会社のルールに違反する機能を含むアプリが時折侵入してくることはありますが、深刻な侵害は極めて稀です。それでも、ハッカーやセキュリティ研究者はiOSのセキュリティフレームワークを回避しようと、攻撃を続けています。
一方、クパチーノの巨人であるマイクロソフトも、黙って見ているわけにはいかない。同社のオペレーティング システムのセキュリティは進化を続け、アプリの開発方法から実行方法まですべてに影響を及ぼす追加の保護層を作り出している。
最初はアプリレビューがありました
アプリのセキュリティに対する最初の防御線はレビュー プロセスです。このプロセスでは、各アプリが手動でテストされ、明らかなクラッシュが起こらないこと、および適切な App Store ルールすべてに準拠していることを確認します。

この審査の一環として、Appleの従業員はアプリのバイナリコードに対して特別な静的アナライザーを実行し、通常は開発者がアクセスできないプライベートな機能を使用しているかどうかを確認します。この重要なステップにより、Appleは、例えば、コードがユーザーの許可なく不正に電話をかけたり、SMSを送信したり、さらには連絡先データベースにアクセスしたりしようとしているかどうかを判断できます。
App Storeからマルウェアをほぼ排除することに成功しているにもかかわらず、レビュープロセスには限界があります。毎週数百ものソフトウェアタイトルを審査しなければならないため、レビュー担当者は各アプリに割ける時間が限られています。そのため、一定期間使用した後に発生する問題や、外部イベントに反応して発生する問題を見逃してしまう可能性があります。例えば、ジョージア工科大学への攻撃では、Jekyllアプリはインターネット経由で特別なメッセージが送信された場合にのみ悪意のあるコードが実行される仕組みになっており、アプリのレビュープロセスで潜在的な欠陥を特定するのは非常に困難でした。
埋蔵された宝物
ここでiOSのソフトウェアベースの防御機能が作動します。iPhoneまたはiPadで実行される各アプリは、オペレーティングシステムが構築する仮想の「サンドボックス」内でのみファイルの読み書きが許可されます。サンドボックス外のデータへのアクセスは完全に拒否されるため、アプリ間の通信はAppleが承認したチャネルを介してのみ可能になります。
サンドボックスは、実質的には、審査プロセスをすり抜けた悪意のあるアプリが、ユーザーに気付かれずに別のアプリ(例えばオンラインバンキングソフトウェアなど)のデータを盗み出すことを防ぎます。サンドボックスはオペレーティングシステムの最下層に実装されているため、ユーザーがジェイルブレイクされたデバイスを操作していない限り、ハッカーがセキュリティモデルを回避することは非常に困難です。
ハッカーの作業をさらに困難にするために、iOSはコード専用のメモリ領域とデータのみを格納するメモリ領域を明確に分離しており、後者が前者に流れ込むことは(少なくとも理論上は)不可能です。これにより、ユーザーがアプリを実行した際にインターネットからコードをダウンロードすることが防止され、アプリがレビュープロセスを完全に回避してあらゆる種類のトラブルを引き起こす可能性を回避できます。
強盗の解剖学
残念ながら、こうした技術をすべて駆使しても、意志の強いハッカーの知恵には太刀打ちできません。サンドボックス化によってアプリ同士のデータアクセスは阻止できますが、適切な状況下ではサードパーティ製ソフトウェアにも公開される可能性のある情報、例えばユーザーの連絡先や写真アルバムへのアクセスを必ずしも阻止できるわけではありません。
代わりに、これらのリソースへの悪意のあるアクセスは通常、アプリの動作を観察し、そのバイナリコードを調べることで Apple のレビュー担当者によってフラグが付けられます。つまり、Apple の分析ツールを回避したアプリは、メッセージから本当にプライベートにしておきたい写真まで、あらゆるものにアクセスできる可能性があります。
iOSの基盤技術の動的な性質により、これは思ったほど難しくありません。中程度のスキルを持つ開発者でも、例えば、一見無関係に見える2つの単語を暗号化し、それらを組み合わせてプライベートAPIの名前を作るようなコードを書くことができます。つまり、最終的なコードはアプリが実行されるまで動作しません。これは、銃を個々の部品に分解して航空機に密輸しようとするようなものです。

しかし、この手法を単純に実装しただけでも、十分に高度な静的解析ツールで検出可能な痕跡が残ってしまいます。X線検査装置で見た弾丸は、結局は弾丸にしか見えないのです。こうした試みは、ユーザーのデバイスに侵入するずっと前に、アプリレビュー担当者によってほぼ確実に発見・ブロックされます。
しかし、ジョージア工科大学の研究者たちは、この技術をさらに高度なレベルに引き上げることに成功した。彼らは、インターネットから情報をダウンロードしたり、電子メールで友人にウェブページを送信したりするなど、無害でソフトウェアの「公式」機能に必要な部分にアプリを分割することに成功した。しかし、これらの部分は実行時に再結合され、ユーザーの連絡先をすべて取得して開発者が選択したウェブサイトにアップロードするなど、ユーザーの同意なしに違法なアクションを実行できるものだった。
ご想像のとおり、この種の攻撃は見分けるのが非常に困難です。飛行機の旅に例えると、この種の脆弱性を追跡することは、ミント、新聞紙、そして紐で銃を作り上げることができるマクガイバーのようなテロリストを見分けることに似ています。
あなたができること
この問題に対処するには、アプリがシステム リソースにアクセスする方法を変更し、基本的にはファイル システムだけでなく、連絡先から写真まですべてを網羅するサンドボックスを作成する必要があります。
この設定により、アプリが機密データにアクセスするのを阻止するのは人間のレビュー担当者ではなくオペレーティングシステムであり 、たとえアプリの審査プロセスを通過したとしても、悪意のあるソフトウェアの実行はほぼ不可能になります。開発者がデータにアクセスする唯一の方法は、アプリを提出する前に明示的に「権限」を要求することです。これにより、アプリレビュー担当者は、ルール遵守を確保するために具体的にどのような機能を検査すべきかについて、有益なヒントを得ることができます。

エンタイトルメントは既に確固たる地位を築いた技術です。例えばOS Xでは、署名済みアプリがネットワークからカメラに至るまであらゆるものにアクセスする方法を制御するために広く利用されており、iOSアプリはiCloudやプッシュ通知をサポートする際に既にエンタイトルメントを活用できます。Appleのモバイルオペレーティングシステムの将来のバージョンでは、エンタイトルメントの利用範囲が、開発者が必要とする可能性のあるあらゆる種類の機密情報や機能にまで拡大されるでしょう。
このアプローチの本当の優れた点は、アプリの機能を制限したり、エンド ユーザーに負担をかけたりすることなく、セキュリティを向上できることです。責任はすべて開発者に課せられ、開発者はアクセスする必要のあるリソースに対する権限を明示的に要求しなければならなくなり、Apple のレビュー担当者はそれらの要求を承認または拒否する必要があります。
私たち顧客にとって、毎日使うアプリはこれまで通り、連絡先、位置情報、写真アルバムへのアクセスを許可し続けます。しかし、その裏では、全く新しいセキュリティレイヤーが、ますます巧妙化するハッカーの攻撃による個人情報への甚大な被害を防いでいます。