Google DeepMind CodeMender AI エージェント(コードセキュリティ)
Google DeepMind は、AI を活用したエージェント CodeMender を導入し、ソフトウェアの脆弱性を自動的に検出・修正します。CodeMender は、AI 主導の脆弱性検出スピードと人間がパッチを適用できる速度とのギャップを埋め、新たな脆弱性に対するリアクティブなパッチ適用と、既存コードの書き換えによるセキュリティリスク全体の除去という二つのアプローチを提供します。
自動脆弱性パッチ適用
CodeMender は Gemini Deep Think モデルの推論能力を活用し、複雑なセキュリティ脆弱性のデバッグと修正を自律的に行うエージェントとして機能します。パッチの信頼性を確保するため、エージェントは堅牢な検証プロセスを採用し、根本原因に対処し、機能的正確性を保ち、リグレッションを防ぎ、スタイルガイドに従った高品質なパッチのみを人間のレビューに提示します。
技術ツールと分析
CodeMender は高度なプログラム分析ツールを統合し、コードパターン、データフロー、制御フローを体系的に検査します。
- 高度なプログラム分析: エージェントは静的解析、動的解析、差分テスト、ファジング、SMT ソルバーを使用して、アーキテクチャ上の弱点やセキュリティ欠陥の根本原因を特定します。
- マルチエージェントシステム: CodeMender はタスクごとに専門化されたエージェントを使用します。これには、元のコードと変更後のコードを比較し、変更がリグレッションを引き起こさないことを検証し、エージェントが自己修正できるようにする LLM ベースの批評ツールが含まれます。
根本原因分析と複雑なパッチ適用
CodeMender はクラッシュレポートからすぐには分からない根本原因を特定できます。例えば、あるケースではクラッシュレポートがヒープバッファオーバーフローを示していたにもかかわらず、CodeMender は実際の根本原因が XML 要素の解析中におけるスタック管理の誤りであることを特定しました。エージェントは、プロジェクト内で C コードを生成するカスタムシステムの変更など、非自明なパッチを作成することも可能です。
プロアクティブなコードセキュリティとリライト
リアクティブなパッチ適用に加えて、CodeMender は既存コードを積極的に書き換え、より安全なデータ構造や API を実装します。
バウンド安全性の実装
CodeMender は -fbounds-safety アノテーションを libwebp 画像圧縮ライブラリに適用するために導入されました。これらのアノテーションにより、コンパイラは境界チェックを追加でき、攻撃者がバッファオーバーフローやアンダーフローを悪用して任意のコードを実行することを防止します。
DeepMind は、以前の libwebp のヒープバッファオーバーフロー(CVE-2023-4863)がゼロクリック iOS エクスプロイトに利用されたが、これらのアノテーションが適用されていれば悪用不可能になっていたと指摘しています。
反復的自己修正
プロアクティブなリライトプロセス中、CodeMender は自身のアノテーションに起因するコンパイルエラーやテスト失敗を自動的に修正できます。機能的等価性を評価するよう設定された LLM ジャッジツールを使用して機能が維持されていることを確認し、失敗が検出された場合はフィードバックに基づいてエージェントが自己修正します。
デプロイとオープンソースへの影響
CodeMender はすでにオープンソースプロジェクトに対して 72 件のセキュリティ修正を上流に提供しており、その中には最大 450 万行のコードを含むものもあります。
- Human-in-the-Loop: CodeMender が生成したすべてのパッチは、上流に提出される前に人間の研究者によってレビューされています。
- Community Engagement: ラボは提出数を徐々に増やし、重要なオープンソースプロジェクトのメンテナに連絡を取り、コミュニティのフィードバックに基づいて改善を行っています。
- Future Availability: 長期的な目標は、CodeMender をすべてのソフトウェア開発者が自分のコードベースを保護できるツールとしてリリースすることです。