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を無料で試す →