AI生成コードのセキュリティリスク概論
【データで見る】衝撃的な統計数値
2025年、AI生成コードのセキュリティに関する調査結果が相次いで発表されました。
Veracode 2025レポート:
| 指標 | 数値 |
|---|---|
| AI生成コードにセキュリティ欠陥がある割合 | 45% |
| Javaの失敗率 | 70%以上 |
| XSS防御の失敗率 | 86% |
| ログインジェクション脆弱性率 | 88% |
Wiz Research調査:
- vibe-codedサイトの 49.5% に秘密情報(APIキー、JWT等)が露出
Escape研究:
- 5,600アプリを調査
- 2,000以上の脆弱性 を発見
- 400以上の秘密露出 を確認
これらの数字は、AI生成コードのセキュリティが深刻な状況にあることを示しています。
なぜAIはセキュアなコードを書かないのか
Simon Willison(Django共同創設者)は、こう指摘しています。
“This is the single biggest challenge with vibe coding… The most obvious problem is that they’re going to build stuff insecurely.”
根本原因:
-
学習データの問題
- インターネット上の脆弱なコードから学習
- Stack Overflowのコピペ問題を引き継いでいる
-
機能優先の最適化
- 「動く」ことが最適化目標
- セキュリティは二次的
-
明示的指示の欠如
- セキュリティ要件を伝えないと考慮されない
- デフォルトで安全ではない
-
コンテキスト不足
- アプリ全体のセキュリティモデルを理解していない
- 部分的な視点でしかコードを生成できない
OWASP Top 10とAI生成コード
OWASP Top 10(2021年版)に照らすと、AI生成コードには以下の問題が頻出します。
| OWASP | 問題 | AI生成コードでの頻度 |
|---|---|---|
| A01: 認証の不備 | 認証バイパス、クライアントサイド認証 | 高 |
| A02: 暗号化の失敗 | 平文パスワード、弱いハッシュ | 高 |
| A03: インジェクション | SQLインジェクション、XSS | 非常に高 |
| A04: 安全でない設計 | RLS未設定、認可不備 | 高 |
| A05: セキュリティ設定ミス | APIキー露出、デバッグモード | 非常に高 |
| A06: 脆弱なコンポーネント | 古いライブラリ、Slopsquatting | 高 |
| A07: 識別と認証の失敗 | セッション管理不備 | 中 |
| A08: データの完全性 | 検証なしのデシリアライゼーション | 中 |
| A09: ログとモニタリングの失敗 | ログ不足、センシティブ情報のログ出力 | 高 |
| A10: SSRF | サーバーサイドリクエストフォージェリ | 中 |
共有インフラが生むシステミックリスク
vibe codingプラットフォーム特有のリスクがあります。
“All vibe coding applications run on the vendor’s shared infrastructure, meaning every customer inherits the vendor’s security posture.”
リスク構造:
プラットフォームの脆弱性
↓
全顧客アプリの脆弱性
↓
大規模なセキュリティインシデント
Base44事件の教訓:
- プラットフォームの認証システムに欠陥
- 全アプリが認証バイパス可能に
- 1つの脆弱性が数千アプリに影響
サイバー攻撃者の視点:AI生成コードの狙い方
攻撃者は、vibe codingで作られたサービスを 積極的に狙っています。
攻撃者の思考:
- 「vibe codingで作った」とSNSで公開
- 開発者は非技術者の可能性が高い
- セキュリティレビューされていない可能性
- 簡単な脆弱性が見つかるかも
- 攻撃してみよう
別記事の「ゼロ手書きSaaS」事件:
- SNSで「vibe codingで作った」と公開
- 数日後に攻撃開始
- APIキー流出、認証バイパス、不正決済
- サービス完全終了
vibe codingの「見えない複雑さ」問題
非技術者が見落としがちな「見えない複雑さ」があります。
| 見えるもの | 見えないもの |
|---|---|
| UIが表示される | XSS脆弱性がある |
| データが保存される | SQLインジェクション可能 |
| ログインできる | 認証バイパス可能 |
| 決済できる | 不正決済可能 |
| 動いている | APIキーが露出している |
「動く」と「安全」は、まったく別の問題です。
この記事で扱うセキュリティアンチパターン
この記事では、以下の7つのセキュリティアンチパターンを詳しく解説します。
| # | アンチパターン | 影響 |
|---|---|---|
| ⑧ | APIキー露出 | 課金被害、サービス停止 |
| ⑨ | クライアントサイド認証 | 認証バイパス、不正アクセス |
| ⑩ | 入力バリデーション欠如 | 不正決済、データ破壊 |
| ⑪ | XSS無防備 | セッション乗っ取り、情報窃取 |
| ⑫ | パスワード平文保存 | 認証情報漏洩 |
| ⑬ | Slopsquatting | サプライチェーン攻撃 |
| ⑭ | 古いライブラリ推奨 | 既知の脆弱性悪用 |
本章のまとめ
AI生成コードのセキュリティリスク:
- 45%に欠陥 — AI生成コードの約半分にセキュリティ問題
- なぜ安全でないか — 学習データ、機能優先、指示不足
- OWASP Top 10 — すべての項目でリスクあり
- 共有インフラリスク — プラットフォーム脆弱性が全顧客に影響
- 攻撃者に狙われる — vibe codingサービスは格好のターゲット
- 見えない複雑さ — 「動く」≠「安全」
まとめ:重要ポイントの振り返り
- AI生成コードの 45%にセキュリティ欠陥 (Veracode 2025)
- 49.5%のサイトに秘密情報露出 (Wiz Research)
- AIは 「動く」ことに最適化 、セキュリティは二次的
- OWASP Top 10 のすべての項目でリスク
- 共有インフラ の脆弱性が全アプリに影響
- 攻撃者は vibe codingサービスを狙っている
- 教訓:AI生成コードを安全と思うな、検証せよ