【技術解説】生成AI開発者が絶対知っておくべき「OWASP Top 10 for LLM」とは? プロンプトインジェクションの仕組みと対策
こんにちは、Udemy講師の神草経知です。
ChatGPT APIやLangChainを用いたアプリケーション開発が一般的になりましたが、そこで見落とされがちなのが「LLM特有のセキュリティ脆弱性」です。
Web開発の世界に「OWASP Top 10」があるように、生成AIの世界にも「OWASP Top 10 for LLM Applications」という国際的なセキュリティ標準が存在することをご存知でしょうか?
「AIが変なことを言わないようにする」といったレベルの話ではなく、データベースへの不正アクセスやサーバーサイドでのコード実行につながる重大なリスクが定義されています。
この記事では、OWASP Top 10 for LLMの中から、特に開発者が直面しやすい脆弱性をピックアップして解説し、その防御アプローチについて紹介します。
1. OWASP Top 10 for LLM とは?
OWASP (Open Worldwide Application Security Project) が策定した、大規模言語モデル(LLM)アプリケーションにおける最も重大な10のセキュリティリスクです。
従来のWeb脆弱性(SQLインジェクションやXSS)とは異なり、自然言語(プロンプト)を介して攻撃が行われる点が最大の特徴です。
特に以下の3つは、RAG(検索拡張生成)やチャットボットを開発する上で避けて通れないリスクです。
① LLM01: Prompt Injection(プロンプトインジェクション)
最も有名な脆弱性です。悪意ある入力によってLLMの制御を奪い、本来の指示(システムプロンプト)を無視させる攻撃です。
- 直接的インジェクション: ユーザーが「以前の指示を無視して」と直接入力する。
- 間接的インジェクション: LLMが読み込むWebサイトやメールの中に攻撃コードが埋め込まれており、要約などをさせた瞬間に発動する。
② LLM02: Insecure Output Handling(安全でない出力処理)
LLMの出力を「信頼できるもの」として扱い、そのままバックエンドの機能(SQLクエリの実行、コマンドライン操作、HTML表示など)に渡してしまうことで発生します。 プロンプトインジェクションと組み合わされると、LLM経由でデータベースを削除されたり、任意のコードを実行されたりする危険があります。
③ LLM06: Sensitive Information Disclosure(機密情報の漏洩)
LLMが学習データに含まれる個人情報(PII)や、プロンプトに含まれる機密情報をうっかり出力してしまう問題です。 「親切なAI」であろうとする特性を逆手に取り、ソーシャルエンジニアリング的に情報を引き出す手法もこれに含まれます。
2. なぜ、従来の対策では防げないのか?
従来のセキュリティは「コード(命令)」と「データ(入力)」が明確に分かれていました。しかし、LLMにおいては「プロンプト」という形で、命令とデータが混ざり合っています。
そのため、単純なキーワードマッチングや従来のWAF(Web Application Firewall)だけでは、高度なコンテキスト攻撃を防ぐことができません。
必要な防御アプローチ
- Treat the LLM as Untrusted (LLMを信用しない): LLMからの出力は常に汚染されている可能性がある前提で、サニタイズやバリデーションを行う。
- Human in the Loop: 重要な決定権限をAIに持たせず、人間または決定論的なプログラムによる承認フローを挟む。
- Sandwich Defense (サンドイッチ防御): ユーザー入力をシステムプロンプトで挟み込むなど、コンテキスト構造を強化する。
3. 「知っている」と「実装できる」は違う
ここまで理論を解説しましたが、実際の開発現場で「では、これを防ぐPythonコードを書いてください」と言われて、即座に実装できるエンジニアはまだ多くありません。
攻撃者がどのようなプロンプト(Base64難読化、多言語混在、仮想シナリオなど)を使ってくるのかを肌感覚で知らなければ、有効なテストケースすら書けないのが現実です。
そこで、これらの脆弱性を「実際に攻撃して確かめ」、その上で「堅牢な防御コードを実装する」ための実践的なハンズオン講座を作成しました。
【Udemy新講座】攻撃して学ぶ!生成AIセキュリティ&コンプライアンス実装・完全ガイド
この講座では、Google Colab上でローカルLLM(Gemma)を動かし、以下のステップで「OWASP Top 10 for LLM」への対抗策を身につけます。
- Red Teaming(攻撃演習): 自分の手で「システムプロンプト抽出」や「権限昇格攻撃」を行い、AIがいかに簡単に騙されるかを体感します。API BANのリスクがないローカル環境なので、過激なテストも可能です。
- Blue Teaming(防御実装): 攻撃が成功した直後に、それを防ぐためのPythonコード(入力フィルタ、サニタイズ、RBAC連携)を実装し、攻撃が通らなくなることを確認します。
- コンプライアンス: 技術面だけでなく、著作権や個人情報保護など、リリース時に必要な法的知識もカバーします。
座学だけでなく「動くコード」としてセキュリティ対策を手元に残したい方は、ぜひ活用してください。
- 講座名: 【攻撃して学ぶ】生成AIセキュリティ&コンプライアンス実装・完全ガイド
AIGYM_SECURITYと入力し割引適用を受けられるのは2025/12/1までですのでご留意ください。
安全で信頼されるAIアプリケーション開発のために、このスキルが皆様の武器になることを願っています。