Mac
 Computer >> コンピューター >  >> システム >> Mac

macOSのApp Sandboxはどうやってユーザーを守っているのか?仕組みと課題を解説

macOSのApp Sandboxはどうやってユーザーを守っているのか?仕組みと課題を解説

2007年に導入され、2012年から必須となったサンドボックス化(App Sandboxing)は、乗っ取られたアプリが引き起こしうる被害を最小限に抑えるためのmacOSのセキュリティ技術です。Appleによれば、「App Sandboxはアプリへの攻撃そのものを防ぐわけではありませんが、攻撃が成功した場合に生じうる被害を最小限に抑えます」。つまり、macOSのアプリサンドボックスは、アプリが引き起こせるトラブルの範囲を制限することで、ユーザーを保護しているのです。

macOSのApp Sandboxとは?

各アプリには、それぞれ専用の「サンドボックス(砂場)」と呼ばれる作業領域が割り当てられます。アプリがサンドボックスの外側へアクセスしたい場合は、オペレーティングシステム(OS)に許可を求める必要があります。OSはサンドボックスの設定に応じてリクエストを承認または拒否し、その際、処理の完了に必要な最低限の情報のみをアプリに渡します。

macOSのApp Sandboxはどうやってユーザーを守っているのか?仕組みと課題を解説

自動車にたとえてみましょう。ドライバーは、ABS(アンチロックブレーキ)、エアバッグ、クランプルゾーンなど、複数の安全装置によって守られています。2007年にApp Sandboxが登場した当時、コンピュータの世界にはこれらに相当する仕組みが存在しませんでした。発表時のプレゼンテーションでは、「コンピュータのシートベルトはどこにあるのか?」という問いが投げかけられました。サンドボックスは、自動車がドライバーを守るのと同じように、障害発生時に被害を軽減する仕組みとしてユーザーを保護します。原因が悪意ある攻撃であれ、コーディングミスであれ、被害は確実に減少するのです。

一方で、サンドボックスはアプリにできることを制限するため、開発者の自由度を狭める側面もあります。サンドボックス化されたアプリは動作が遅くなり、開発にも時間がかかります。Macの高い処理能力を考えると、サンドボックスの制限がさまざまなアプリの互換性に与える影響は大きく、その結果、パワーユーザーの多くは、パフォーマンスや機能面の理由から、サンドボックス外で動作するアプリを選ぶ傾向があります。

App Sandboxはどのように機能するのか?

サンドボックスは「最小権限の原則(Principle of Least Privilege)」に基づいています。これは簡単に言えば、システムは必要なことだけを行い、それ以上は何もしないという考え方です。システムの各部分を、宣言された目的の達成のみに限定することで、アプリがハイジャックされるリスクを低減できます。例えば、懐中電灯アプリが連絡先リストにアクセスする理由はどこにもありませんよね。

アプリはサンドボックスの外に出ることができますが、それはOSの許可がある場合に限られます。macOSの「開く/保存」ダイアログを例に挙げましょう。サンドボックス内のアプリは、ハードドライブ上のファイルシステムリソースに直接アクセスできません。たとえば、「~/Documents」を指定してオープンパネルを表示することもできません。代わりに、アプリはPowerbox APIに対してNSOpenPanelNSSavePanelクラスを使ってパネルへのアクセスを要求する必要があります。

macOSのApp Sandboxはどうやってユーザーを守っているのか?仕組みと課題を解説

アプリはPowerboxの内部で何が起きているかを直接見ることができません。アクセスできるのは、ユーザーが開いたファイルや保存したファイルだけです。この仕組みにより、アプリは不要なリスクを負うことなく、重要な機能を実行できるのです。

この機能はエンタイトルメント(具体的にはcom.apple.security.files.user-selected.read-write)によって実現されています。開発者はエンタイトルメントを設定することで、アプリが何をするのかを事前に宣言します。OSは宣言されたエンタイトルメントに基づき、適切に制限されたレベルの機能だけをアプリに許可します。

この発想こそが、App Sandboxのモデルとメカニズム全体の根幹を成しています。アプリは自らの意図を宣言し、危険が伴う操作を行う際には、OSレベルの「上司」に許可を求めなければならないのです。

