検索
ニュース

6年間でAndroidにおけるメモリ安全性の脆弱性を76%から24%まで低減 Googleが語る「Safe Coding」のアプローチと教訓とは「メモリ安全でない既存のコードを全て書き直す必要はない」

Googleは公式ブログで、2019年から2024年までの6年間で、Androidにおけるメモリ安全性の脆弱性を76%から24%まで低減できたと明らかにした。Googleはソフトウェア開発における「Safe Coding」のアプローチの重要性やメリットを解説している。

Share
Tweet
LINE
Hatena

 Googleは2024年9月25日(米国時間)に公式ブログで、モバイルOS「Android」におけるメモリ安全性の脆弱(ぜいじゃく)性を排除する取り組みにより、2019年から2024年までの6年間で、メモリ安全性の脆弱性を76%から24%まで低減できたと明らかにした。

 Googleは「メモリ安全性の脆弱性は、ソフトウェアセキュリティにおける大きな脅威であり続けている。この脆弱性を排除し、高度な信頼性を持つソフトウェアを構築するための道筋は、セキュリティ・バイ・デザインに基づいたアプローチである『Safe Coding』にある」と述べている。

AndroidにおけるSafe Codingの効果とは?

 Androidオープンソースプロジェクト(AOSP)は、メモリ安全性の脆弱性を管理するコストや複雑さの増加を受け、2019年ごろからAndroidの新規開発をメモリ安全な言語に移行するSafe Codingのアプローチを開始した。

 Androidの大部分のコードはメモリ安全でないものの、メモリ安全性の脆弱性は大幅かつ継続的に減少している。Googleによると、2019年時点で、メモリ安全性の脆弱性はAndroidにおける脆弱性の76%を占めていたが、2024年には24%となる見込みであり、業界平均の70%を大きく下回るという。

AOSPの2019〜2024年におけるメモリ安全なコード量とメモリ安全でないコード量の比較(提供:Google)
Androidオープンソースプロジェクトの2019〜2024年におけるメモリ安全なコード量とメモリ安全でないコード量の比較(提供:Google)
2019〜2024年におけるメモリ安全性の脆弱性数の推移、2024年は予測値(提供:Google)
2019〜2024年におけるメモリ安全性の脆弱性数の推移、2024年は予測値(提供:Google)

 さらにGoogleはブログ記事で、2022年にUsenix Security誌で発表された「脆弱性の大部分が新しいコードや最近修正されたコードに存在する」とする論文を引用し、これは2021年時点でのGoogleの分析を裏付ける内容であり、一般化する内容であり、次の2つの重要な点が分かると指摘している。

  • 問題は圧倒的に新しいコードにあり、ソフトウェア開発の方法を根本的に変える必要がある
  • コードは時間とともに成熟し、指数関数的に安全になっていく。そのため、コードが古くなるにつれて書き直しなどの投資に対するリターンは次第に減少する

Safe Codingのメリット

 Googleによると、Safe Codingは、言語機能、静的解析、API設計を通じて「セキュリティの不変条件」を開発プラットフォームに直接組み込むものであり、脆弱性を誤って導入してしまうリスクをなくし、コードベースの拡大にも継続的かつ確実に対応できるものだという。

 「過去数十年間にわたって業界はメモリ安全性の脆弱性に取り組んできた。だが、従来のプロアクティブなパッチ適用やエクスプロイト緩和の取り組みはいずれも完全な解決策には至っていない。メモリ安全な言語への移行は、単なるテクノロジーの変化にとどまらず、セキュリティのアプローチを根本的に変えるものだ。この移行の基盤となるのがSafe Codingだ」と、Googleは述べている。

 Googleは、Safe Codingに取り組むことで、次のようなメリットにもつながるとしている。

  • 「軍拡競争」の打破:防御側が自らのコストを上げることで攻撃者側のコストも上げようとする果てしない競争の代わりに、Safe Codingは、安全なソフトウェアを最初から積極的に構築することで、このサイクルを打破できる
  • メモリ安全性の一般化:各システムやアプリケーションのリスクに応じてセキュリティ対策を細かく調整し、そのリスクが変わるたびに再評価して別々の対策を実施する代わりに、Safe Codingはメモリ安全な言語を活用して、セキュリティの基本レベルを一律に高めることができる。これにより、脆弱性の数を全体的に低減できる。特にRustのような最新のメモリ安全な言語は、他の種類のバグ対策にも応用できる
  • 生産性の向上:コードの正確性と開発者の生産性を向上させ、コードを保存する前にバグを見つけられるようになる。そのためバグの発生を早期に予防でき、緊急でコードを修正、取り消すロールバック回数も低減できる。Androidチームの場合、Rustでの変更によるロールバック率がC++と比較して半分以下であることを確認している

Safe Codingの教訓と今後の取り組み

 Googleは、引用した論文やAndroidでの成果を踏まえ、「既存のメモリ安全でないコードを全て破棄したり、書き直したりする必要がないことは明らかである」とした上で、メモリ安全性を向上させるために、RustやC++、RustやKotlin間の相互運用性の向上に投資を集中させているという。

 また、Safe Codingによりメモリ安全性の脆弱性が低減する中で、従来のエクスプロイト緩和機能やプロアクティブな検出の役割の変化を、次のように予測している。

  • プロアクティブな緩和策のより選択的な使用:メモリ安全なコードへの移行に伴い、エクスプロイト緩和機能への依存度が下がり、より安全なソフトウェアになるだけでなく、より効率的なソフトウェアになるだろう
  • プロアクティブ検知の使用頻度は減るが、効果は高まる:ファジングなどのプロアクティブな検出アプローチへの依存は減少する代わりに、より小さな、カプセル化されたコードスニペットに対して、包括的なカバレッジを達成することが容易になるため、有効性は向上するだろう

Copyright © ITmedia, Inc. All Rights Reserved.

Security & Trust 記事ランキング

  1. 1年前と比べて1Tbpsを超えるDDoS攻撃が1885%増加、今すぐできる対策は? Cloudflare
  2. 米ホワイトハウス、“懸念国”への半導体輸出、AI規制を発表 日本含む18カ国は規制対象外
  3. 終わらせましょう。複雑過ぎるKubernetes/クラウドネイティブが生む心理的安全性の低下を――無料でクラウドセキュリティの勘所が分かる130ページの電子書籍
  4. 「SMSは認証に使わないで」 米CISA、モバイル通信を保護する8つのベストプラクティスを公開
  5. 「Appleの暗号化アルゴリズム」を盗用し、2カ月以上検出されなかったステルス型マルウェアの正体とは
  6. Google Cloud、2025年のサイバーセキュリティ予測を発表 AIがサイバー攻撃にもたらす影響とは?
  7. 経営層の約7割が「セキュリティ対策は十分」一方で6割以上がインシデントを経験、1位の要因は?
  8. “ゼロトラスト”とトラスト(信頼性)ゼロを分かつものとは――情報セキュリティ啓発アニメ「こうしす!」監督が中小企業目線で語る
  9. 2025年に押さえるべきセキュリティの重要論点をガートナーが発表 新しいリスク、脅威、環境の変化、法規制などの動きを把握する指標に使える
  10. よく聞く「複雑化するサイバー攻撃」は具体的にどう複雑なのか? 一例を医療系企業のランサム事例とともに解説
ページトップに戻る