OWASP LLM Top 10
LLMアプリケーションの主なリスクを学びます。
「OWASP LLM Top 10」はCoddyKit上の無料Cyber Security Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCyber Security Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cyber Security Academyコースには全4レッスンが含まれています。
なぜLLM Top 10なのか
OWASP Top 10 for Large Language Model Applicationsは、LLM上に構築されたシステムに特有の、最も重大なセキュリティリスクをまとめた、コミュニティ主導のリストです。広く知られているOWASP Web Top 10を踏襲しつつ、従来のAppSecリストでは扱われない脅威を対象としています。
LLMアプリケーションによって、自然言語による制御フロー、非決定的な出力、モデルのサプライチェーン、自律型エージェントという新たな攻撃対象領域が生まれるため、このリストが作成されました。セキュリティチームに共通の語彙と、脅威モデリングのためのチェックリストを提供します。
以下のコードには、2025年版のLLM01-LLM10という番号が使われています。
LLM01 プロンプトインジェクション
LLM01: プロンプトインジェクションは、一貫して最大のリスクです。攻撃者が制御するテキストによって開発者の指示が上書きされます。これは、モデルが信頼できる指示と信頼できないデータを区別できないためです。
- 直接的: ユーザーが上書き指示を入力します。
- 間接的: 取得したWebページ、ファイル、またはツール出力に指示が隠されています。
対策として、ツールには最小権限を適用し、取得したすべてのコンテンツをデータとして扱い、機密性の高い操作には人間による確認ポイントを設け、データ流出経路を断ちます。
LLM02 機密情報の漏えい
LLM02: 機密情報の漏えいは、モデルが開示すべきでないデータを明らかにする問題です。対象には、PII、秘密情報、独自の学習データ、または別のテナントの情報が含まれます。
情報漏えいは、モデルが記憶した学習データ、過度に広いコンテキスト注入、または認証情報を含むシステムプロンプトによって発生します。
- コンテキストに含めるデータをサニタイズし、最小限にします。
- プロンプトに有効な秘密情報を決して含めず、スコープを限定した短期間有効なトークンを別経路で使用します。
- 応答を返す前に、出力フィルタリングとデータ損失防止(DLP)チェックを適用します。
LLM03 サプライチェーン
LLM03: サプライチェーンのリスクは、サードパーティ製のモデル、データセット、プラグイン、ライブラリに起因します。汚染されたベースモデル、モデルハブから取得したバックドア入りのファインチューニングモデル、または悪意のあるPython依存関係によって、アプリ全体が侵害される可能性があります。
- モデルの出所とチェックサムを検証します。
- バージョンを固定し、ライセンスを確認します。
- pickle形式のモデルファイルをスキャンします(
pickleは読み込み時にコードを実行できます)。また、safetensorsのような安全な形式を優先します。
# Pickle deserialization can run arbitrary code on load.
# Prefer safetensors for untrusted model weights:
from safetensors.torch import load_file
state = load_file("model.safetensors")LLM04 データおよびモデルのポイズニング
LLM04: データおよびモデルのポイズニングは、学習またはファインチューニングのパイプラインを標的にします。学習データに影響を与えられる攻撃者は、バックドア(隠されたトリガー)を埋め込んだり、出力に偏りを生じさせたり、品質を低下させたりできます。
ユーザーが投稿した文書を取り込むRAGパイプラインは、デプロイ後もポイズニングの攻撃面になります。
- 学習データのソースを審査し、署名します。
- データセットに異常検知を適用します。
- ユーザーが提供したコンテンツを分離して確認してからインデックス化します。
LLM05 不適切な出力処理
LLM05: 不適切な出力処理は、下流のコンポーネントが検証なしにモデルの出力を信頼すると発生します。出力はインジェクションによって攻撃者の影響を受ける可能性があるため、それを検証せずにシェル、SQLクエリ、ブラウザー、またはevalに渡すことは、XSS、SSRF、RCEへの直接的な経路になります。
原則: LLMの出力は、信頼できないユーザー入力とまったく同じように扱います。インタープリターに渡す前に、エンコード、検証、サンドボックス化を行います。
# DANGEROUS: model output flows straight into a shell
os.system(model_output) # never do this
# SAFER: validate against an allowlist, no shell
if action in ALLOWED_ACTIONS:
run_safe(action, args)LLM06 過剰な自律性
LLM06: 過剰な自律性は、モデルに過剰な機能、権限、または自律性を与えることで生じる被害です。モデルがツールを呼び出せる場合、インジェクションは単なるテキストではなく、実際の操作になります。
- 過剰な機能: アプリが実際には必要としないツール。
- 過剰な権限: readで十分なのにwrite/delete権限を持つツール。
- 過剰な自律性: 人間による承認がない、高い影響を及ぼす操作。
ツールごとに最小権限を適用し、取り消せない操作には確認を必須にします。
LLM07 システムプロンプトの漏えい
LLM07: システムプロンプトの漏えいは、システムプロンプトが安全な秘密情報の保管場所ではないことを示します。攻撃者は多くの場合、システムプロンプトを抽出できます。また、システムプロンプトに認証情報、隠れたビジネスロジック、またはさらなる攻撃に役立つフィルタリングルールが含まれていることもあります。
- システムプロンプトは復元可能だと想定し、秘密情報やキーを決して埋め込まないでください。
- プロンプトのルールが守られることを期待するのではなく、バックエンドで認可を適用します。
- セキュリティ制御がプロンプトのテキストだけに存在する場合は、その制御が破られるものとして扱います。
LLM08、LLM09、LLM10
残りの項目は次のとおりです。
- LLM08 ベクトルおよび埋め込みの脆弱性: RAGの埋め込みに関するリスクです。テナント間の漏えい、埋め込みの反転、汚染された文書のインデックス化などが含まれます。取得時にアクセス制御を適用します。
- LLM09 誤情報: 自信ありげなハルシネーションと過信の問題です。重要度の高い出力には、グラウンディング、引用、人間による確認を追加します。
- LLM10 無制限な消費: 高コストまたは暴走するクエリによるdenial-of-walletやDoSです。レート制限、トークン予算、タイムアウト、コストアラートを適用します。
脅威モデリングでリストを活用する
Top 10は、設計レビューで構造化されたチェックリストとして使用すると最も役立ちます。
- 各コンポーネント(入力、取得、ツール、出力)を関連するLLMリスクに対応付けます。
- 各リスクについて、具体的な制御と担当者を特定します。
- 悪用ケースを記述し、自動テストに変換します。
標準のOWASP Top 10、ML固有の戦術を扱うMITRE ATLAS、ガバナンス向けのNIST AI Risk Management Frameworkなど、既存のフレームワークと組み合わせて使用します。
チェックリストから多層防御へ
これらのリスクを単独でカバーできる制御はありません。複数の層を組み合わせます。
- 入力層: 検証、分類、レート制限。
- モデル層: 最小権限のツール、スコープを限定したコンテキスト、ガードモデル。
- 出力層: 検証、エンコード、DLP、人間による承認。
- プラットフォーム層: ロギング、監視、サプライチェーンの検証、コスト制御。
どの層も失敗する可能性があると想定し、1つの障害が侵害につながらないように設計します。
クイックチェック
OWASP LLMのカテゴリについての理解度を確認します。
まとめ
OWASP LLM Top 10の概要:
- LLM01 プロンプトインジェクション、LLM02 機密情報の漏えい、LLM03 サプライチェーン、LLM04 データおよびモデルのポイズニング、LLM05 不適切な出力処理。
- LLM06 過剰な自律性、LLM07 システムプロンプトの漏えい、LLM08 ベクトルおよび埋め込みの脆弱性、LLM09 誤情報、LLM10 無制限な消費。
- モデルの出力とシステムプロンプトは、信頼できず秘密でもないものとして扱います。
- このリストを脅威モデリングのチェックリストとして使用し、MITRE ATLASおよびNIST AI RMFと組み合わせ、入力、モデル、出力、プラットフォームの各層で多層防御を適用します。
AI チューターと学ぶ Cyber Security Academy — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 76
- レッスン
- 303
よくある質問
「OWASP LLM Top 10」レッスンは無料ですか?
はい。「OWASP LLM Top 10」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cyber Security Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cyber Security Academyコースには全4レッスンが含まれています。
「OWASP LLM Top 10」で何を学びますか?
LLMアプリケーションの主なリスクを学びます。 ブラウザで直接実行するハンズオンコードでCyber Security Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Cyber Security Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCyber Security Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「OWASP LLM Top 10」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCyber Security Academyレッスンでコードを書いて実行できますか?
はい。すべてのCyber Security Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- プロンプトインジェクションとJailbreak
- OWASP LLM Top 10
- AIエージェントとツール利用の保護
- モデル、データ、サプライチェーンのリスク