CodeMenderは、AIによる脆弱性発見の進展に対応し、セキュリティの欠陥を自動的に修正することで開発者を支援することを目指しています。
Google DeepMindは、オープンソースプロジェクトにおいて自動的にソフトウェアの脆弱性を発見・修正するAIエージェントを発表しました。このエージェントは、過去6か月間で最大450万行規模のコードベースを含むプロジェクトに対し、72件のセキュリティパッチを提出しています。
このツール「CodeMender」は、Gemini Deep Thinkモデルを活用し、複雑なセキュリティ上の欠陥をデバッグ・修正できる自律型エージェントを実現しています、とGoogle DeepMindの上級主任リサーチサイエンティストRaluca Ada Popa氏と、セキュリティ&プライバシー担当VPのFionn Flynn氏がブログ記事で述べています。
「ソフトウェアの脆弱性は、従来のファジングのような自動化手法を用いても、開発者が発見・修正するのが非常に困難かつ時間のかかるものです」とPopa氏とFlynn氏は投稿で述べています。「AIによる脆弱性発見のブレークスルーが進むにつれ、人間だけで対応するのはますます難しくなるでしょう。」
CodeMenderの仕組み
CodeMenderは、Gemini Deep Thinkモデルの推論能力を活用し、脆弱性をデバッグ・修正できる自律型エージェントを生成します。このエージェントは、コードを変更する前に推論し、変更後は自動的に検証して正しさやリグレッション(後退)がないことを確認できるツールを備えていると、研究者らは述べています。
同社は、CodeMenderがより効果的にコードを推論・検証できるよう、新たな技術やツールも開発しました。これには、静的解析、動的解析、差分テスト、ファジング、SMTソルバーに基づく高度なプログラム解析ツールが含まれ、コードパターンや制御フロー、データフローを体系的に調査し、セキュリティ欠陥の根本原因を特定します。
またCodeMenderは、特定の問題領域に対応する専用エージェントを持つマルチエージェントシステムも利用しています。例えば、元のコードと修正後のコードの違いを指摘し、提案された変更がリグレッションを引き起こさないことを確認する、大規模言語モデルベースの批評ツールも使用していると同社は述べています。
「大規模言語モデルは急速に進化していますが、コードセキュリティにおけるミスは高くつく可能性があります」と研究者らは記し、CodeMenderの自動検証プロセスにより、根本原因を修正し、機能的に正しく、リグレッションがなく、スタイルガイドラインにも従った高品質なパッチのみを人間のレビューに回すことで、さまざまな観点からコード変更の正しさを担保していると述べています。
リアクティブおよびプロアクティブなセキュリティ
Google DeepMindによれば、このツールはコードセキュリティに対し、リアクティブ(反応的)およびプロアクティブ(予防的)なアプローチの両方を取っています。リアクティブには新たな脆弱性を即座に修正し、プロアクティブには既存コードを書き換えて脆弱性のクラスごと排除します。
プロアクティブな例として、Google DeepMindはCodeMenderを使い、広く利用されている画像圧縮ライブラリlibwebpの一部に-fbounds-safetyアノテーションを適用しました。-fbounds-safetyアノテーションを付与すると、コンパイラがバッファオーバーフローやアンダーフローの脆弱性を突いた攻撃を防ぐための境界チェックを追加します。
同社は、CVE-2023-4863、libwebpにおけるヒープバッファオーバーフローの脆弱性を例に挙げました。これはゼロクリックiOSエクスプロイトの一部として脅威アクターに悪用されましたが、-fbounds-safetyアノテーションがあれば、この脆弱性は悪用不可能になっていたとGoogle DeepMindはブログで述べています。
人間によるレビューは依然必要
Google DeepMindは、CodeMenderによる初期成果は有望だとしつつも、信頼性重視の慎重なアプローチを取っていると述べています。現時点では、CodeMenderが生成したすべてのパッチは、提出前に人間の研究者がレビューしていると研究者らは投稿で付け加えました。
CodeMenderを用いて、Google DeepMindはすでにさまざまな重要なオープンソースライブラリにパッチの提出を開始しており、その多くがすでに受け入れられ、アップストリームに取り込まれています。同社は、品質を確保しつつ、オープンソースコミュニティからのフィードバックに体系的に対応するため、段階的にこのプロセスを拡大していると述べています。
Google DeepMindは、CodeMenderが生成したパッチについて、重要なオープンソースプロジェクトの関係者に段階的に連絡を取っていくと述べています。また、すべてのソフトウェア開発者が自分のコードベースを安全に保つために利用できるツールとしてCodeMenderを公開することを目指しており、今後数か月以内に技術論文やレポートを発表し、手法や成果を詳しく紹介する予定だとブログ記事で述べています。