Google DeepMindは、ソフトウェアの重大なセキュリティ脆弱性を自律的に発見・修正するAIエージェント「CodeMender」を導入した。
このシステムは過去6か月間で既存のオープンソースプロジェクトに72件のセキュリティ修正を提供している。CodeMenderはGoogleの最新Geminiモデル群の高度な推論能力を活用し、静的・動的解析、差分テスト、ファジング、SMTソルバーなどのツール群を使用する。
実例として、画像圧縮ライブラリlibwebpに-fbounds-safetyアノテーションを追加し、CVE-2023-4863として追跡された脆弱性を含むバッファオーバーフローを悪用不能にした。
現時点では全パッチを人間の研究者がレビューしており、今後数か月以内に技術論文を公開する予定である。
From: Google’s new AI agent rewrites code to automate vulnerability fixes
【編集部解説】
Google DeepMindによる今回の発表は、AIが「脆弱性を発見する側」から「脆弱性を修正する側」へと役割を拡張する大きな転換点を示しています。
従来、GoogleはOSS-Fuzzなどの技術でゼロデイ脆弱性の発見に成功してきました。しかし、AIによる発見速度が向上するほど、人間の開発者が修正に追われるという新たなボトルネックが生まれていました。CodeMenderはこの「発見と修正のギャップ」を埋めるために開発されたのです。
このシステムが注目すべき点は、単なるリアクティブな対応だけでなく、プロアクティブな防御を実現している点にあります。具体的には、新たに発見された脆弱性への即時対応と、既存コードを書き換えて脆弱性クラス全体を根絶する予防的アプローチの両方を備えています。
libwebpへの適用事例は、この技術の実用性を如実に示しています。CVE-2023-4863として追跡されたlibwebpの脆弱性は、2023年にNSOグループによるゼロクリックiOSエクスプロイト「BLASTPASS」で実際に悪用されました。ユーザーが何もクリックしなくても、悪意のあるWebP画像を表示するだけでiPhoneが侵害される深刻な脆弱性でした。CodeMenderが追加した-fbounds-safetyアノテーションにより、このような攻撃が技術的に不可能になります。
興味深いのは、CodeMenderが最大450万行のコードを持つプロジェクトにも対応している点です。大規模なコードベースでは、人間が全体を把握し修正することは現実的ではありません。メモリ安全性に関する2024年のCISA調査によれば、重要なオープンソースプロジェクトの52%がメモリ非安全言語を含んでおり、全コード行の55%がそうした言語で書かれています。
現時点での慎重な展開姿勢も重要です。生成された全パッチは人間の研究者によるレビューを経てから提出されており、品質と信頼性を最優先しています。AIによる自動修正が誤ったパッチを適用すれば、新たな脆弱性やシステムの機能不全を引き起こすリスクがあるためです。
将来的には、すべての開発者が利用可能な公開ツールとして提供される予定です。これにより、オープンソースエコシステム全体のセキュリティ水準が底上げされる可能性があります。ソフトウェアセキュリティの民主化とも言える動きです。
【用語解説】
CodeMender
Google DeepMindが開発した、ソフトウェアコードのセキュリティ脆弱性を自律的に発見・修正するAIエージェント。Gemini Deep Thinkモデルを基盤とし、静的・動的解析などの複数ツールを活用して、新規脆弱性の即時修正と既存コードの予防的書き換えの両方を実行する。
ゼロデイ脆弱性
ソフトウェアの開発者やセキュリティコミュニティがまだ認識していない、または修正パッチが提供されていない脆弱性。攻撃者が発見した場合、防御手段がない状態で悪用される可能性があり、極めて危険性が高い。
ファジング
ソフトウェアに大量のランダムまたは異常なデータを入力し、クラッシュやメモリリークなどの異常動作を引き起こすことで脆弱性を発見する自動テスト手法。従来から広く使われているセキュリティテスト技術である。
バッファオーバーフロー
プログラムがメモリ上の確保された領域を超えてデータを書き込んでしまう脆弱性。攻撃者が任意のコードを実行したり、システムを制御したりする手段として悪用される代表的なセキュリティ欠陥である。
SMTソルバー
充足可能性モジュロ理論(Satisfiability Modulo Theories)を解くツール。プログラムの論理的性質を数学的に検証し、特定の条件下でバグや脆弱性が発生するかを判定するために使用される。
静的解析・動的解析
静的解析はプログラムを実行せずにソースコードを調査する手法、動的解析は実際にプログラムを実行しながら動作を監視する手法。両者を組み合わせることで、より包括的なコード検証が可能になる。
マルチエージェントアーキテクチャ
複数の専門化されたAIエージェントが協調して問題解決に取り組むシステム設計。CodeMenderでは、例えば、コード変更の差分を評価する専門エージェントが主エージェントの提案を検証し、意図しない副作用がないか確認することで、自己修正を促す。
CVE-2023-4863
2023年に発見されたlibwebp(画像圧縮ライブラリ)のヒープバッファオーバーフロー脆弱性。NSOグループによるゼロクリックiOSエクスプロイト「BLASTPASS」で実際に悪用され、CVSSスコア8.8の高危険度と評価された。
-fbounds-safetyアノテーション
コンパイラに対してメモリアクセスの境界チェックを指示するコード注釈。これにより、バッファオーバーフローなどのメモリ安全性に関する脆弱性を実行時に検出・防止できる。
リグレッション
ソフトウェアの修正や変更によって、以前は正常に動作していた機能が壊れてしまう現象。パッチ適用時には常にリグレッションのリスクがあるため、自動検証が重要となる。
【参考リンク】
Google DeepMind 公式ブログ – CodeMender紹介記事(外部)
CodeMenderの技術詳細、動作原理、実装事例を解説した公式発表ページ。マルチエージェントアーキテクチャや検証プロセスの詳細が記載されている。
Google セキュリティブログ – AIフロンティアのセキュリティ戦略(外部)
GoogleのAIセキュリティ戦略全体を解説。CodeMenderを含む一連のセキュリティツールの位置づけと今後の展開について述べられている。
libwebp 公式リポジトリ(外部)
CodeMenderが-fbounds-safetyアノテーションを適用した画像圧縮ライブラリの公式リポジトリ。Chrome、Firefox、Safariなど主要ブラウザで広く使用されている。
CVE-2023-4863 詳細 – Arctic Wolf(外部)
libwebpの重大な脆弱性CVE-2023-4863の技術的詳細と影響範囲を解説。ゼロクリック攻撃の実態と対策について詳しく説明している。
Citizen Lab – BLASTPASS攻撃分析(外部)
CVE-2023-4863を悪用したNSOグループのゼロクリックiOSエクスプロイト「BLASTPASS」の発見と分析報告。実際の攻撃事例を詳述している。
【参考記事】
Google DeepMind unveils CodeMender, an AI agent that autonomously patches software vulnerabilities(外部)
CodeMenderが最大450万行のコードベースを処理できること、静的・動的解析、差分テスト、ファジング、SMTソルバーを組み合わせた高度なプログラム解析を行うことを報じている。
Google builds new AI agent to improve code security(外部)
CodeMenderの72件のセキュリティ修正実績と、Gemini Deep Thinkモデルによる高度な推論能力について解説。ヒープバッファオーバーフローの修正事例など具体的な動作例を紹介している。
BLASTPASS: NSO Group iPhone Zero-Click, Zero-Day Exploit Captured in the Wild(外部)
CVE-2023-4863を悪用したゼロクリック攻撃「BLASTPASS」の詳細分析。2023年9月にiOS 16.6.1で発見され、ユーザーの操作なしにiPhoneを侵害できた実際の攻撃事例を報告している。
CVE-2023-4863: Critical Vulnerability in libwebp(外部)
libwebpのヒープバッファオーバーフロー脆弱性の技術詳細。CVSSスコア10.0の最高危険度と評価され、Chrome、Firefox、Safari、Edgeなど多数のアプリケーションが影響を受けた。
Majority of Critical Open Source Projects Contain Memory Unsafe Code(外部)
2024年のCISA調査によれば、重要なオープンソースプロジェクトの52%がメモリ非安全言語を含み、全コード行の55%がそうした言語で書かれている。CodeMenderのような自動修正ツールの必要性を示す統計データを提供している。
【編集部後記】
AIが脆弱性を「見つける」だけでなく「直す」時代が始まりました。みなさんが日常的に使っているWebサービスやアプリケーションの安全性が、人間の手を離れて自律的に守られるようになる未来は、期待と同時にどんな課題を生むでしょうか。
CodeMenderのような技術が広く普及したとき、開発者の役割はどう変わるのか、セキュリティ人材の不足問題はどう解決されるのか。あるいは、AIが生成したパッチを無批判に受け入れることのリスクについても考える必要があるかもしれません。この技術がもたらす変化について、みなさんはどのように感じられますか。