サンドボックス化されたアプリと非サンドボックスアプリの違い

2012年6月1日以降、Mac App Storeで配信されるすべてのサードパーティ製アプリは、サンドボックス化が必須となっています。サンドボックスでも幅広いアプリ機能は許容されますが、実際にはMac App Storeのアプリは非サンドボックス版よりも機能が制限されがちです。一部の開発者は、フル機能の直接ダウンロード版と、機能を絞ったMac App Store版の2つのバージョンを併用して管理しているほどです。サンドボックス開発は複雑さが増すため、新機能の追加も困難になります。仮にその機能がOSによって許可されていたとしても、です。

サンドボックス化されたアプリは、Mac App Storeでの配信というメリットを得られますが、その価値がどれほどのものかは読者の皆さんにお任せしましょう。また、サンドボックスはセキュリティ権限によって拡張することも可能です。アプリ自身がアクセシビリティ権限をオンにすることはできませんが、ユーザーに対して許可を求めることはできます。

macOSのApp Sandboxはどうやってユーザーを守っているのか?仕組みと課題を解説

自分のMacでどのアプリがサンドボックス化されているかを確認するには、「アクティビティモニタ」を開き、列見出しを右クリックして「サンドボックス」を表示項目に追加します。

macOSのApp Sandboxはどうやってユーザーを守っているのか?仕組みと課題を解説

そもそも、サンドボックスの中では決して実現できないアプリも存在します。実際、サンドボックス化によって阻まれている価値あるユースケースは少なくありません。サンドボックスはアプリ間の通信・監視・改変を防ぐため、アプリ同士が連携できる範囲が大幅に制限されます。TextExpanderのようなシステム全体で動作するショートカットツールは完全に禁止されており、あのレベルの機能はサンドボックスでは許可されないのです。

まとめ

有望な技術ではあるものの、macOSのアプリサンドボックスは十分に優れた形で実装されたとは言い難い面があります。速度や拡張機能といった、Macアプリならではの強みが損なわれたのです。サンドボックス外で動作するアプリは、ほぼ常に高機能かつ高速です。このパワーユーザーの視点から言えば、私が最も使用頻度の高いアプリはすべて非サンドボックス型です。TextExpander、SnagIt、TotalFinderといったアプリは、日々の仕事に欠かせない存在となっています。今後のセキュリティシステムが同様の広範な回避を招かないためには、柔軟性とパワーを、透明性とバランスよく両立させることが求められるでしょう。

  1. Androidでアプリを非表示にする方法|無効化からロックアプリ活用まで徹底解説

    Androidスマートフォンでアプリを非表示にしたい理由は人それぞれですが、多くの場合、機密情報やプライベートなデータを第三者の目から守ることが目的です。スマートフォンを他人に渡した瞬間、銀行アプリの情報や連絡先、SNSアカウントなどが簡単に見られてしまう可能性があります。勝手に投稿されたり、不正に買い物をされたりするリスクもあるでしょう。スマートフォンが個人の「もう一つの身分証」となりつつある今、アプリの非表示機能はプライバシー保護の重要な手段となっています。 この記事では、Androidでアプリを非表示にして、大切なデータを安全に保つための具体的な方法を詳しく解説します。 Androidで

  2. Androidスマホでアプリを非表示にする方法【メーカー別・完全ガイド】

    スマートフォンは、私たちが所有する最も重要な持ち物の一つとなりました。友人や家族との連絡はもちろん、金融サービスの中核として、さらには健康に関する大切なデータの保存先としても活躍しています。 そのため、デバイスにロックをかけて機密情報を守っている人がほとんどでしょう。しかし、子どもやパートナー、友人に調べ物や写真撮影のためにスマホを貸すことがあるなら、これらのデータが他人の目に触れるリスクがあります。 幸い、そんな事態を防ぐ簡単な方法があります。それが「アプリの非表示」です。ここでは、プライベートな情報を手軽に守る方法をご紹介します。 Androidの設定からアプリを非表示にする 多く