6分で読めます
| ニュース
こういうのって、なんだか面白くもあり、同時に憂鬱でもあるんですよね。だって、頭に浮かぶのは「…驚いたでしょ?」ってことだけなんですから。サンドボックスの概念を少しでも理解していれば、TextExpanderの新バージョンがMac App Storeにないという事実は、タールピットにヒナギクが生えていないのと同じくらい驚きなはずです。でもまずは、サンドボックスの簡潔な説明を見てみましょう。
アプリサンドボックスは、悪意のあるコードがアプリを悪用した際に、盗難、破損、または削除されたユーザーデータに対する最後の防御線となります。また、アプリサンドボックスは、アプリ内またはリンク先のフレームワーク内のコーディングエラーによる被害を最小限に抑えます。
Appleのサンドボックスルールに誰もが満足しているわけではないことが判明
サンドボックスは、アプリケーションを悪用する悪意のあるコードから保護するように設計されています。例えば、別のアプリケーションのプロセスにアクセスしたり、ああ、そうか、人間が入力するすべての内容を監視し、「正しい」入力がされたら事前に設定されたアクションを実行したりするのです。さて、もしあなたがSmile Softwareのような素晴らしい開発者なら、何の問題もありません。「mosx」と入力して発声すれば、パッと画面に「Mac OS X」が表示されます。便利ですよね?
しかし、あなたが悪質な開発者であれば、電話番号や「ランダムな」ダッシュやスペースで区切られた数字などを探すか、あるいは、とにかく入力されたものをすべてコピーして、どこかのサーバーに送信します。
では、データの意図と用途以外に、一体何が違うのでしょうか? ええ、違いはありません。同じ手法が善にも悪にも使われる可能性があります。例えば、私はIT業界にいます。セキュリティスキャナーなど、様々なツールを使って、自分のシステムに欠陥がないか確認し、修正しています。しかし、ブラックハットは、同じツールを使って、そのデータを使って全く異なることをするでしょう。私にとっては、それは修正すべきものですが、彼らにとっては、悪用されるべきものなのです。
肝心なのは、どんなOSであっても「良いコード/悪いコード」を議論するのは愚かな行為だということです。そんなものは存在しません。許されるものと許されないものがあるのです。サンドボックス化は明らかに後者を増やし、前者を減らします。具体的な理由の一つは、アプリケーション同士が互いの干渉を遮断するためです。これは理論上のリスクではありません。OS Xの入力マネージャの以前の実装を悪用して拡散したマルウェアが既にいくつか存在しています。
これはOS X 10.4の頃の話で、Appleが10.5以降で入力マネージャの動作を変更したのはそのためです。幸いなことに、このトロイの木馬/ワームであるLeap-A(別名「ウンパルンパ」)は、感染したアプリケーションの実行を阻止しただけで、それ以外は被害はありませんでした。皮肉なことに、これにより感染拡大は鈍化しましたが、それでも、ある人が善意で利用できるものが、別の人が悪意で利用する可能性があることを示す有用なデータポイントです。
サンドボックスとは、特定の権限セット以外では、アプリケーションAがアプリケーションBにアクセスできないようにすることです。正直なところ、ほとんどのアプリケーションでは特に問題にはなりません。ほとんどのアプリケーションは、他のアプリケーションプロセス内での操作を気にしないからです。
ほとんどのアプリケーションは、保存、開く、印刷、スクリプトによる自動化など、ユーザーが開始する操作のみに「外部」操作を制限しています。(スクリプトもサンドボックス化の影響を受けますが、これは別の機会に説明します。 )
実際、今私のドックを見てみると、50以上のアプリケーションのうち、Smile SoftwareのTextExpanderのように他のアプリケーションにアクセスして操作する必要があるのは5つくらいで、そのうちの1つがTypeIt4Meです。(私は古い人間なので、訴えてください。)ほとんどのアプリケーションにとって、サンドボックス化は実際には問題ではありません。他のアプリケーションにアクセスして操作する必要がないか、簡単に定義できる方法でアクセスして操作するため、特定の権限を使用できます。(Microsoft Officeが良い例です。)
しかし、サンドボックス化の影響を受けるアプリケーションは確かに存在します。例えば、TextExpanderなどです。正直に言うと、TextExpanderはあらゆるアプリケーションに権限を必要とするため、権限付与を行う方法はありません。TextExpanderは、実行するすべてのアプリケーションで動作するはずです。God Mode権限を付与するのであれば、そもそもサンドボックス化を気にする必要などあるのでしょうか?
Appleは、アプリケーションがサンドボックス化された世界でプレイできるかどうかを判断するための基本的なガイドラインを「App Sandbox Design Guide」にまとめています。これには以下の内容が含まれます。
- 認可サービスの使用。App Sandbox では、「認可サービス C リファレンス」で説明されている機能を使用することはできません。
- 支援アプリにおけるアクセシビリティAPIの使用。アプリサンドボックスを使用すると、アクセシビリティの概要に記載されているように、アプリのアクセシビリティを有効化できます。ただし、スクリーンリーダーなどの支援アプリをサンドボックス化することはできません。また、他のアプリを制御するアプリをサンドボックス化することもできません。
- 任意のアプリへのAppleイベントの送信。App Sandboxでは、Appleイベントを受信したり、Appleイベントに応答したりできますが、任意のアプリにAppleイベントを送信することはできません。一時的な例外エンタイトルメントを使用することで、指定した特定のアプリへのAppleイベントの送信を有効にすることができます。詳細は、「エンタイトルメントキーリファレンス」をご覧ください。
- 他のタスクへのブロードキャスト通知でユーザー情報辞書を送信します。App Sandboxでは、他のタスクにメッセージを送信するためにNSDistributedNotificationCenterオブジェクトに投稿する際に、ユーザー情報辞書を含めることはできません。(通常通り、NSNotificationCenterオブジェクトに投稿することで、アプリの他の部分にメッセージを送信する際には、ユーザー情報辞書を含めることができます。)
- カーネル拡張機能の読み込み。App Sandbox ではカーネル拡張機能の読み込みは禁止されています。
- 「開く」および「保存」ダイアログにおけるユーザー入力のシミュレーション。アプリが「開く」または「保存」ダイアログをプログラムで操作してユーザー入力をシミュレートまたは変更する必要がある場合、そのアプリはサンドボックス化に適していません。
- 他のアプリの設定変更。App Sandboxでは、各アプリは自身の設定をコンテナ内に保存します。他のアプリの設定にはアクセスできません。
- 他のアプリの終了。App Sandboxでは、NSRunningApplicationクラスを使用して他のアプリを終了することはできません。
Appleはサンドボックスに対応していないアプリケーションのクラスを明確に予測しています。では、それらのアプリケーションはMountain Lionで動作しないのでしょうか?いいえ。実際には、サンドボックス化されていないアプリケーションの新バージョンはMac App Storeで公開できないということです。既存のサンドボックス化されていないアプリケーションのバグ修正は可能ですが、バグ修正ではない新バージョンやアップデートはMac App Storeで公開できません。
一部の人が言うように、これは大量の開発者がApp Storeから去る原因となるようなトレンドなのでしょうか?そんなわけはありません。繰り返しますが、サンドボックス内で動作しないアプリケーションの数は、全体の数と比較するとごくわずかです。Mac App Storeは彼らにとって最適な場所ではありません。Harry C. Marks氏が示唆したように、AppleはSmileのような承認済み開発者にサンドボックスを回避できる「特別な」ライセンスを与えるべきでしょうか?いいえ。セキュリティの本質は、例外は非常に稀であり、できれば発行されないことです。確かに、Smileのような優秀な人材のグループが開発した製品が、この影響を受けてしまったのは残念です。
しかし、それは必ず起こる運命だった。たとえ彼ら自身でなくても、他の誰かの手に渡る。セキュリティはもはやファイアウォールだけで実現するものではなく、あらゆる場所に存在している。
サンドボックスは、使えないパスワードやマルウェア対策スキャナなどを使うことなく、セキュリティ全体を向上させる上で重要な役割を果たします。サンドボックスは、仕組みや理由を知らない人を保護するものです。私の義父のような人のためにあるのです。義父は家づくりなどは天才的な才能を発揮しますが、自分のコンピューターのことは気にしたくありません。彼はただコンピューターがちゃんと動くことを望んでいるのです。もしそれが実現し、シマンテックやソフォスに二度とお金を払う必要がなくなれば、それで十分でしょう。
これはAppleがSmileに中指を立てているわけではありません。Appleが「Mac App Storeに出したいなら、サンドボックスをうまく扱わなければなりません。そうでなくてもMacには出せます。OS XはiOSではありません。でも、私たちのストアには出られません」と言っているのです。
Appleがこれを行っているのは、Macのブログやウェブサイトにアクセスしたり、この件についてコメントしたりすることなど決してない、膨大な数のMacユーザーのためだ。Appleは、ただMacが安全に動作し、安全であり、Mac App Storeが安全なアプリケーションの提供元であると信頼している大多数の顧客のために行っているのだ。残念ながら、セキュリティは苦痛を伴う。セキュリティを強化すればするほど、苦痛も増す。安全性への期待が高まるということは、Mac App Storeには決して掲載できない種類のアプリが存在することを意味する。
TextExpanderのようなエッジケースアプリケーションの場合、Mac App Storeはもはや互換性がありません。残念なことですが、「なんてこった、アプリが全部死んでる!」なんていうほどひどい状況ではありません。セキュリティの重要性が高まっている結果です。
[一部の画像はShutterstockより提供]