AndroidがRust導入を本格化で安全性バグ比率が20%未満に

Googleが公開した最新のSecurity Blogでは、AndroidでのRust採用が大きな成果を示したと報じられています。2025年のデータでは、メモリ安全性に関わる脆弱性が初めて全体の20パーセント未満となり、開発効率も改善したことが確認されています。
この記事では、公式発表に基づきRust導入の効果と拡大状況を整理します。
AndroidにおけるRust採用の概要
2025年データが示すメモリ安全性の改善
Androidの2025年データでは、メモリ安全性に関する脆弱性割合が初めて20パーセント未満になったとされています。Rust導入後のコード領域を中心に、脆弱性密度の減少が継続している点が特徴です。
GoogleはRustコードの脆弱性密度がCプラスプラスと比較して大幅に低いと示しています。特に5百万行のRustコードに対し、確認された潜在的な問題は1件のみで、未リリースの段階で修正されています。
同時にメモリ安全性に関する修正作業の削減が進んでおり、コードベース全体の品質管理負荷が軽くなっています。これにより開発フェーズでの安全性確保が効率的に進む構造が形成されつつあるとされています。
| 比較項目 | Rust | C/C++ |
|---|---|---|
| 脆弱性密度 | 約0.2件/MLOC | 約1000件/MLOC |
| メモリ安全性問題の割合 | 20%未満 | 歴史的に高水準 |
これらの指標はAndroidのコード管理全体に変化をもたらしており、メモリ安全性の確保を基盤にした改善プロセスが続いているとされています。
Rust採用によるレビュー効率と安定性の可視化
Rust導入後、同規模のコード変更におけるレビュー時間がCプラスプラスと比較して短くなったと示されています。2023年以降のデータでは、Rust変更のレビュー滞留が少ない傾向が続いています。
Googleは、レビューに必要な手戻りがRustの方が減少している点をデータで示しています。同じ機能量の変更でも修正回数が少なく、開発者による再投稿の負担が軽い状態が継続しています。
さらに、変更のロールバック率はRustの方が低いとされています。中規模から大規模の変更ではCプラスプラスと比較して約4倍低い水準が示されており、この傾向は2024年以降も変わっていません。
| 項目 | Rust変更 | C++変更 |
|---|---|---|
| レビュー時間 | 約25%短縮 | 基準比 |
| 修正要求回数 | 約20%少ない | 基準比 |
| ロールバック率 | かなり低い | 4倍程度高い |
レビュー効率の改善と安定性の高さが並行して進んだ点は、開発体制に直接的な変化を与えています。これにより安全性と開発速度を同時に高める運用が可能な状態が示されているとされています。
Rust活用拡大の最新動向
AndroidカーネルにおけるRust導入の進展
Androidの6.12系LinuxカーネルではRustサポートが有効化され、初のRust製ドライバも実装されました。プラットフォーム中核でRust活用が本格的に広がる転換点です。
GoogleはArmやCollaboraと連携し、GPU向けのRustベースドライバ開発を進めています。従来のC++と異なり、安全性確保の仕組みを言語仕様として組み込める点が大きな特徴です。
カーネルは高権限で動作する層のため、メモリ安全性の確保が非常に重要になります。Rust採用により、中核層での脆弱性リスクを抑えやすくなると評価されています。
- Linux 6.12でRustサポートが有効化
- Rust製カーネルドライバの提供開始
- Arm・CollaboraとGPU関連の共同開発を進行
これらの動向はAndroid基盤の安全性強化に直結し、今後の拡大方針を示すものと位置づけられています。
ファームウェア領域でのRust採用と展開拡大
ファームウェアは高権限と制約の強さから脆弱性影響が大きい領域です。Googleは複数のファームウェアでRustをすでに導入していると説明しており、その適用は継続的に進んでいます。
特にArmと共同開発しているRusted Firmware Aが公開され、学習用資料やトレーニングが整備されています。高権限処理の安全性強化を目的として、Rustが標準的な実装手段になりつつあります。
ファームウェアの脆弱性は影響範囲が広く対策も困難です。そのためRustで安全性を確保する取り組みは複数の開発ラインで推進されており、高権限層での防御基盤としてRustが選択されている点が特徴とされています。
| 領域 | Rust適用状況 |
|---|---|
| ブート関連FW | Rust実装が展開済み |
| Arm関連FW | 共同開発が継続 |
| 汎用FW | トレーニング資料が提供 |
これらの活動は安全性向上策の一環として整理されており、Android全体のメモリ安全性改善にも関連づけて説明されています。
主要アプリケーション領域でのRust採用拡大
Android周辺アプリでもRustが採用されており、Google Play ServicesのNearby PresenceやGoogle MessagesのMLS対応でRust実装が使用されています。
ChromiumではPNGやJSONなどの解析処理がRustベースに置き換えられています。Webからの入力処理は脆弱性リスクが高く、Rustの安全性が利用されています。
これらのアプリは安全性が重視される領域であり、Rust化は処理の安全性向上を目的として説明されています。特に外部入力を扱う処理でRustが効果的とされる観点が示されている点が特徴です。
- Nearby Presence:Rust実装で提供中
- Google Messages:MLS実装がRustで提供予定
- Chromium:解析処理のRust置き換えが進行
アプリ領域でもRustが広く使われ始めており、安全性向上の取り組みが多層的に展開されています。
AndroidにおけるRustの安全性検証事例
未公開段階で発見されたCrabbyAVIFの潜在バグ
AndroidではCrabbyAVIFのunsafe領域で線形バッファオーバーフローが起こりうる状態が確認されています。一般公開前に修正され、製品版には影響しない形で処理されています。
この潜在バグはRustであってもunsafe部分では問題が発生し得る事例として扱われています。Googleは検出後すぐにCVE識別子を割り当て、開発ライン全体で追跡可能な状態として管理しています。
開発段階での検知体制が機能していた点に加え、脆弱性がリリース前に特定されたことはプロセスの有効性を示すと説明されています。未公開状態で修正されたため、影響は内部に限定された扱いです。
Scudoハードニングによる防御動作の確認
AndroidのScudoアロケータはガードページを配置し、オーバーフローを静的なクラッシュへ変換する設計が取られています。今回の潜在バグでも攻撃可能性が排除された状態で検出されています。
この仕組みはガードページを用いて異常を顕在化させる方式で、メモリ破壊を静的異常として扱える点が特徴です。開発工程では原因の特定が容易になり、再現性も確保される構造になっています。
| 要素 | Scudoの動作 |
|---|---|
| ガードページ | オーバーフローを即時クラッシュ化 |
| 検知方向 | 静的な異常として扱う |
| 効果 | 攻撃可能性を抑制し検出性を向上 |
クラッシュログの判別精度は今回の例を通じて改善されています。ガードページが脆弱性抑止に働いた点は、防御層が実際にリスク低減へ寄与した事例として扱われています。
unsafe Rustの運用改善に向けた教育強化
Android開発ではハードウェアアクセスなど特権操作でunsafe Rustが利用されています。Googleは開発者向けの教育講座にunsafeコード専用の深掘り内容を追加し、理解の底上げを図っています。
講座では未定義動作や安全境界の整理、意図を共有するためのコメント付与などが扱われる構成になっています。Rustの安全抽象とunsafe領域の扱いを分離して理解する流れが設けられています。
- 安全境界の明確化
- 抽象化によるunsafeの閉じ込め手法
- 意図共有のためのコメント付与
この教育強化はunsafe操作時の誤りを減らす目的で進められています。安全性確保のための人為的ミス低減が開発段階での重要要素として整理されています。







