10月7日、Google DeepMindが「Google DeepMind introduces new AI agent for code security」と題した記事を公開した。この記事では、AIを活用してソフトウェアの脆弱性を自動的に修正し、既存コードをより安全な形に書き換える新しいエージェント「CodeMender」について詳しく紹介されている。以下に、その内容を紹介する。
CodeMenderとは何か
CodeMenderは、ソフトウェア開発におけるセキュリティ脆弱性の検出と修正を、AIによって自動化することを目的とした研究プロジェクトである。これまでのファジング(fuzzing)などの自動手法では発見が難しい欠陥を、AIが自律的に解析し、修正することを目指している点に特徴がある。
特筆すべきは、CodeMenderが「反応的」と「予防的」という二つのアプローチを組み合わせていることだ。新たな脆弱性が見つかった際には迅速に修正を行う一方で、既存コードの安全性を高めるための構造的な改変も行う。つまり、発見された欠陥をその場で修正するだけでなく、そもそもその種のバグが再発しないようにコードを再設計するのである。
この仕組みを通じて、CodeMenderはすでに4,5百万行規模のプロジェクトを含む複数のオープンソースソフトウェアに対して72件のセキュリティ修正を提供しているという。これは単なるテストではなく、実際の開発現場で効果を発揮し始めていることを示している。
Geminiモデルによる推論と自動検証
CodeMenderの中核には、Googleが開発するGemini Deep Thinkモデルがある。これにより、エージェントはコードの問題点を推測し、修正案を生成し、さらにその修正が正しいかどうかを自律的に検証できる。修正後のコードは、機能的な正当性やスタイルの一貫性、既存のテストとの整合性など、複数の観点から自動評価され、十分な品質が確認されたものだけが人間のレビューに回される。
このアプローチを支える要素の一つが、高度なプログラム解析技術だ。CodeMenderは静的解析、動的解析、差分テスト、ファジング、SMTソルバーといった多様な手法を統合的に利用し、コードの制御構造やデータフローを徹底的に分析する。それによって、単なる症状としてのバグではなく、根本的な原因を特定し、設計上の弱点を見抜くことができる。
さらに、CodeMenderは複数のエージェントを連携させるマルチエージェントシステムの設計を採用している。各エージェントは特定の役割を担い、例えば「差分批評ツール」は、修正前後のコードを比較して回帰が発生していないかを確認する。必要に応じて、AI自身が修正内容を再評価し、自己修正を行う。このように、CodeMenderは単一のAIモデルというよりも、複数の知能が協調しながらコード品質を高める「チーム」として機能している。
実際の修正事例
CodeMenderがどのように機能するのかを理解するには、いくつかの具体例がわかりやすい。
ある事例では、クラッシュレポートがヒープバッファオーバーフローを示していたが、AIは解析の過程でそれが真の原因ではないことを突き止めた。問題の根本は、XML要素を解析する際のスタック管理に誤りがあった点であり、CodeMenderは数行の修正でこの欠陥を完全に取り除いた。
別のケースでは、より複雑なオブジェクトのライフタイムに関するバグに対処した。ここでは、プロジェクト内部で独自に生成されていたCコードを理解し、AIが自らパッチを作成した。機能を損なうことなく問題を修正できたことは、CodeMenderが単なる自動置換ツールではなく、コードの構造や目的を理解した上で改変を行う「開発者に近いAI」であることを示している。
libwebpへの応用と予防的修正
CodeMenderは、既存のコードをより安全な形に「書き換える」能力も持つ。その一例が、Googleが管理する画像圧縮ライブラリlibwebpに対して実施された-fbounds-safety
注釈の自動適用だ。
この注釈を付与すると、コンパイラは配列アクセス時に境界チェックを挿入し、バッファオーバーフローやアンダーフローの発生を防ぐ。過去にlibwebpでは、iOSのゼロクリック攻撃で悪用されたCVE-2023-4863という深刻な脆弱性があった。DeepMindは、もし当時-fbounds-safety
が導入されていれば、この欠陥は「永続的に悪用不能になっていた」と指摘している。
CodeMenderは、こうした安全性向上のプロセスでも自律的に動作する。修正後に発生した新たなエラーやテスト失敗を自ら検出し、再修正を行うほか、LLMベースの「機能等価性ジャッジツール」を使って、修正前後で同等の機能を保っているかを確認する。AIが自ら失敗を検知し、再試行する仕組みは、信頼性を高める上で重要な役割を果たしている。
現時点での提供状況
現時点(2025年10月)で、CodeMenderはまだ一般開発者が直接利用できる状態にはない。DeepMindはこの取り組みを「研究段階の初期成果」と位置づけており、CodeMenderが生成したパッチはすべて人間の研究者によるレビューを経た上で上流(upstream)に提出されている。
今後は、重要なオープンソースプロジェクトのメンテナーに順次働きかけ、CodeMenderが生成したパッチを提供していく計画だ。そのフィードバックを反映しながら品質を高め、将来的にはより広範な開発者コミュニティに向けて公開することを目指すと述べられている。記事中では、最終的に「すべてのソフトウェア開発者が自身のコードベースを安全に保つために利用できるツールとしてリリースすることを目指している」と明言されており、実用化への道筋が示された形だ。
今後の展望
Google DeepMindは、今後CodeMenderの成果や基盤技術を論文や技術レポートとして順次公開していく予定である。記事の最後では、「CodeMenderはAIによるソフトウェアセキュリティ強化の探索が始まったばかりだ」と述べられており、今回の発表はあくまで序章に過ぎないことが示唆されている。
AIが単なる補助的ツールから、コード品質や安全性を自律的に担保する存在へと進化していく。その過程でCodeMenderは、開発者の生産性とソフトウェアの信頼性を同時に高める新たな基盤技術となる可能性がある。
詳細はGoogle DeepMind introduces new AI agent for code securityを参照していただきたい。