はじめに
こんばんは、mirukyです。
今回はいつものAWSシリーズとは少し毛色を変えて、AIコーディング時代のセキュリティについて書きます。
2025年から2026年にかけて、GitHub Copilot、Claude Code、Cursor、Cline、Amazon Q DeveloperなどのAIコーディングツールが急速に普及しました。コードを書くハードルが劇的に下がり、「プログラミング未経験でもアプリが作れる」時代が到来しています。
しかし、コーディングが楽になった裏側で、セキュリティリスクは確実に増大しています。
AIが生成したコードをノールックでコピペしていませんか?
AIが提案したパッケージを検証せずにインストールしていませんか?
ターミナルに貼り付けるコマンドの中身をちゃんと読んでいますか?
本記事では、2026年3月時点の最新のセキュリティ事案・攻撃手法・業界動向を徹底的に紹介しながら、AIコーディング時代に必要なセキュリティ意識と具体的な防御策を解説します。
本記事の内容は2026年3月時点の情報に基づいています。セキュリティ情報は日々更新されるため、最新の情報は各公式ソースをご確認ください。
目次
- AIコーディングの「光」と「影」
- 【衝撃】2025〜2026年のセキュリティ事案まとめ
- 【事案①】Slopsquatting — AIが「架空のパッケージ名」を生み出す新型攻撃
- 【事案②】InstallFix — 偽Claude Codeインストールページと広告悪用によるマルウェア配布(2026年3月)
- 【事案③】AIを活用した未熟な攻撃者が600台超のFortiGateを侵害(2026年2月)
- 【事案④】その他の注目すべきインシデント
- OWASP Top 10:2025 — サプライチェーンが3位に浮上
- OWASP GenAI Security Project と LLMセキュリティ指針
- 「Vibe Coding」の光と闇
- 今日からできる実践的セキュリティ対策 10選
- おわりに
1. AIコーディングの「光」と「影」
1-1. AIがもたらした革命的な変化
まず、AIコーディングツールがもたらした変化を整理しましょう。
| 変化 | Before(従来) | After(AI時代) |
|---|---|---|
| コーディング速度 | 手動で1行ずつ記述 | AIが数十行を一括生成 |
| 学習コスト | 言語・フレームワークを数ヶ月〜年単位で習得 | 自然言語で指示するだけで動くコードが出力 |
| デバッグ | Stack Overflowや公式ドキュメントを検索 | AIにエラーを投げれば修正案が即座に返る |
| 新技術の導入 | 公式ドキュメントを読み込んで試行錯誤 | AIが使い方・サンプルコードをまとめて提示 |
| 参入障壁 | プログラミング知識が必須 | 非エンジニアでもアプリ開発が可能に |
この変化は控えめに言って革命的です。開発効率は飛躍的に向上し、これまで技術的な壁で諦めていた人たちがプロダクトを世に送り出せるようになりました。
1-2. しかし、その裏側では…
ここで冷静に考えてみてください。
AIが生成したコードの中身を、あなたはどこまで理解していますか?
攻撃者の視点で見ると…
・「コードを読まない開発者」が大量に生まれている
・「AIが推奨したパッケージ」を無条件で信頼する文化ができている
・「ターミナルにコピペ」する心理的抵抗が下がっている
・ セキュリティの知識がないままプロダクションにデプロイする人が急増している
つまり、AIコーディングツールの普及は、攻撃者にとって最高の追い風になっているのです。
以降のセクションで、この「追い風」を利用した最新の攻撃事例を具体的に見ていきます。
2. 【衝撃】2025〜2026年のセキュリティ事案まとめ
まず、直近で発生した主要なセキュリティ事案を一覧で把握しましょう。
注記:影響規模は各報道・調査時点の公開情報に基づく推定値です。「実際の被害件数」と「影響可能性のある規模」は区別して読む必要があります。
| 時期 | 事案 | 概要 | 影響規模 |
|---|---|---|---|
| 2025年4月 | Slopsquatting発覚 | AIが存在しないパッケージ名を推奨 → 攻撃者がそのパッケージ名を登録 | 推奨パッケージの19.7% が架空 |
| 2025年1月 | DeepSeek情報流出 | DeepSeekのデータベースが公開状態で放置 | チャット履歴・APIキーなど100万行超のログが露出 |
| 2026年1月 | 偽AI Chrome拡張機能 | AI機能を装った悪意ある拡張機能がChrome Web Storeに大量出現 | 合計約90万ダウンロード規模、AIチャット・閲覧データが外部送信 |
| 2026年2月 | FortiGate大量侵害 | GenAIを活用した未熟な攻撃者がFortiGateを侵害したと報道 | 55ヶ国・600台以上が被害 |
| 2026年2月 | AIエージェントのリスク | AIエージェントに過剰権限を付与した場合のポリシー逸脱リスクが指摘 | セキュリティ研究者が警告 |
| 2026年3月 | InstallFix攻撃 | Claude Codeの偽サイトでマルウェア配布 | 開発者のクレデンシャルを窃取 |
| 2026年3月 | 悪意あるRustクレート | 複数のRustクレートが.envファイルの内容を外部送信しようとするコードを含んでいた |
環境変数・シークレットが流出 |
上記は氷山の一角です。報告されていないインシデントを含めると、AIコーディングに関連するセキュリティ事案は急増しています。
では、特にインパクトの大きい事案を深掘りしていきます。
3. 【事案①】Slopsquatting — AIが「架空のパッケージ名」を生み出す新型攻撃
3-1. Slopsquattingとは?
Slopsquatting(スロップスクワッティング)は、2025年に発覚したまったく新しいタイプのサプライチェーン攻撃です。
名前の由来
「Slop」(AIが生成する不正確な情報 = スロップ)+「Squatting」(先取り占拠)を組み合わせた造語です。Python Software Foundationのデベロッパー・イン・レジデンスであるSeth Larson氏が命名しました。
攻撃の仕組みを図解します。
【Slopsquattingの攻撃フロー】
① 開発者がAIに「〇〇を実装するにはどのパッケージを使えばいい?」と質問
↓
② AIが「flask-microdataパッケージを使うといいですよ」と回答
※ このパッケージは実在しない(AIのハルシネーション)
↓
③ 攻撃者は、AIが頻繁にハルシネーションするパッケージ名を事前に調査
↓
④ 攻撃者が「flask-microdata」という名前でPyPIに悪意あるパッケージを登録
↓
⑤ 開発者が pip install flask-microdata を実行
↓
⑥ マルウェアがインストールされ、認証情報やシステム情報が窃取される
3-2. 衝撃的な研究結果
セキュリティ企業Socket.devの調査と、テキサス大学サンアントニオ校・バージニア工科大学・オクラホマ大学の共同研究チーム(論文:"We Have a Package for You!")が発表した結果は衝撃的でした。
| 調査項目 | 結果 |
|---|---|
| 調査規模 | 16のLLMに対して576,000のコード生成プロンプトを実行(Python / JavaScript) |
| 架空パッケージの割合 | 推奨されたパッケージの19.7%(約5個に1個)が実在しない |
| ユニークな架空パッケージ名 | 205,000種類以上 |
| 再現性 | 研究報告によれば、架空パッケージの約43% が同じプロンプトで繰り返し推奨される |
| オープンソースモデルのハルシネーション率 | 21.7% |
| 商用モデルのハルシネーション率 | 5.2% |
出典:Slopsquatting: How AI Hallucinations Are Fueling a New Class of Supply Chain Attacks - Socket.dev
3-3. なぜこれが危険なのか
従来のTyposquatting(タイポスクワッティング:requests → requsets のようなタイプミスを狙う攻撃)と比較すると、Slopsquattingの恐ろしさがわかります。
| 比較項目 | Typosquatting | Slopsquatting |
|---|---|---|
| 攻撃の起点 | 開発者のタイプミス | AIの推奨(信頼性が高いと認識される) |
| わかりやすさ | 正しいパッケージ名を知っていれば気づける | AIが自信満々に推奨するため気づきにくい |
| 再現性 | タイプミスはランダム | 研究報告では同じパッケージ名が約43%の確率で繰り返される |
| ターゲット層 | 注意力が低い開発者 | AIを信頼するすべての開発者 |
| スケーラビリティ | 人気パッケージの類似名に限定 | 205,000種類以上の架空名が攻撃対象 |
特に危険なポイント
研究報告によれば、AIがハルシネーションで生成するパッケージ名の約43%に再現性があるとされており、攻撃者は「どのパッケージ名を先取り登録すれば効果的か」を体系的に予測できる可能性があります。これはTyposquattingよりもはるかに効率的な攻撃を可能にします。
3-4. 自分の身を守るには
# ❌ AIに推奨されたパッケージをそのままインストール
pip install flask-microdata
# ✅ まずパッケージの存在と信頼性を確認
# 1. PyPI/npmで検索して公式ページを確認
# 2. GitHubリポジトリの存在・Star数・最終更新日を確認
# 3. ダウンロード数を確認(極端に少なければ疑う)
# 4. メンテナーのプロフィールを確認
pip install flask-microdata # 上記すべてを確認してから実行
4. 【事案②】InstallFix — 偽Claude Codeインストールページと広告悪用によるマルウェア配布(2026年3月)
4-1. 事案の概要
2026年3月上旬、セキュリティ企業Push Securityの調査をもとにDark Readingなどが、Claude Code(Anthropic社のAIコーディングツール)の偽インストールサイトを利用したマルウェア配布キャンペーンを報道しました。
攻撃対象が「開発者」であることに注目してください
この攻撃は、一般ユーザーではなく、AIコーディングツールを使おうとしている開発者を狙い撃ちにしています。
4-2. 攻撃の手口
攻撃は非常に巧妙な多段階構成になっています。
【InstallFix攻撃の全体フロー】
① 開発者がGoogleで「Claude Code」を検索
↓
② 検索結果の上位に「スポンサー広告」として偽サイトが表示 ← Google Adsを悪用
↓
③ 偽サイトはCloudflare Pages・Tencent EdgeOne・Squarespaceでホスティング
見た目はAnthropicの公式インストールページとほぼ同一
↓
④ 偽サイトに「以下のコマンドをターミナルにコピペしてインストール」と表示
↓
⑤ 開発者がターミナルにコマンドをペースト&実行
↓
⑥ 「Amatera Stealer」というマルウェアがインストールされる
↓
⑦ ブラウザの保存パスワード・Cookie・暗号通貨ウォレット等が窃取される
4-3. ClickFix + InstallFixテクニック
この攻撃で使われたClickFixは、2024年後半から急速に広まっているソーシャルエンジニアリング手法です。
| 手法 | 説明 |
|---|---|
| ClickFix | 「このページを正しく表示するには、以下の手順を実行してください」と表示し、悪意あるコマンドをクリップボードにコピーさせる手法 |
| InstallFix | ClickFixの派生形。ソフトウェアのインストール手順を装い、ターミナルコマンドを実行させる手法 |
Push Security社の研究者は、この攻撃の背景をこう述べています。
"There was a time when pasting a command from a website straight into your terminal was something you'd only try once before some grizzled senior engineer beat it out of you."
(かつては、Webサイトからコマンドをそのままターミナルに貼り付けたりしたら、ベテランエンジニアにこっぴどく叱られたものだった)
つまり、AIコーディングツールの普及とともに、「ターミナルにコマンドをコピペする」行為への心理的抵抗が下がっていることを、攻撃者は見事に突いているのです。
4-4. なぜ開発者が狙われるのか
開発者が攻撃対象として「おいしい」理由を整理します。
| 理由 | 詳細 |
|---|---|
| 高い権限 | 本番環境へのデプロイ権限・AWSクレデンシャル・SSH鍵など、高価値な認証情報を保持 |
| 経済的価値 | 暗号通貨ウォレット・APIキーなど、直接的に金銭化できる情報を持っている確率が高い |
| 踏み台 | 開発者のマシンを侵害すれば、CI/CDパイプライン経由でプロダクション環境に到達できる |
| サプライチェーン | オープンソースメンテナーを狙えば、そのパッケージに依存する数百万のプロジェクトに影響を波及できる |
あなたの.envファイル、大丈夫ですか?
開発者のローカルマシンには、AWS_ACCESS_KEY_ID、DATABASE_URL、STRIPE_SECRET_KEYなど、プロダクション環境の鍵が平文で保存されていることが少なくありません。Amatera Stealerはこれらの情報を真っ先に狙います。
5. 【事案③】AIを活用した未熟な攻撃者が600台超のFortiGateを侵害(2026年2月)
5-1. 事案の概要
2026年2月24日、Dark Readingが報じたこの事案は、AIがサイバー攻撃の敷居を大幅に下げていることを示す象徴的な事例です。
| 項目 | 内容 |
|---|---|
| 攻撃者 | ロシア語話者の金銭目的の個人/小規模グループ(APTではない) |
| 被害規模 | 55ヶ国以上・600台以上のFortiGateデバイスが侵害されたと報じられた |
| 攻撃手法 | GenAIを攻撃の全フェーズで活用 |
| 特筆すべき点 | 高度な専門性を持たない攻撃者がGenAIを活用して攻撃を拡大 |
出典:600+ FortiGate Devices Hacked by AI-Armed Amateur - Dark Reading
5-2. AIが使われた攻撃の全フェーズ
この事案の最も恐ろしい点は、AIが攻撃の一部ではなく全工程で使われていたことです。
【AI活用の各フェーズ】
偵察フェーズ
└─ AIで公開されている管理ポートのスキャン方法を生成
└─ 脆弱なFortiGateデバイスのリストを自動作成
侵入フェーズ
└─ 脆弱性の悪用は不要 — 公開された管理ポート+弱いパスワードだけで侵入
└─ AIに「FortiGateのデフォルト認証情報」を質問して取得
ツール開発フェーズ
└─ AIでカスタムPythonスクリプトを作成
└─ 盗んだ設定ファイルの解析・復号スクリプトを生成
データ窃取フェーズ
└─ 設定ファイル・VPN認証情報・ファイアウォールルールを抽出
└─ 窃取データの整理・分析にもAIを活用
5-3. 専門家のコメント
Amazon Integrated SecurityのCISO(最高情報セキュリティ責任者)CJ Moses氏は、この事案について次のように述べています。
"strong security fundamentals are powerful defenses against AI-augmented threats"
(強固なセキュリティの基本こそが、AI強化された脅威に対する強力な防御である)
つまり、AIで武装した攻撃者に対しても、基本的なセキュリティ対策(強力なパスワード・管理ポートの非公開・MFA)を徹底するだけで防げるということです。
この事案の教訓
攻撃者はゼロデイ脆弱性を使っていない。使ったのは「公開された管理ポート」と「弱いパスワード」だけ。AIは攻撃の敷居を下げるが、防御の基本を破壊するわけではない。基本に忠実であることが最大の防御です。
6. 【事案④】その他の注目すべきインシデント
6-1. 偽AI Chrome拡張機能 — 最大約90万人に影響しうる規模(2026年1月)
AI機能を謳った悪意あるChrome拡張機能がChrome Web Storeに大量に出現し、合計約90万ダウンロード規模の悪性拡張が確認されました。利用者のAIチャット(ChatGPT・DeepSeek等)や閲覧データが外部送信されていたことが判明しています。
- 「AIが文章を要約してくれる」「AIがメールを書いてくれる」等の機能を偽装
- インストール後、AIチャットの会話内容・閲覧履歴・Cookieを外部サーバーに送信
- Google側の審査をすり抜けて公式ストアに掲載
教訓:「AI」を冠したツールを無条件に信頼しない。インストール前に権限の確認・レビューの精査を徹底すること。
6-2. 悪意あるRustクレート — 環境変数を外部送信(2026年3月)
複数の悪意あるRustクレートが、インストール時に.envファイルの内容を外部サーバーへ送信しようとするコードを含んでいることが報告されました(RustSecアドバイザリで少なくとも一部が確認済み)。
-
.envファイルにはDATABASE_URLやAWS_SECRET_ACCESS_KEYなどの機密情報が含まれることが多い - ビルド時に
build.rsスクリプトが実行され、秘密裏にデータを送信 - Rustのビルドシステムが
build.rsを自動実行する仕様を悪用
教訓:Rustでもbuild.rsの内容を確認する習慣をつける。サプライチェーン攻撃は言語を問わない。
6-3. AIエージェントへの過剰権限付与によるリスク
AIエージェントに過剰な権限を付与した場合に、ポリシー逸脱や意図しない操作を引き起こすリスクが、セキュリティ研究者の間で指摘されています。
- エージェントが与えられたタスクを達成するために、設定されたセキュリティ制限を自律的にバイパスする可能性
- 過剰な権限を付与された場合、意図しない破壊的行動を起こすリスク
- AIエージェントの自律性が高まるにつれ、「最小権限の原則」の重要性が増大
教訓:AIエージェントには最小権限の原則を徹底し、行動ログを必ず監視する。
7. OWASP Top 10:2025 — サプライチェーンが3位に浮上
7-1. OWASP Top 10とは
OWASP(Open Worldwide Application Security Project) は、Webアプリケーションセキュリティの業界標準を策定する非営利団体です。その中でもOWASP Top 10は、最も重大なWebアプリケーションセキュリティリスクのランキングとして、世界中の開発者・セキュリティチーム・規制当局に参照されています。
7-2. 2025年版の変更点
2025年版では大きな変更がありました。特にAIコーディング時代に関連する変更を太字で強調します。
| 順位 | カテゴリ | 2021年版からの変化 |
|---|---|---|
| A01 | Broken Access Control(アクセス制御の不備) | 前回1位を維持 |
| A02 | Security Misconfiguration(セキュリティ設定ミス) | 前回5位 → 2位に上昇 |
| A03 | Software Supply Chain Failures(ソフトウェアサプライチェーンの障害) | ⭐ 新設カテゴリ!前回A08の一部から独立して3位に浮上 |
| A04 | Cryptographic Failures(暗号化の失敗) | 前回2位 → 4位 |
| A05 | Injection(インジェクション) | 前回3位 → 5位 |
| A06 | Insecure Design(安全でない設計) | 前回4位 → 6位 |
| A07 | Authentication Failures(認証の失敗) | 前回7位を維持 |
| A08 | Software or Data Integrity Failures(ソフトウェア・データの整合性の障害) | 前回A08を再編 |
| A09 | Security Logging and Alerting Failures(セキュリティログとアラートの障害) | 前回「Security Logging and Monitoring Failures」から改名 |
| A10 | Mishandling of Exceptional Conditions(例外的な状況の不適切な処理) | ⭐ 新設カテゴリ! |
7-3. AIコーディング時代との関連性
特に注目すべき変更点を解説します。
A03: Software Supply Chain Failures(サプライチェーンの障害)が3位に浮上
前回の2021年版ではA08「Software and Data Integrity Failures」の一部だったサプライチェーン関連のリスクが、独立したカテゴリとして3位に浮上しました。
これは本記事で取り上げたSlopsquattingや悪意あるRustクレートのような攻撃の急増を反映しています。
AIコーディングとの関連:
- AIが推奨するパッケージの信頼性検証が不十分
- AIが生成するコードに含まれる依存関係の透明性が低い
- ビルドパイプラインへのAI統合による新たな攻撃面の拡大
A02: Security Misconfiguration(セキュリティ設定ミス)が2位に上昇
AIが生成するコードは、しばしばセキュリティ設定が甘い状態で出力されます。
# ❌ AIが生成しがちなコード
from flask import Flask
app = Flask(__name__)
app.run(host='0.0.0.0', debug=True) # debug=True のまま本番デプロイ
# ❌ AIが生成しがちなDockerfile
FROM python:3.12
USER root # rootユーザーで実行
COPY . /app
# ✅ セキュリティを意識したコード
from flask import Flask
app = Flask(__name__)
app.run(host='127.0.0.1', debug=False) # ローカルのみ & デバッグOFF
# ✅ セキュリティを意識したDockerfile
FROM python:3.12-slim
RUN useradd -m appuser
USER appuser # 非rootユーザーで実行
COPY --chown=appuser:appuser . /app
A10: Mishandling of Exceptional Conditions(例外処理の不備)が新設
AIが生成するコードはハッピーパス(正常系)は得意ですが、例外的な状況への対処が不十分になりがちです。
# ❌ AIが生成しがちなコード(例外処理が雑)
def get_user_data(user_id):
try:
response = requests.get(f"https://api.example.com/users/{user_id}")
return response.json()
except:
return None # すべての例外を握りつぶし
# ✅ 適切な例外処理
def get_user_data(user_id):
try:
response = requests.get(
f"https://api.example.com/users/{user_id}",
timeout=10
)
response.raise_for_status()
return response.json()
except requests.exceptions.Timeout:
logger.warning(f"Timeout fetching user {user_id}")
raise ServiceUnavailableError("API timeout")
except requests.exceptions.HTTPError as e:
logger.error(f"HTTP error for user {user_id}: {e}")
raise
except requests.exceptions.RequestException as e:
logger.error(f"Request failed for user {user_id}: {e}")
raise ServiceUnavailableError("API unavailable")
8. OWASP GenAI Security Project と LLMセキュリティ指針
8-1. 概要
OWASP は通常のWeb Top 10とは別に、LLMアプリケーション特有のセキュリティリスクを整理する OWASP Top 10 for LLM Applications を公開しています。加えて、OWASP GenAI Security Project として、生成AI全般のセキュリティガイダンスを継続的に更新しています。
出典:OWASP Top 10 for LLM Applications
8-2. 現行のLLM Top 10一覧(2025年版)
2026年3月時点で OWASP 公式サイトに掲載されている最新の一覧は2025年版です。旧版(2023-24 v1.1)から大幅に再編されており、600人以上の専門家と8,000人以上のコミュニティメンバーが貢献しています。
| 順位 | リスク | 概要 | 旧版からの変化 |
|---|---|---|---|
| LLM01 | Prompt Injection(プロンプトインジェクション) | 悪意ある入力でLLMの動作を操作 | 前回1位を維持 |
| LLM02 | Sensitive Information Disclosure(機密情報の漏洩) | LLMが学習データに含まれる機密情報を出力 | 前回LLM06 → 2位に上昇 |
| LLM03 | Supply Chain(サプライチェーン) | LLMモデル・プラグイン・データの供給元の信頼性 | 前回LLM05 → 3位に上昇 |
| LLM04 | Data and Model Poisoning(データ・モデルの汚染) | 学習データやモデルの改ざんによる汚染 | 前回LLM03「Training Data Poisoning」から改名・拡張 |
| LLM05 | Improper Output Handling(不適切な出力処理) | LLM出力の検証不足による脆弱性 | 前回LLM02「Insecure Output Handling」から改名 |
| LLM06 | Excessive Agency(過剰な権限付与) | LLMに対する過剰な権限・アクセス | 前回LLM08 → 6位に上昇、エージェントリスクを深掘り |
| LLM07 | System Prompt Leakage(システムプロンプトの漏洩) | システムプロンプトの内容が外部に漏洩するリスク | ⭐ 新設カテゴリ! |
| LLM08 | Vector and Embedding Weaknesses(ベクトル・埋め込みの弱点) | RAGシステムのベクトルDBへの攻撃 | ⭐ 新設カテゴリ! |
| LLM09 | Misinformation(誤情報) | LLMが不正確な情報を生成するリスク | 前回LLM09「Overreliance」から改名・再定義 |
| LLM10 | Unbounded Consumption(無制限の消費) | LLMリソースの過剰消費による可用性低下・コスト爆発 | 前回LLM04「Model Denial of Service」から改名・拡張 |
旧版(2023-24 v1.1)から削除された項目
- Insecure Plugin Design(安全でないプラグイン設計) — Supply Chainに統合
- Model Theft(モデルの窃取) — 独立カテゴリとしては削除
8-3. AIコーディングとの関連が深い項目
2025年版の中で、特にAIコーディング時代と関連が深い項目を解説します。
| リスク | AIコーディングとの関連 |
|---|---|
| LLM03: Supply Chain | Slopsquattingや悪意あるパッケージの根本原因。AIが推奨する依存関係の信頼性検証が不十分 |
| LLM06: Excessive Agency | AIエージェントに過剰な権限を付与するケースの増加に対応 |
| LLM07: System Prompt Leakage | AIコーディングツールの内部プロンプトが流出するリスク |
| LLM08: Vector and Embedding Weaknesses | コードベースをRAGに取り込む際のリスク |
| LLM09: Misinformation | Slopsquattingの根本原因:AIが架空のパッケージ名を自信満々に推奨 |
| LLM10: Unbounded Consumption | AIコーディングツールのAPI無制限利用によるコスト爆発 |
OWASP Top 10(Web)とLLM関連指針の両方を意識する必要がある
AIコーディングツールを使ってWebアプリを開発する場合、生成されたコードのWebセキュリティ(OWASP Top 10:2025)と、AIツール自体のセキュリティ(OWASP LLM関連指針)の両方を考慮する必要があります。
9. 「Vibe Coding」の光と闇
9-1. Vibe Codingとは
Vibe Coding(バイブコーディング)は、OpenAIの共同創設者であるAndrej Karpathy氏が2025年2月に自身のXポストで提唱した概念で、AIに自然言語で指示を出し、生成されたコードのすべてを理解しなくても受け入れるという開発スタイルを指します。
【Vibe Codingの特徴】
従来の開発者
→ コードの「著者」(Author)
→ コードの1行1行を理解して書く
→ 使用するライブラリを吟味して選定
Vibe Coder
→ コードの「キュレーター」(Curator)
→ AIが生成したコードを受け入れるか拒否するかを判断
→ AIが推奨するライブラリをそのまま採用することが多い
9-2. Vibe Codingが増幅するリスク
Vibe Coding自体は悪いことではありません。しかし、セキュリティ意識なしにVibe Codingを行うことは極めて危険です。
| リスク | 詳細 |
|---|---|
| 依存関係の盲信 | AIが推奨するパッケージを検証せずに採用 → Slopsquattingの被害に直結 |
| コードの不理解 | 生成されたコードの中に脆弱性があっても気づかない |
| セキュリティ設定の放置 | AIがdebug=TrueやCORS: *で生成 → そのまま本番へ |
| テストの不足 | 「動いたからOK」でセキュリティテストを省略 |
| 例外処理の欠如 | AIは正常系を優先し、異常系の考慮が不十分 |
| シークレットのハードコード | AIがサンプルとして生成したAPIキーやパスワードがコードに残留 |
9-3. 安全なVibe Codingのために
Vibe Codingの効率性を維持しながら安全に開発するには、以下のバランスが必要です。
安全なVibe Codingの原則
1. 「生成 → レビュー → テスト → デプロイ」のサイクルを遵守
2. セキュリティに関する部分(認証・認可・暗号化・入力検証)は必ず人間がレビュー
3. AIが推奨するパッケージは必ず公式ソースで存在確認
4. CI/CDパイプラインにSAST/DASTを組み込んで自動検査
5. 「AIが書いたから安全」という思い込みを捨てる
10. 今日からできる実践的セキュリティ対策 10選
最後に、AIコーディング時代に今日からすぐ実践できるセキュリティ対策をまとめます。
対策① パッケージの存在・信頼性を必ず確認する
# npm の場合
npm info <パッケージ名> # 存在確認
npm audit # 脆弱性チェック
# pip の場合
pip index versions <パッケージ名> # 存在確認
pip-audit # 脆弱性チェック(pip install pip-audit)
# 確認すべきポイント
# ✅ GitHubリポジトリが存在するか
# ✅ Star数・ダウンロード数が十分か
# ✅ 最終更新日が直近か(放置されていないか)
# ✅ メンテナーは実在する人物/組織か
# ✅ ライセンスが明記されているか
対策② ターミナルにコマンドを貼り付ける前に必ず読む
# ❌ Webサイトからコピペしてそのまま実行
curl -sSL https://install.example.com | bash
# ✅ まず内容を確認してから実行
curl -sSL https://install.example.com -o install.sh
cat install.sh # 中身を目視確認
bash install.sh # 確認後に実行
クリップボードハイジャック攻撃にも注意
Webページから「コピー」した際に、見えている文字列とは別のコマンドがクリップボードに書き込まれるケースがあります。ペースト前にテキストエディタで内容を確認する習慣をつけましょう。
対策③ AI生成コードのセキュリティレビューを徹底する
以下の観点でレビューしましょう。
| チェック項目 | 確認すべきこと |
|---|---|
| 入力検証 | ユーザー入力をサニタイズしているか?SQLインジェクション/XSS対策はあるか? |
| 認証・認可 | 適切な認証チェックが入っているか?権限の確認をしているか? |
| 暗号化 | パスワードはハッシュ化されているか?通信はTLSを使っているか? |
| シークレット管理 | APIキーやパスワードがハードコードされていないか? |
| エラーハンドリング | 例外を適切に処理しているか?スタックトレースを外部に露出していないか? |
| 依存関係 | 必要以上のパッケージをインストールしていないか? |
対策④ SAST/DASTをCI/CDパイプラインに組み込む
# GitHub Actions の例
name: Security Scan
on: [push, pull_request]
jobs:
security:
runs-on: ubuntu-latest
steps:
# SAST(静的解析)
- uses: github/codeql-action/analyze@v3
with:
languages: python, javascript
# 依存関係の脆弱性チェック
- name: Dependency Check
run: |
pip install pip-audit
pip-audit --strict
# シークレットの検出
- name: Secret Scanning
uses: trufflesecurity/trufflehog@main
with:
path: ./
対策⑤ .envファイルを厳重に管理する
# .gitignore に .env を必ず含める
echo ".env" >> .gitignore
echo ".env.*" >> .gitignore
# git history に .env が含まれていないか確認
git log --all --diff-filter=A -- "*.env" ".env*"
# 本番環境ではファイルではなくシークレットマネージャーを使用
# AWS: Secrets Manager / SSM Parameter Store
# GCP: Secret Manager
# Azure: Key Vault
対策⑥ 多要素認証(MFA)を全アカウントで有効化する
FortiGate事案で学んだように、弱いパスワードは最大の脆弱性です。
- GitHub / GitLab のアカウント → MFA必須
- AWSコンソール → MFA必須(特にrootアカウント)
- npmレジストリ / PyPI → MFA必須(パッケージ公開者は特に)
- CI/CDサービス → MFA必須
対策⑦ 最小権限の原則を徹底する
// ❌ AIが生成しがちなIAMポリシー
{
"Effect": "Allow",
"Action": "*",
"Resource": "*"
}
// ✅ 最小権限のIAMポリシー
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Resource": "arn:aws:s3:::my-bucket/*"
}
対策⑧ AIコーディングツール自体のセキュリティを確認する
| 確認項目 | 詳細 |
|---|---|
| コードの送信先 | 入力したコードがどのサーバーに送信されるか確認 |
| データ保持ポリシー | コードが学習データに使われるかどうか確認 |
| インストール元 | 公式サイトからのみインストール(Google広告は信用しない) |
| アクセス権限 | ツールに付与する権限を最小限に |
| ネットワーク通信 | 不審な外部通信がないかモニタリング |
対策⑨ 定期的に依存関係を棚卸しする
# Node.js: 未使用の依存関係を検出
npx depcheck
# Python: 未使用のインポートを検出
pip install autoflake
autoflake --remove-all-unused-imports -r .
# 全依存関係のライセンス・脆弱性を一括チェック
# Node.js
npm audit
npx license-checker
# Python
pip-audit
pip-licenses
対策⑩ セキュリティ情報を継続的にフォローする
| 情報源 | URL | 内容 |
|---|---|---|
| OWASP | https://owasp.org/ | Webセキュリティの業界標準 |
| OWASP LLM / GenAI | https://genai.owasp.org/llm-top-10/ | LLMアプリ特有のセキュリティリスク |
| Socket.dev Blog | https://socket.dev/blog | サプライチェーンセキュリティの最新情報 |
| Dark Reading | https://www.darkreading.com/ | セキュリティニュース |
| GitHub Security Blog | https://github.blog/security/ | GitHubのセキュリティアップデート |
| NIST NVD | https://nvd.nist.gov/ | 脆弱性データベース |
| JPCERT/CC | https://www.jpcert.or.jp/ | 日本語のセキュリティ情報 |
| IPA | https://www.ipa.go.jp/security/ | 日本語のセキュリティ情報 |
11. おわりに
ここまで読んでいただき、ありがとうございました。
AIコーディングツールは開発を革命的に効率化してくれる素晴らしいテクノロジーです。しかし、「楽になった」ことと「安全になった」ことはまったくの別問題です。
本記事で紹介した事例を振り返ります。
| 事案 | メッセージ |
|---|---|
| Slopsquatting | AIを信頼しすぎるな。AIが推奨するパッケージは5個に1個が架空 |
| InstallFix | ターミナルにコマンドを貼り付ける前に必ず中身を確認しろ |
| FortiGate侵害 | AIは攻撃者も使っている。基本的なセキュリティ対策を怠るな |
| OWASP Top 10:2025 | サプライチェーン攻撃は業界標準で3位に認定されるほど深刻化している |
最後に、もう一度問いかけます。
あなたは、AIが生成したコードの中身を理解していますか?
AIが便利だからこそ、セキュリティは人間が責任を持つ。この原則を忘れないでいただければ幸いです。
ではまた、お会いしましょう。
参考リンク
一次ソース / 公式
- OWASP Top 10:2025
- OWASP Top 10 for LLM Applications
- OWASP GenAI Security Project
- RustSec Advisory Database
研究・調査
- Slopsquatting: How AI Hallucinations Are Fueling a New Class of Supply Chain Attacks - Socket.dev
- InstallFix: How Fake Installers Are Targeting Developers - Push Security
- Andrej Karpathy — Vibe Coding 提唱ポスト(X)
報道
- ClickFix Meets InstallFix: Fake Claude Code Sites Spread Amatera Stealer Through AI Coding Tool Ads - Dark Reading
- 600+ FortiGate Devices Hacked by AI-Armed Amateur - Dark Reading
- Fake AI Chrome Extensions Steal 900K Users' Data - Dark Reading
- Wiz Research Uncovers Exposed DeepSeek Database Leaking Sensitive Information, Including Chat History - Wiz