リサーチ重大

Android GPUセキュリティ強化:SELinuxによる攻撃対象領域の縮小

1分で読めますソース: Google Security Blog

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ポリシーの展開を実施しました:

  1. オプトインポリシー – 新しいgpu_harden SELinux属性を使用し、特定のシステムアプリで初期テストを実施。
  2. オプトアウトポリシー – デフォルトで強化を適用し、開発者は以下の方法で制限を回避可能:
    • ルート化されたデバイス
    • アプリマニフェストでのandroid:debuggable="true"
    • 永続的なSELinuxポリシー例外

OEMおよび開発者向け実装ガイド

Googleは、パートナーが同様の強化策を採用できるよう、ステップバイステップのガイドを提供しています。

1. プラットフォームレベルの強化マクロの活用

system/sepolicy/public/te_macrosに新たに追加されたマクロを使用し、デバイス固有のIOCTLフィルタリングを実現:

  • 非特権IOCTLはすべてのアプリケーション(appdomain)に許可。
  • インストルメンテーションIOCTLはデバッグツール(shellrunas_app)に制限。
  • 非推奨IOCTLはターゲットSDKバージョンに基づきブロック。

2. デバイス固有のIOCTLリストの定義

OEMは、デバイスのSELinuxポリシーディレクトリにioctl_macrosファイルを作成し、IOCTLを分類(例:mali_production_ioctlsmali_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氏に感謝します。

共有

TwitterLinkedIn