メーカーが追加した層を狙う
あるセキュリティー研究者が、スマートフォンメーカーが追加したコードとセキュリティーポリシーに焦点を当て、特権のないAndroidアプリケーションからrootアクセスを取得する手法を詳しく説明した。「OEMpocalypse」と題したシリーズの第1弾として公表されたこの研究は、サムスン、シャオミ、および互いに関連するOPPO、OnePlus、realmeの各系列の端末を対象とする3つの攻撃チェーンを説明している。
サードパーティー製Androidアプリケーションは通常、untrusted_appと呼ばれる制限されたセキュリティードメイン内で、それぞれ別のユーザーIDの下で動作する。標準的なUnixのアクセス権、AndroidのSELinuxによる強制アクセス制御、システムコールのフィルタリングが組み合わさって、アプリケーションからアクセスできるカーネルのインターフェースを制限している。この研究者の手法は、その境界内にあるメーカー固有のコンポーネントの弱点を探し、必要に応じて別のサンドボックス脱出を利用して、脆弱なドライバーへアクセスするものだ。
この手法の中心となるのは、OEMのカーネルドライバーに存在する、ページの解放後使用(use-after-free)の脆弱性だ。この種のメモリー安全性のバグでは、カーネルが物理メモリーページを解放した後も、そのページへの参照が有効なまま残る。攻撃者が、解放されたページを置き換える内容を確実に制御できれば、この宙に浮いた参照が権限昇格への経路となり得る。公開された手法は、すべての端末に共通する単一の汎用的なLinuxカーネルのバグに依存するのではなく、この基本的な攻撃操作をメーカー固有のアクセス経路と組み合わせている。
研究者によると、構築した攻撃チェーンは、サムスンGalaxy S23からS26までのフラッグシップモデルと近年のZシリーズ、シャオミの幅広いミッドレンジおよびフラッグシップ端末、OPPO、OnePlus、realmeが販売する近年のフラッグシップ端末を対象としている。実演では、ブートローダーがロックされたGalaxy S26 Ultraでサムスン向けの攻撃チェーンが動作する様子が示された。実際に影響を受ける範囲はモデル、ソフトウェアのリリース、設定によって異なり得るため、こうした対応範囲の主張を、すべての端末が現在の状態で依然として脆弱であることの証拠と解釈すべきではない。
移植性と普遍性の違い
このプロジェクトは、エクスプロイトの開発を、信頼性、移植性、普遍性のバランスを取る作業として位置づけている。共通のLinuxやAndroid Common Kernelのコードにある脆弱性は、多くのブランドにまたがって存在する可能性があるが、それを安定したrootアクセスの取得につなげるには、カーネルのバージョン、ベンダーによる防御強化、ハードウェアの違いに応じた大幅な調整が必要となる場合がある。研究で扱う近年のAndroidスマートフォンのカーネルブランチは5.15から6.12に及び、メモリー容量、プロセッサー数、メーカーのパッチも、いずれも脆弱性の悪用に影響し得る。
OEM固有のバグは、概念上の適用範囲こそ狭いものの、より制御しやすいメモリー操作の基本手段を提供することがあり、メーカーのコードを再利用する製品ライン間で応用できる場合もある。この研究は、同一の攻撃コードがすべての端末で変更なしに動作すると主張するのではなく、同じ全体的な攻略手順を3回適用している。
今回の開示は、脆弱性が存在していてもAndroidの多層的なサンドボックスに価値がある理由も浮き彫りにしている。攻撃者は、特権を要するカーネル機能に到達するまでに、複数の弱点をつなぎ合わせ、端末固有のポリシーをかいくぐらなければならない。一方で、そうした層の下位や並列の位置に追加されたコードは、Androidのエコシステム全体で一様ではない攻撃対象領域を生み出し得る。
第1弾は、研究戦略と汎用カーネルを狙う代替手法との比較に焦点を当てている。今後の投稿では、個々の攻撃チェーンの技術的な詳細が示される見通しだ。ベンダーの注意喚起とパッチの適用状況が明らかになるまでは、利用者は端末のソフトウェアを最新に保ち、今回の実演を、完全に更新された特定のスマートフォンが任意のアプリケーションによって侵害され得ることの証拠と見なさないようにすべきだ。



