ある研究により、AIが生成したコードは、人間が書いたコードよりも1.7倍以上の確率で大きな問題を持ち、2.74倍もセキュリティの脆弱性を持ちやすいことが分かりました。Cursor、Claude Code、またはGitHub Copilotで何かを構築した場合、プロジェクトには5つの最も一般的なセキュリティホールの少なくとも1つが含まれている可能性があります。それらが何であるか、そしてそれらを見つける方法は次のとおりです。

重要事項
  • 45%のAI生成コードには少なくとも1つのセキュリティ脆弱性が含まれています
  • 1.7倍人間が書いたコードよりも大きな問題を持つ可能性が高い
  • 2.74倍セキュリティ脆弱性を持ちやすい
  • 最も一般的:ハードコードされたAPIキー、入力検証の欠如、行レベルセキュリティなし
  • 監査時間:典型的なvibe-codedプロジェクトで2~3時間
  • 最後の検証:2026年4月

なぜAIコードは脆弱なのか

AIコーディングツールは「動作するか?」に最適化されており、「安全か?」には最適化されていません。Cursorに「ユーザー認証を追加する」と頼むと、ユーザーを認証するコードが生成されます。ただし、レート制限、入力のサニタイズ、CSRF保護、セキュアなセッション管理は自動的には追加されません。これらのことを要求していないからです。

AIはあなたが説明したことを正確に書きます。セキュリティには、自然に考えないことを説明する必要があります。つまり、エッジケース、悪意のある入力、不正なアクセスパターンです。プロンプトに含まれていなければ、コードにも含まれていません。

5つの最も一般的な脆弱性

1. フロントエンドコードにハードコードされたAPIキー。AIはクライアント側のJavaScriptやReactコンポーネントに直接APIキーを配置することが多いです。誰でもブラウザのDevToolsを開いて確認できます。修正:すべてのキーを環境変数(.envファイル)に移動し、サーバー側のみでアクセスします。時間:15分。

2. データベースに行レベルセキュリティがない。Supabase(vibe codingで一般的)を使用している場合、AIが生成したコードは多くの場合、認証されたすべてのユーザーに他のすべてのユーザーのデータへのアクセスを許可します。修正:Row Level Securityを有効にしてユーザーごとのポリシーを追加します。時間:30分。

3. サーバー側の入力検証がない。フォームは何でも受け入れます。スクリプト、過度なペイロード、SQLインジェクション試行など。AIはクライアント側の検証を追加(ユーザーはバイパス可能)しますが、サーバー側の検証をスキップします。修正:Zodスキーマまたは同様の検証をすべてのAPIエンドポイントに追加します。時間:エンドポイントあたり30分。

4. レート制限がない。誰でも1秒あたり1,000回APIにアクセスできます。スロットリングなし、不正使用に対する保護もありません。修正:Upstash Redisまたは同様のサービスを通じてレート制限を追加します。時間:20分。

5. 保護されていないルート。ダッシュボードページ、管理パネル、ユーザーデータエンドポイントはユーザーがログインしているかどうかを確認せずに読み込まれます。修正:すべての保護されたルートに認証ミドルウェアを追加します。時間:15分。

このコンテンツは役に立ちましたか?毎週AIが構築したプロジェクト向けのセキュリティガイドを公開しています。安全に構築する読者に参加する →

プロジェクトを監査する方法

AIコーディングツールで構築されたプロジェクトについて、このチェックリストを実行します:

コードベース全体でハードコードされたキーを検索します。プロジェクトディレクトリでgrep -r "sk-" . && grep -r "api_key" . && grep -r "secret" .を実行します。フロントエンドファイルでのマッチは重大な脆弱性です。

すべてのAPIエンドポイントの入力検証を確認します。各APIルートファイルを開きます。req.bodyを検証なしで直接使用している場合、それは脆弱です。

データベースセキュリティを確認します。Supabaseを使用している場合、Authentication → Policiesタブを確認します。RLSポリシーがない場合、すべてのユーザーが他のすべてのユーザーのデータを表示できます。

すべてのページで認証をテストします。ブラウザをシークレットモード(ログインしていない状態)で開き、アプリのすべてのページに移動します。ダッシュボードまたはユーザー固有のページが読み込まれた場合、そのルートは保護されていません。

レート制限を確認します。簡単なスクリプトを使用してAPIエンドポイントを短時間で100回叩いてみます。100回すべてが成功する場合、レート制限はありません。

完全なセキュリティチェックリストについては、vibe-codedアプリのセキュリティに関する完全ガイドを参照してください。最も一般的な間違いとその修正については、すべてのvibe coderが犯す5つのセキュリティ間違いを読んでください。

考え方の転換

AIは動作するコードを書きます。コードが安全であることを確認する必要があります。これらは2つの異なるスキルです。AIコーディングツールへのすべてのプロンプトには、機能要件と一緒にセキュリティ要件を含める必要があります。「レート制限、入力検証、保護されたルートを備えたユーザー認証を追加する」は、「ユーザー認証を追加する」よりもはるかに安全なコードを生成します。

当社のPrompt Optimizerは、これらのセキュリティ仕様をコーディングプロンプトに自動的に追加するのに役立ちます。

これは私たちが毎週やっていることです。AIツール、ワークフロー、正直な意見についての深堀り。誇大広告なし、詰め物なし。参加する →

開示:この記事のいくつかのリンクはアフィリエイトリンクです。私たちは個人的にテストし、定期的に使用しているツールのみを推奨しています。完全な開示ポリシーを参照してください。