macOS サンドボックス脱出の新時代: 見過ごされてきた攻撃面と 10 件以上の新たな脆弱性の発見
- macOS システムでは、ほとんどのプロセスが制限されたサンドボックス環境で実行される。攻撃者がリモートコード実行(RCE)を取得しても、その能力は制限される。次の段階は、サンドボックスを回避して、より広いファイルアクセス権を得ることだ。
- サンドボックス脱出脆弱性を見つけるために既存の問題を検討した結果、重要な 見過ごされてきた攻撃面 と新しい攻撃手法を発見した。これにより、複数の新たなサンドボックス脱出脆弱性 を発見した: CVE-2023-27944, CVE-2023-32414, CVE-2023-32404, CVE-2023-41077, CVE-2023-42961, CVE-2024-27864, CVE-2023-42977 など。
macOS サンドボックスについて
アプリサンドボックス
- Mac AppStore の要件に従い、ほとんどのアプリケーションは アプリサンドボックス 制限のもとで実行される。サンドボックス化されたアプリケーションは特定の権限を持つ必要があり、サンドボックスに入ると コンテナ化 されてファイル操作が制限される。
- サンドボックスアプリケーションが作成したファイルは、デフォルトで 隔離 されており、サンドボックスアプリはこの属性を削除できない。
- サンドボックスのないアプリケーションは、すべてのユーザーデータとシステムリソースに無制限にアクセスできる。一方、サンドボックス制限のあるアプリケーションは、制限されたアクセスしかできない。
- fork された 子プロセスは親プロセスのサンドボックス制限を 継承 するが、
LaunchService.framework を通じて開始されたプロセスは制限を継承しない。
サービスサンドボックス
- ほとんどの Apple デーモンサービス は サービスサンドボックス コンテキストで実行される。これらは、システム上の場所に定義されたサンドボックスプロファイルによって制限される。
- サービスサンドボックスは通常 コンテナ化 されず、ファイルもデフォルトでは 隔離されない。
攻撃面
既存の一般的な方法
LaunchService.framework を介した攻撃
- システムの LaunchService フレームワークを介して非サンドボックスアプリケーションを攻撃する方法がある。たとえば、CVE-2021-30864 では、システムの非サンドボックスアプリケーション Terminal.app の $HOME 環境変数を操作できる。
- 新たな非サンドボックスアプリケーションをドロップして実行することはできるが、新たにドロップされたアプリケーションは 隔離 されるため実行が防止される。
利用可能な Mach サービスへの攻撃
- アプリサンドボックスプロファイルに列挙された利用可能な Mach サービスを攻撃する方法がある。システム内のすべての Mach サービス情報は
/System/Library/xpc/launchd.plist ファイルに保存されている。
新たに見過ごされていた方法
- PID ドメイン に存在する XPC サービスは、見過ごされていたサービスである。これらは要求に応じてアプリケーションによって起動され、要求元のアプリケーションが終了すると停止する。
- PID ドメイン の XPC サービスは、サンドボックスアプリケーションから呼び出すことができ、追加の権限チェックやサンドボックスチェックもない。
新たな脆弱性とエクスプロイト
Beta-No-CVE-1
- この脆弱性は macOS Sonoma ベータ版にのみ影響する。
- 脆弱性は XPC サービス
/System/Library/PrivateFrameworks/StorageKit.framework/XPCServices/storagekitfsrunner.xpc に存在する。
- このサービスはサンドボックス制限なしで実行でき、任意のシステムコマンドを実行できる。
Beta-No-CVE-2
- この脆弱性もベータ専用ソフトウェアにのみ影響する。
- 脆弱性は XPC サービス
/System/Library/PrivateFrameworks/AudioAnalyticsInternal.framework/XPCServices/AudioAnalyticsHelperService.xpc に存在する。
- 任意のパスを圧縮でき、生成された zip ファイルは隔離されない。
CVE-2023-27944
- 脆弱性は XPC サービス
/System/Library/PrivateFrameworks/TrialServer.framework/XPCServices/TrialArchivingService.xpc に存在する。
- このサービスは サービスサンドボックス に入るが、ドロップされたファイルは隔離されない。
CVE-2023-32414
- 脆弱性は XPC サービス
/System/Library/PrivateFrameworks/DesktopServicesPriv.framework/XPCServices/ArchiveService.xpc に存在する。
- このサービスはサービスサンドボックスに入るが、ドロップされたファイルは隔離されない。
CVE-2023-32404
- 脆弱性は XPC サービス
/System/Library/PrivateFrameworks/WorkflowKit.framework/XPCServices/ShortcutsFileAccessHelper.xpc に存在する。
- このサービスはサンドボックス制限なしで実行でき、フルディスクアクセス のための特別な TCC 権限を持つ。
CVE-2023-41077
- 脆弱性は XPC サービス
/System/Library/Frameworks/ImageCaptureCore.framework/XPCServices/mscamerad-xpc.xpc に存在する。
- このサービスはサンドボックス制限なしで実行でき、写真 および リムーバブルボリューム に直接アクセスできる特別な TCC 権限を持つ。
1件のコメント
Hacker News のコメント
XPC サービスを個別にパッチするのは奇妙で、これはサンドボックス自体の設計上の問題に見える。多くの XPC サービスがサンドボックス化されたアプリからアクセス可能な理由に疑問を感じる
sandbox-execがそれを処理しているようだセキュリティフレームワークが新たな問題を生み出しており、セキュリティがより強化されたとは感じない
XPC 関連の欠陥は今後も見つかる可能性が高く、Apple がサービス強化のアプローチを再設計しない限り、CVE は継続的に発生すると予想される
サンドボックスは好きでもあり嫌いでもある
macOS は細かな権限管理のために設計されておらず、既存の Mac OS や NeXTSTEP の技術の上に後付けできるものではない
iOS にも脆弱性が存在し、アクティブなデバイスは約20億台ある
PID ドメインの XPC サービスはサンドボックスの制限を回避する巧妙な方法であり、Apple のパッチはその場しのぎに見える
サンドボックスを突破した場合、サンドボックスのない状態に戻るのか、それともより高い権限状態に移行するのか気になる