10月31日、Sead Fadilpašićが「AI-generated code is still frequently failing security checks」と題した記事を公開した。この記事では、AIが生成したコードのセキュリティ品質が初めて有意な改善を見せたものの、依然として深刻な脆弱性が残っているというVeracodeの調査結果を詳しく紹介している。
脆弱性率は44%→38%に改善、ただし「低い果実を摘んだだけ」
セキュリティ企業Veracodeが定期的に発表しているGenAI Code Security Reportによると、AIモデルが生成したコードに含まれる脆弱性の割合が44%から38%へ低下した。セキュリティスコアの平均は56%から62%へ上昇し、同レポートが始まって以来「初めての有意な改善」とVeracodeは評価している。
トップに立ったのはAnthropicのClaude Opus 5.5とOpenAIのGPT-6-Solで、いずれも73%のスコアを記録した。元記事のURLにも「claude-and-gpt-6」と明示されており、これらは今回の調査対象となった実在のモデルとして紹介されている。前回の最高値だったGPT-5.5の68%を上回り、60%以上をクリアしたモデル数も前回の4モデルから10モデルへ増加した。一方でボトム帯(44〜50%)はまだ存在しており、全体の底上げにはまだ距離がある。
改善の主因は「XSS対策」——複雑な脆弱性では依然として停滞
ここで注意が必要なのは、今回の改善の主な牽引役がXSS(クロスサイトスクリプティング)対策だという点だ。XSSに関するセキュリティスコアは今回のテスト対象カテゴリの中で最大の変化を記録し、前回比から18ポイント上昇してスコア自体が18%に達した。端的に言えば、最も苦手だったカテゴリで一定の前進が見られたということだ。
Veracodeはこれを「パターン認識で修正しやすい脆弱性」と位置づけている。LLMはパターンの学習が得意なため、この種の問題には対応しやすい。しかし、複数の関数をまたぐデータフロー推論が必要な脆弱性——たとえばログインジェクション(CWE-117)のようなケース——では、依然としてモデルは苦戦している。
テスト対象は18モデル、4言語(Python・C#・JavaScript・Java)、4種のCWEカテゴリ(CWE-89(SQLインジェクション)、CWE-327(脆弱な暗号アルゴリズム)、CWE-80(XSS)、CWE-117(ログインジェクション))。
「高いモデルを使えばいい」は間違い
VeracodeのCo-founderでChief Security EvangelistのChris Wysopalは、コストとセキュリティの関係について明確に釘を刺している。
「最もセキュアなコードを生成するモデルは、スケールで動かすと最もコストがかかる。それでもセキュリティタスクの4件に1件以上で失敗する。最高価格のモデルを使って祈るのが答えであってはならない。60%の合格率を持つ中堅モデルにVeracodeのスキャンを組み合わせる方が、検証なしの73%モデルより正確で、コスト効率も高く、スケーラブルだ」
これはVeracodeのレポートをもとにしたWysopal自身の発言であり、フロンティアモデルを盲信するのではなく、静的解析や脆弱性スキャンとの組み合わせが実務上の正解だという主張だ。現在、コード全体の約半分がAIによって生成されているという状況を踏まえると、この指摘は現場に直結する。
「大きな傷の一部を塞いだにすぎない」——実務的な示唆
Veracodeは今回の改善を評価しつつも、「大きな傷の一部を塞いだにすぎない」と総括している。改善されたのは主にパターン学習で対処しやすいXSSであり、データフローや状態管理をまたぐ複雑な脆弱性カテゴリでは大きな進展が見られていない。AIが生成したコードをそのまま本番環境に投入することへの警鐘は、今回のレポートでも変わらない。
実務上の含意は明確だ。組織は継続的かつ独立したセキュリティ検証をAIコード生成と組み合わせることが求められており、モデルの選定よりもパイプライン全体の設計が重要になる。「動くコード」と「安全なコード」の乖離をどう埋めるかは、AIコーディングツールの普及が加速する中で開発現場が直面している現実的かつ喫緊の課題だ。
詳細はAI-generated code is still frequently failing security checksを参照していただきたい。