Android GPUセキュリティ強化:SELinuxによる攻撃対象領域の縮小
GoogleとArmがMali GPUのセキュリティ強化を実施。SELinuxポリシーでIOCTLアクセスを制限し、Androidデバイスの脆弱性リスクを低減。OEM向け実装ガイドも公開。
Android GPUセキュリティ強化:SELinuxによる攻撃対象領域の縮小
GoogleのAndroidセキュリティ・プライバシーチームは、Armと協力し、世界中の数十億台のAndroidデバイスに搭載されているMali GPUのセキュリティ強化策を実施しました。この取り組みは、**SELinux(Security-Enhanced Linux)ポリシーを活用して、高リスクのIOCTL(Input/Output Controls)**へのアクセスを制限し、GPUドライバーの攻撃対象領域を縮小することを目的としています。
GPUセキュリティが重要な理由
GPUはその複雑さとシステムへの高い特権アクセスにより、攻撃者の主要な標的となっています。2021年以降、Androidカーネルドライバーを狙ったエクスプロイトの大半はGPUを対象としており、特に**ユーザーモードドライバー(UMD)とカーネルモードドライバー(KMD)**のインターフェースが狙われています。このインターフェースの脆弱性を悪用した入力により、メモリ破壊やシステムの乗っ取りが発生する可能性があります。
技術的アプローチ:SELinuxによるGPU IOCTLの制限
Android Red TeamとArmは、Mali GPUのIOCTLを以下の3つのグループに分類しました:
- 非特権IOCTL – 通常の動作に必要で、すべてのアプリケーションからアクセス可能。
- インストルメンテーションIOCTL – デバッグやプロファイリングに使用され、
shellまたはdebuggableなアプリケーションに制限。 - 制限付きIOCTL – 非推奨または開発専用で、製品環境ではブロック。
これらの制限を適用するため、Googleは混乱を最小限に抑えるための段階的なSELinuxポリシーの展開を実施しました:
- オプトインポリシー – 新しい
gpu_hardenSELinux属性を使用し、特定のシステムアプリで初期テストを実施。 - オプトアウトポリシー – デフォルトで強化を適用し、開発者は以下の方法で制限を回避可能:
- ルート化されたデバイス
- アプリマニフェストでの
android:debuggable="true" - 永続的なSELinuxポリシー例外
OEMおよび開発者向け実装ガイド
Googleは、パートナーが同様の強化策を採用できるよう、ステップバイステップのガイドを提供しています。
1. プラットフォームレベルの強化マクロの活用
system/sepolicy/public/te_macrosに新たに追加されたマクロを使用し、デバイス固有のIOCTLフィルタリングを実現:
- 非特権IOCTLはすべてのアプリケーション(
appdomain)に許可。 - インストルメンテーションIOCTLはデバッグツール(
shell、runas_app)に制限。 - 非推奨IOCTLはターゲットSDKバージョンに基づきブロック。
2. デバイス固有のIOCTLリストの定義
OEMは、デバイスのSELinuxポリシーディレクトリにioctl_macrosファイルを作成し、IOCTLを分類(例:mali_production_ioctls、mali_instrumentation_ioctls)。
例:
define(`unpriv_gpu_ioctls', `0x0000, 0x0001, 0x0002')
define(`restricted_ioctls', `0x1110, 0x1111, 0x1112')
define(`instrumentation_gpu_ioctls', `0x2220, 0x2221, 0x2222')
Armの公式IOCTL分類は、r54p2 GPUドキュメントで確認できます。
3. GPUデバイスへのポリシー適用
デバイスのSELinuxポリシーディレクトリにgpu.teファイルを作成し、定義したIOCTLリストを使用してプラットフォームマクロを呼び出します。
4. テスト、改善、および適用
反復的なSELinuxポリシー開発のベストプラクティスに従い、拒否ログを監査して正規のアプリケーションが影響を受けないことを確認します。
影響と今後の展望
この強化策により、Mali GPUの攻撃対象領域が縮小され、ユーザーは既知および未知の脆弱性から保護されます。脆弱性を到達不可能にすることで、長期的なセキュリティメリットが提供されます。GoogleはOEMにこれらの対策の採用を推奨し、Androidエコシステム全体のGPUセキュリティを強化しています。
公式ドキュメント
謝辞
この取り組みに貢献したJeffrey Vander Stoep氏に感謝します。