macOSアプリサンドボックスがユーザーを保護する方法

2007年に導入され、2012年には必須となったサンドボックスは、macOSがハイジャックされたアプリが引き起こす損害を制限するために使用するツールです。Appleは「アプリサンドボックスはアプリへの攻撃を防ぐものではありませんが、成功した攻撃が引き起こす損害を最小限に抑えます。macOSアプリサンドボックスは、アプリケーションが引き起こす可能性のある問題を制限することでユーザーを保護します。」と述べています。
さらに読む: Windowsの安全を守るためのベストサンドボックスアプリ4選
macOSアプリサンドボックスとは?
各アプリには、自分専用の「サンドボックス」が与えられます。アプリケーションがサンドボックスの外に出ようとする場合、オペレーティングシステムに許可を求める必要があります。サンドボックスの設定に応じて、OSはアプリケーションのリクエストを拒否するか承認し、リクエストを完了するために必要な最小限の情報を提供します。

車を考えてみてください。運転手は、アンチロックブレーキ、エアバッグ、クラッシャブルゾーンなどの複数のセキュリティ機能によって保護されています。2007年、アプリサンドボックスが導入された時点では、同様のコンピュータシステムは存在しませんでした。導入プレゼンテーションが問うように、コンピュータのシートベルトはどこにあったのでしょうか?サンドボックスは、車が運転手を保護するようにユーザーを保護します:故障に対して損害軽減システムを備えています。悪意のある活動やコーディングエラーによって引き起こされた場合でも、損害は減少します。
サンドボックスはアプリができることを制限するため、開発者の自由を制限することがあります。サンドボックスアプリは動作が遅く、開発に時間がかかります。Macの巨大な能力のおかげで、サンドボックスの制限はさまざまなアプリの互換性に大きな影響を与える可能性があります。その結果、パワーユーザーはパフォーマンスや機能の問題のために、サンドボックスの外で動作するアプリを選ぶことがよくあります。
アプリサンドボックスはどのように機能するのか?
サンドボックスは最小権限の原則に基づいています。簡単に言えば、システムは必要なことを行うことができますが、それ以上はできません。システムの各部分を宣言された目標を達成することだけに制限することで、アプリがハイジャックされる可能性を減らします。たとえば、懐中電灯アプリが連絡先リストにアクセスする理由はありません。
アプリはサンドボックスの外に出ることができますが、オペレーティングシステムの許可が必要です。macOSの「保存と開く」ダイアログボックスを考えてみてください。アプリはサンドボックス内にあり、ハードドライブ上のファイルシステムリソースに直接アクセスすることはできません。たとえば、「~/Documents」で開いているパネルを描画することはできません。代わりに、アプリはNSOpenPanelおよびNSSavePanelクラスを使用してPowerbox APIにアクセスする必要があります。

アプリケーションは、Powerbox内で何が起こっているかを直接見ることはできません。開かれたファイルまたは保存されたファイルのみがアプリにアクセス可能です。このようにして、アプリは不必要なリスクなしに重要な機能を実行できます。
その機能は、権限(具体的にはcom.apple.security.files.user-selected.read-write)によって有効になります。アプリ開発者は、アプリが何をするかを宣言する権限を設定します。宣言された権限に基づいて、オペレーティングシステムはアプリケーションに適切に制限された機能レベルを許可します。
この思考プロセスは、アプリサンドボックスモデルとメカニズム全体の基盤となります:アプリは意図を宣言し、危険なことを達成するためにOSレベルのボスから許可を求めなければなりません。
サンドボックスアプリと非サンドボックスアプリ
2012年6月1日以降、Mac App Storeを通じて配布されるすべてのサードパーティアプリケーションはサンドボックス化されなければなりません。サンドボックスは広範なアプリ機能を許可しますが、Mac App Storeのアプリはしばしば非サンドボックスのコンポーネントよりも制限されていることがわかります。一部の開発者は、直接ダウンロード用の完全機能のアプリと、Mac App Store用の制限されたバージョンの2つのバージョンを維持しています。サンドボックス開発の複雑さが増すため、アプリケーションに新しい機能を追加することはより困難です - その機能がOSによって許可されている場合は別ですが。
サンドボックスアプリはMac App Store配布の利点を得ることができますが、それがどれほど価値があるかは想像できます。サンドボックスは、セキュリティ権限で拡張することもできます。アプリは自分自身でアクセシビリティ権限をオンにすることはできませんが、ユーザーにそうするように求めることができます。

どのアプリがサンドボックス化されているかを確認するには、アクティビティモニタを開き、列タイトルを右クリックして「サンドボックス」をウィンドウに追加します。

サンドボックス内に存在できないアプリもあります。実際、サンドボックスによってさまざまな貴重なユースケースが制限されています。サンドボックスはアプリ間の通信、観察、または変更を防ぎ、アプリケーションが相互作用できる方法を大幅に制限します。TextExpanderのようなシステム全体のショートカットは完全に禁止されています。なぜなら、そのレベルの機能はサンドボックスによって許可される可能性があるからです。
結論
約束されたものの、macOSアプリサンドボックスはうまく実行されませんでした。速度や機能の向上など、Macアプリのユニークな販売ポイントを制限しました。サンドボックスの外で動作するアプリはほぼ常により能力が高く、速いです。このパワーユーザーの視点から見ると、私が最もよく使用するアプリは非サンドボックスです。TextExpander、SnagIt、TotalFinderのようなアプリは、私の日常業務にとって重要です。同様の広範な回避を避けるために、将来のセキュリティシステムには柔軟性と力が必要であり、透明性とバランスを取る必要があります。
画像クレジット: Apple