概要
- Memory Integrity Enforcement (MIE) はApple独自のハードウェアとOSセキュリティを統合した、業界初の常時オン型メモリ安全保護機構。
- iPhone 17 やiPhone Airなど、最新Appleデバイスに標準搭載。
- Enhanced Memory Tagging Extension (EMTE) を中核とし、バッファオーバーフローやuse-after-freeなどの脆弱性をハードウェアレベルで防御。
- Xcode を通じて全Apple開発者にもEMTEを提供、開発段階から安全性を強化。
- パフォーマンスを損なわず、高度な攻撃にも耐える新しいセキュリティ基盤。
Memory Integrity Enforcement (MIE)の全貌
- MIE は、Apple siliconのハードウェアと高度なOSセキュリティを融合した、これまでにないメモリ安全対策。
- 消費者向けOS史上最大のメモリ安全性向上 とAppleは位置付け。
- iPhoneでは大規模なマルウェア攻撃の成功例がなく、観測されるシステムレベルの攻撃は国家レベルのスパイウェアに限定。
- これらスパイウェアは数百万ドル規模のコストと高度な技術を要し、ターゲットはごく一部の個人。
- こうした攻撃手法の多くは メモリ安全性の脆弱性 を突いており、Appleは業界全体の課題と認識。
Appleのメモリ安全性強化の取り組み
- Swift :Appleが開発したメモリ安全なプログラミング言語。新規コードや重点コンポーネントの書き換えに活用。
- kalloc_type (iOS 15)と xzone malloc (iOS 17):用途ごとにメモリを割り当て、脆弱性悪用を困難化するセキュアアロケータ。
- Pointer Authentication Codes (PAC) :A12 Bionicから導入。コードフローの整合性を守るハードウェア機構。
- 2019年に Arm が発表した Memory Tagging Extension (MTE) を独自に評価・改良。
- オリジナルMTEの弱点を解消すべく、Armと協力し Enhanced MTE (EMTE) を策定(2022年)。
MIEの設計と防御メカニズム
- MIE は、セキュアアロケータ、EMTE(同期モード)、タグ秘匿性強化ポリシーを統合した総合防御策。
- 常時オン・同期型 で動作し、パフォーマンスを維持しつつ、カーネルなど主要攻撃面を防御。
- Xcode のEnhanced Security機能として、開発者にもEMTEを提供。
セキュアアロケータの役割
- kalloc_type, xzone malloc, WebKitのlibpas など、型情報を活用してメモリ配置を最適化。
- 攻撃者が意図的にメモリ配置をコントロールするのを困難化。
- ページ単位(iOSでは16KB)で保護を適用し、小規模な割り当てにはページレベルの防御を活用。
EMTEによる具体的な攻撃防御
- バッファオーバーフロー :隣接する割り当てに異なるタグを付与。異なるタグ領域への越境アクセスはハードウェアがブロック。
- use-after-free :解放後再割り当てでタグを変更。古いタグでのアクセスはブロックされ、OSがプロセス終了等の措置。
- 非タグ付きメモリ (グローバル変数等)へのアクセスも、タグ領域からはタグ確認を必須とし、攻撃困難化。
タグ秘匿性とサイドチャネル対策
- Tag Confidentiality Enforcement :EMTEタグの秘匿性を強化し、カーネルデータ構造やタグ情報の漏洩を防止。
- Secure Page Table Monitor でカーネルアロケータやタグストレージを保護。
- カーネルによるアプリ代理アクセスもタグチェックを徹底。
- 投機的実行攻撃 (Spectre等)への対策も実装。
- タグ値が投機的実行経路に影響しないようApple siliconを設計。
- タグ生成用疑似乱数生成器の頻繁な再シードで予測困難化。
- Spectre Variant 1(V1)にも対応し、タグ漏洩リスクを最小化。
まとめ
- Memory Integrity Enforcement は、Appleがハードウェア・ソフトウェア両面で全社的に取り組んだ新時代のメモリ安全機構。
- iPhone 17やiPhone Air などの新モデルで標準搭載され、開発者もXcodeで利用可能。
- 高度な攻撃にも耐える、常時オンのメモリ安全性 を実現し、今後の消費者向けOSの新しいセキュリティ基準を提示。