AIが書いたコードは動く。しかし本当に安全なのか
はじめに
AIコーディングエージェントは、自然言語の指示から関数やファイルを作成し、リポジトリ全体のソースツリーを組み立てられるようになった。しかし、プログラムが動作することと、安全に運用できることは別の能力である。Last Secure Code Benchmarkは、セキュリティ要件を明示しない通常の依頼に対して、エージェントが脆弱性を含まないコードを生成できるかを調べた。
評価の構成
研究チームは150件の実在脆弱性をもとに450課題を作成した。対象はJava、C、C++、JavaScript、Python、PHP、Goの7言語で、24種類のCWEに及ぶ。2025年版CWE Top 25から21種類、KEV Top 10から8種類の弱点も含まれている。
課題は、関数の補完、ファイルの作成、リポジトリのソースツリーをゼロから構築するという3つの「バイブコーディング」場面を再現する。仕様書は機能だけを説明し、入力検証や権限制御などの安全対策を直接指示しない。生成物は、非公開の機能テストとセキュリティテストで評価された。
主な結果
- 6つの先端エージェントの機能テスト通過率は73.6〜91.3%だった。
- 機能と安全性を同時に満たした割合は16.4〜25.1%に落ち込んだ。
- 最も高い結果を示したClaude Fable 5でも、両方のテストを通過した課題は25.1%だった。
- すべてのバイブコーディング設定を合算すると、最良モデルが通過した脆弱性シナリオは12%にすぎない。
意味すること
この結果の重要な点は、AIコーディングツールを使うべきではないということではない。機能的に正しいコードだけでは、品質の十分な指標にならないということだ。エージェントは期待された業務ロジックを再現できても、信頼できない入力、危険なAPI、認可境界、例外的な状態を見落とす可能性がある。プロンプトに安全要件がなければ、堅牢な初期設定よりも、素早く動く実装を優先することも考えられる。
開発チームは、生成コードに対して機能テストだけでなく、静的解析、依存関係の検査、秘密情報スキャン、ファジング、脅威モデルを理解した人間によるレビューを組み合わせる必要がある。認証、決済、ファイル処理、外部公開サービスなどの高リスク領域では、特に厳格な検証が欠かせない。
また、エージェントの評価も、コンパイルや単体テストの結果だけでは不十分だ。通常の機能要求の中で安全性を保てるか、複数ファイルの変更や長期タスクで脆弱性を増やさないかを測る必要がある。現時点でのバイブコーディングは、自動化された完成品ではなく、検証を伴う実装支援として扱うべきだろう。
コメント
ログイン状態を確認中…
コメントを読み込み中…