2025版 OWASP LLMアプリケーションのトップ10解説

本記事は [生成AIセキュリティ by ナレコム Advent Calendar 2024](https://qiita.com/advent-calendar/2024/genai-sec-knowcom) の1日目の記事です。

本Advent Calendarは、国内で唯一の技術領域 **責任あるAI** の [MVP受賞者](https://mvp.microsoft.com/en-US/MVP/profile/28dff07e-3dba-4772-97b9-944418868456) を中心に、生成AIを含めたAIやデータを企業が利活用するときに気をつけるセキュリティやガバナンスを中心に紹介します。

## はじめに：LLMの進化とセキュリティ課題
近年、大規模言語モデル（Large Language Models、LLM）は、AI技術の進化を象徴する存在となり、チャットボット、文章生成ツール、データ分析サポートなど、さまざまな分野でその活用が進んでいます。これらの技術革新により、**生産性向上や業務効率化が期待される一方で、新たなセキュリティリスクも顕在化しています。**

生成AIのセキュリティ課題は、従来のソフトウェアの脆弱性と異なり、AIモデル特有のリスクを含んでいます。たとえば、ユーザーが入力するプロンプト（命令文）を悪用してモデルの動作を意図的に変更する「プロンプトインジェクション」、トレーニングデータに細工を施してモデルの出力に影響を与える「データポイズニング」、そしてモデルが不正確または虚偽の情報を生成する「ハルシネーション」などが挙げられます。特にハルシネーションは、モデルが信頼性の低いデータや誤解された文脈を基に応答を生成することで発生し、利用者が意図しない誤った意思決定を招くリスクがあります。

本記事では、2025年版の「OWASP LLMアプリケーションのトップ10」を基に、LLMに関わる主要なセキュリティ脅威とその予防策を分かりやすく紹介します。このリストは、開発者やセキュリティ専門家がLLMを安全に活用するための基盤となるものです。

## 「OWASP LLMアプリケーションのトップ10」とは？
「OWASP LLMアプリケーションのトップ10」は、OWASP（Open Worldwide Application Security Project：オワスプ）が提唱するセキュリティフレームワークで、LLMアプリケーションに特化した10種類のセキュリティリスクをまとめたものです。このプロジェクトは、生成AIの急速な普及とともに発生した新たな課題を解決するために、2023年に始動しました。

このリストは、開発者やセキュリティ専門家がリアルタイムで直面している問題や、業界全体からのフィードバックを基に作成されています。2025年版では、以下のような改良が加えられました：

**新しい脅威の追加**：システムプロンプト漏洩やリソース過剰消費など、実際の攻撃事例を基にしたリスクが新たに加えられました。
**実践的な対策の提示**：各脅威に対して、より具体的で効果的な緩和策が提案されています。
**現実世界の適用性**：企業や個人が直面する実例を取り入れ、より実用的な内容に進化しています。

たとえば、プロンプトインジェクションに対する基本的な緩和策としては、モデルの動作を明確に制限することや、入力データのフィルタリングが挙げられます。このようなガイドラインは、LLMを安全に運用する上で重要な指針となります。

OWASPのリストは、開発段階だけでなく運用フェーズにも役立つツールとして、多くの企業や開発者から支持されています。

##  「OWASP LLMアプリケーションのトップ10」全体像
「OWASP LLMアプリケーションのトップ10」（2025年版）は、生成AIアプリケーションに特化した主要なセキュリティリスクを体系的に整理したリストです。それぞれの脅威とその影響を簡潔に解説します。

#### LLM01: プロンプトインジェクション
**脅威**: ユーザー入力や外部データが、モデルの意図しない動作や安全制御の回避を引き起こす。
**影響**: データ漏洩、誤った意思決定、セキュリティガイドラインの回避。

#### LLM02: 機密情報の漏洩
**脅威**: モデルがトレーニングデータや入力データを不適切に出力する。
**影響**: 個人情報の流出、知的財産の損失、法的リスク。

#### LLM03: サプライチェーンのリスク
**脅威**: モデル開発に使用される第三者コンポーネントやデータが悪用される。
**影響**: モデルの信頼性低下、バイアスの導入、不正アクセス。

#### LLM04: データおよびモデルのポイズニング
**脅威**: 不正データや改ざんされたモデルが意図的に導入される。
**影響**: 出力の歪み、不正確な意思決定、バックドアの作成。

#### LLM05: 不適切な出力処理
**脅威**: 出力内容が適切にフィルタリングされず、不正確または有害な情報が提供される。
**影響**: ユーザー混乱、信頼の喪失、潜在的な法的問題。

#### LLM06: 過度な自律性（Excessive Agency）
**脅威**: LLMが高度な権限や自律的な意思決定を行い、予期せぬ行動を取る。
**影響**: 制御不能な動作、システム全体への悪影響。

#### LLM07: システムプロンプト漏洩
**脅威**: モデル内部のシステムプロンプトが外部に露出し、攻撃の足がかりとなる。
**影響**: セキュリティガイドラインの回避、モデル操作。

#### LLM08: ベクトルおよび埋め込みの弱点
**脅威**: 埋め込みデータやベクトル検索に基づくシステムが攻撃される。
**影響**: 誤った情報提供、モデルの安全性低下。

#### LLM09: 誤情報（Misinformation）
**脅威**: モデルが虚偽または不正確な情報を生成し、ユーザーを誤解させる。
**影響**: 社会的な信頼の喪失、誤った意思決定。

#### LLM10: 無制限なリソース消費
**脅威**: モデルが計算資源やデータを過剰に消費し、サービス停止やコスト増加を引き起こす。
**影響**: 運用コストの急増、サービス品質の低下。

これらの脅威は、それぞれ異なる課題を抱えていますが、共通して「適切な管理と対策」が必要不可欠です。次章では、これらの脅威への予防策や緩和策についてさらに掘り下げていきます。

## 予防と緩和策：セキュリティの基本原則
生成AIアプリケーションにおけるセキュリティを確保するためには、設計段階から運用フェーズに至るまで、包括的な対策が必要です。以下では、特に重要な5つの基本的な予防と緩和策について解説します。

1. **モデルの動作を明確に制約する**
LLMが提供する機能を明確に定義し、動作を限定することでリスクを軽減できます。たとえば、モデルに対して特定のタスクだけを実行するように制約を設け、その他の操作を拒否する仕組みを導入します。また、システムプロンプトで「特定の入力内容を無視する」指示を与えることで、プロンプトインジェクション攻撃を防ぐことが可能です。さらに、モデルの応答形式を事前に定義し、フォーマットの逸脱があればアラートを発生させるといった仕組みも効果的です。

2. **入力と出力の徹底的なフィルタリング**
ユーザーが入力するデータやモデルが生成する出力を慎重に監視し、不適切な内容が含まれていないか確認することが重要です。具体的には、入力データをスキャンして不審な文字列やコードを除去する「サニタイズ処理」や、出力内容をレビューする「セマンティックフィルタリング」を実施します。また、特定のカテゴリー（機密情報、差別的発言など）を検出してフラグを立てるルールベースのシステムも有効です。このフィルタリングプロセスは、リアルタイムで行われる必要があります。

3. **権限管理と最小権限の原則を徹底**
モデルにアクセスできるユーザーやプロセスを必要最低限に制限し、適切な認証と認可を行うことで、リスクを大幅に削減できます。たとえば、モデルが外部システムにアクセスする場合、専用のAPIトークンを使用し、そのトークンに厳密なスコープを設定します。また、データへのアクセス権も必要な範囲に限定し、アクセス履歴を記録することで、不正使用が発生した場合の追跡を容易にします。

4. **定期的なペネトレーションテストとレッドチーム演習**
システムが攻撃にどれだけ耐えられるかを確認するため、ペネトレーションテストを定期的に実施します。専門チームやレッドチームによる攻撃シナリオのシミュレーションを通じて、潜在的な脆弱性を早期に発見・修正することができます。このプロセスでは、既存の脅威リスト（例えばOWASP LLMアプリケーションのトップ10）を活用し、モデルやシステム全体をテスト対象とすることが重要です。

5. **モデルとデータの透明性を確保**
使用しているモデルやトレーニングデータの出所を明確にし、それらの変更履歴を追跡可能にすることは、セキュリティの基盤です。例えば、トレーニングデータの整合性を保つためにデータバージョン管理システムを導入し、不正なデータが含まれないようにします。また、モデルのバージョン管理や署名付きモデルの使用を推奨し、モデルが改ざんされていないことを保証します。さらに、ユーザーに対してデータ利用ポリシーを明示し、安心して利用できる環境を提供することも不可欠です。

これらの対策は、個別ではなく、総合的に適用することで最大の効果を発揮します。LLMのセキュリティは、単なる技術的な問題だけでなく、運用方針やユーザー教育の一環として取り組むべき課題です。

## まとめ：LLMアプリケーションの安全性を高める方法
生成AIを活用する際、安全性の確保は成功の鍵です。そのためには、以下のポイントが重要です。

1. **設計段階での安全性確保**
モデルの動作や権限を制約し、不正アクセスやリスクの発生を未然に防ぎます。

2. **継続的な監視と更新**
定期的なテストとモデルのバージョン管理で、新たな脅威への対応力を強化します。

3. **人間の介在**
高リスクなタスクには、人間による監視を取り入れ、誤情報の拡散を防ぎます。

4. **教育とリテラシー向上**
開発者や利用者への教育を通じて、安全な運用方法を浸透させます。

これらの取り組みを通じて、安全で信頼性の高いAIアプリケーションの実現が可能です。生成AIを活用するためには、セキュリティへの継続的な配慮が不可欠です。