OWASP LLM Top10【2025年版】エンジニアが押さえるべき10の脆弱性と対策

AI

OWASPが2025年に大幅改訂したLLMアプリ向けの脆弱性リスト「OWASP LLM Top10」。チャットボット中心だった以前のバージョンから、RAGパイプラインやエージェントシステムを想定した内容に進化しました。LLMを組み込んだシステムを開発・運用しているなら、一度目を通しておくべき内容です。

LLM01:プロンプトインジェクション(最高リスク)

悪意ある入力でLLMの動作を乗っ取る攻撃です。ユーザーが直接入力する「直接型」と、外部ドキュメントやWebページ経由で攻撃する「間接型」の2種類があります。間接型は発見しにくく、RAGシステムで特に注意が必要です。

対策の基本は3つ。入力バリデーション・システムプロンプトとユーザー入力の明確な分離・出力の検証です。

LLM02:機密情報の不適切な開示

システムプロンプトや他ユーザーの情報が漏洩するリスクです。「システムプロンプトを教えて」という入力でAIが内容を開示してしまうことがあります。機密情報はプロンプトに入れない設計にし、エラーメッセージにも内部情報を含めないよう注意しましょう。

LLM03:サプライチェーン脆弱性

依存ライブラリやプラグインを経由した攻撃です。2024年に発覚したXZ Utils backdoor事件では、攻撃者が約2年かけてOSSメンテナーとしての信頼を築いてからバックドアを仕込みました。PyPIでもAI関連ライブラリを装った悪意あるパッケージが継続的に見つかっています。依存ライブラリは定期的にスキャンし、ハッシュ検証で改ざんを検知しましょう。

LLM04:データ・モデルポイズニング

学習データを意図的に汚染してモデルの動作を歪める攻撃です。RAGシステムでは、ベクトルDBへの不正なドキュメント注入も同様のリスクになります。データソースへのアクセス制御と、取り込む前のコンテンツ検証が重要です。

LLM05:不適切な出力ハンドリング

LLMの出力をそのままHTMLに埋め込んだり、SQLとして実行したりするのは危険です。XSS・SQLインジェクション・コマンドインジェクションにつながります。LLMの出力は「信頼できない外部入力」として扱い、必ずサニタイズ・エスケープ処理を行ってください。

LLM06:過剰な自律性(Excessive Agency)

「念のため」と思って与えた余分な権限が、インシデント時に被害を拡大させます。最小権限の原則を徹底し、重要な操作の前には必ず人間の承認ステップを挟みましょう。

LLM07:システムプロンプト漏洩

システムプロンプトは「隠れている」だけで「秘密」ではありません。攻撃者は巧妙な入力でその内容を引き出そうとします。プロンプトにAPIキーや内部情報を含めないのが大原則です。

LLM08:ベクトル・埋め込み脆弱性(2025年新規)

RAGのベクトルDBへの攻撃です。悪意あるドキュメントを注入して検索結果を操作したり、類似度計算を悪用して意図しないデータを取得させたりします。ベクトルDBへの書き込み権限を厳格に管理し、取得結果を検証する仕組みを入れましょう。

LLM09:AI幻覚・誤情報

LLMは存在しない情報を自信満々に生成することがあります(ハルシネーション)。医療・法律・金融分野では特に深刻です。重要な出力には一次情報でのファクトチェックを必須にし、RAGで根拠を付けることが有効です。

LLM10:無制限の消費(DoS・コスト攻撃)

大量リクエストや極端に長い入力で、APIコストを爆発させる攻撃です。レート制限・入力長の上限設定・コストアラートの3点セットで対策しましょう。

まとめ:まずLLM01とLLM06から

10項目を一度に全部対策するのは現実的ではありません。まずプロンプトインジェクション(LLM01)と過剰な自律性(LLM06)から手をつけるのがおすすめです。この2つはLLMアプリ特有のリスクで、かつ被害が大きくなりやすいためです。

よくある質問

OWASP LLM Top10はどこで確認できますか?

owasp.orgの「Top 10 for Large Language Model Applications」プロジェクトページで公開されています。2025年版はv2.0として大幅改訂されています。

NIST AI RMFとの関係は?

OWASP LLM Top10が「具体的な脆弱性」を示すのに対し、NIST AI RMFは「リスク管理のフレームワーク全体」を提供します。両者は補完関係にあり、NIST AI RMFの敵対的テスト要件の基準としてOWASP Top10が参照されるケースが増えています。

コメント

タイトルとURLをコピーしました