AIが生成したコードの45%にセキュリティ上の欠陥がある理由(そしてその対処法)

Yunhao Jiao
AIが生成したコードの45%にセキュリティ上の欠陥がある理由(そしてその対処法)カバー

Veracodeの「2025 GenAI Code Security Report」によると、AIが生成したコードの45%にセキュリティ上の欠陥が含まれているとのことです。つまり、AIが書くコードのほぼ半数に脆弱性が存在することになります。

この数字は、初心者のプロンプト操作によるものではありません。セキュリティを意識したプロンプト戦略を用いてエンタープライズグレードのAIコーディングツールを使用するプロフェッショナルな開発者が書いたコードを対象にした調査結果です。BaxBenchで最も優秀なモデルでさえ、セキュリティ特化のプロンプトを用いた場合でも、安全なコードを生成できたのは約66%の確率に留まりました。

セキュリティコミュニティは、特定の脆弱性パターンを定量的に分析しています。AIコードはXSSを導入する可能性が2.74倍、安全でない直接オブジェクト参照を生成する可能性が1.91倍、不適切なパスワード処理を実装する可能性が1.88倍高いことが判明しています。

これらは仮定上のリスクではありません。Aikido Securityの調査では、開発者の69%が自社システムにおいてAIに起因する脆弱性を発見したと回答しています。また、5人に1人がビジネスに重大な影響を与えるインシデントを経験したと報告しています。

AIがセキュリティ上の問題があるコードを生成する理由

AIコーディングツールは、公開コードリポジトリを学習データとして訓練されています。公開リポジトリには大量の安全でないコードが含まれており、モデルはそのパターン(安全でないものも含む)を学習し、再現してしまいます。

具体的なパターン:

  • 学習データに入力バリデーションが欠落していることが多いため、入力バリデーションが省略されがちである
  • モデルがアプリケーションの権限モデルを理解していないため、認可チェックが不完全になる
  • 学習データにシークレットがハードコードされている例が含まれているため、シークレットがハードコードされることがある
  • 学習データが内部情報を漏洩させる例を含むため、エラーメッセージが過剰に詳細になる

対策:すべてのPRに対する自動セキュリティテスト

プロンプトの工夫だけでは、安全なコードを書くことはできません。セキュリティ特化のプロンプトを使っても66%という上限があることが、それを証明しています。解決策はテスト、具体的にはすべてのコード変更に対して実行される自動セキュリティテストです。

TestSpriteはすべての実行にセキュリティテストを組み込んでいます。IDORチェック、認証バリデーション、入力サニタイズ、XSS検出、認可境界テストが含まれており、脆弱性はマージ前のPR段階で検出されます。

すべての欠陥が本番環境に到達する前に検出されれば、45%という欠陥率も管理可能になります。自動セキュリティテストは、AIのスピードによる開発を安全に保つためのガードレールです。

TestSpriteを無料で試す →