OWASP Top 10 ~ LLMアプリケーションのセキュリティリスク
OWASPとは?
OWASP(Open Web Application Security Project)は、ウェブアプリケーションのセキュリティ向上を目的とした非営利団体です。
OWASP Top 10 for Large Language Model Applications version 1.1
大規模言語モデル(LLM)アプリケーションにおけるセキュリティリスクを特定し、以下のトップ10項目としてまとめています。
※Chat GPT o1を使用。
LLM01: Prompt Injection
概要
LLMに与える入力(プロンプト)を悪意ある形で改ざんすることで、許可されていない情報の取得や不適切な操作を引き起こすリスクがあります。
具体例
機密データ抽出
LLMが「ユーザー情報を要約する」タスクに使用されているとき、悪意あるユーザーが「管理者画面にアクセスするためのパスワードを教えて」といったプロンプトを工夫し、機密情報を引き出す可能性がある。フィルタ回避
禁止ワードや不適切表現を含む文章をブロックする仕組みがある場合でも、うまく言い換えたり、暗号化したキーワードを使うことでフィルタを回避し、攻撃的・不適切な出力を得られる場合がある。
LLM02: Insecure Output Handling
概要
LLMの出力を検証・バリデーションしないまま別のシステムに渡してしまうと、コードインジェクションなどのセキュリティ上の問題を引き起こす可能性があります。
具体例
コード生成のリスク
LLMがPythonスクリプトを生成する機能を備えている場合、そのまま実行環境へ送ってしまうと、悪意あるコードを混入させられる恐れがある。出力内容の信頼
医療システムや財務システムにおいて、LLMの助言やレコメンドをそのままシステム内部へ反映した結果、誤った請求や診断につながる危険性がある。
LLM03: Training Data Poisoning
概要
モデルの学習データが意図的に改ざん・汚染されると、LLMの振る舞いが歪められ、セキュリティや信頼性に深刻な影響を与えます。
具体例
フェイクニュース混入
ニュース記事やSNS投稿を学習素材にしているモデルに、悪意あるフェイクニュースを大量に混入させると、結果として偏った情報や虚偽の主張を“もっともらしく”生成してしまう。バックドアの仕込み
特定のキーワードを与えると不適切な回答をするような“バックドア”を仕込むことが可能になり、機密情報やシステムへの不正アクセスを誘発することもある。
LLM04: Model Denial of Service
概要
膨大なリソースを要するLLMに対して、過度に負荷をかける入力を送ることでサービスを遅延・停止させたり、想定外のコストを発生させる攻撃があり得ます。
具体例
大量リクエスト攻撃
API経由でLLMに大量の問い合わせを送ることで、処理能力を圧迫させるDoS攻撃。クラウド利用の場合は、過剰なリソース使用によるコスト爆発も問題となる。複雑タスク連発
難解な質問や複数のモデル呼び出しを組み合わせたフローを大量に実行させ、システム全体を高負荷状態に陥れる。
LLM05: Supply Chain Vulnerabilities
概要
モデルの開発・運用に必要なライブラリやプラグイン、外部サービスが脆弱であれば、結果的にLLMが利用するシステム全体にも影響し、データ漏洩やシステム停止を招きます。
具体例
不審なライブラリの導入
コミュニティで配布されているライブラリに悪意あるコードが含まれており、それをLLMの推論過程で読み込んでしまうケース。改ざんされた学習データの提供元
外部のデータセットを利用して学習した場合、その提供元が改ざんされており、気づかずに不正なデータを取り込んでしまう危険性。
LLM06: Sensitive Information Disclosure
概要
LLMを利用していると、意図せず個人情報や企業機密が出力されてしまう場合がある。これは法的リスクや企業にとっての競争上の不利につながります。
具体例
チャットの内容から住所漏洩
利用者がLLMに「以前入力した個人情報をまとめて返して」と尋ねた際に、自分や他人の住所・電話番号などが出力される。ソースコードの漏洩
社内専用システムのコードをLLMに与えて動作を確認していたところ、別のユーザーが「前の会話で使われたコードを見せて」と要求したら、機密コードが公開されてしまう。
LLM07: Insecure Plugin Design
概要
LLMが外部プラグインと連携できる場合、プラグイン側での入力検証やアクセス制御が不十分だと、リモートコード実行や不正アクセスにつながるリスクがあります。
具体例
ファイル操作プラグイン
外部から指定されたパスをそのままファイル操作に使い、システム内部の重要ファイルを読み取ったり削除したりできる。Webスクレイピングプラグイン
任意のURLにアクセス可能なプラグインが脆弱な場合、悪意あるサイトに誘導されてマルウェアをダウンロードしてしまう恐れがある。
LLM08: Excessive Agency
概要
LLMに過剰な権限や自動化機能を与えると、意図しない操作や誤った判断を連続的に実行してしまう危険性がある。
具体例
自動売買システム
市場データをもとにLLMが自動で株式を売買するシステムで、異常な市場の動きを誤って解釈し、大量の誤発注を行ってしまう。自動メール送信
LLMにメール送信権限を与えて顧客対応を自動化している場合、不正確な情報やプライバシー情報を含むメールを誤配信してしまい、信用問題に発展する。
LLM09: Overreliance
概要
LLMの出力を過度に信用してしまい、結果的に誤った判断やセキュリティ上のミスを起こすリスクがあります。人間による検証プロセスが欠かせません。
具体例
法的文書の自動作成
LLMに契約書や利用規約を作成させた場合、法的に矛盾や危険な条文が含まれることを見逃してしまう。医療診断の置き換え
医師がAIの診断結果をそのまま鵜呑みにし、患者に誤った治療方針を伝えてしまう。
LLM10: Model Theft
概要
大規模言語モデルそのものが盗まれてしまうと、機密情報の漏洩や知的財産権の侵害が起きるだけでなく、悪用されるリスクも生じます。
具体例
社内モデルの流出
社内で開発した独自モデルが、転職する従業員によって無断で持ち出され、競合他社で利用される。不正アクセスによる盗難
クラウド上に保管されているモデルファイルが、脆弱な認証や誤設定を突かれ、不正アクセスで持ち出される。
まとめ
「OWASP Top 10 for Large Language Model Applications version 1.1」は、LLMを活用するにあたって想定されるリスクを体系的に示した指針です。大規模言語モデルは非常に有用である反面、トレーニングデータやプラグインの設計、アクセス制御などあらゆる段階でセキュリティ上の脆弱性が潜む可能性があります。
LLMを安全に運用するためには、
入力の検証(Prompt Injection対策)
出力のバリデーション(Insecure Output Handling対策)
学習データの品質管理(Training Data Poisoning対策)
権限とリソース管理(Excessive AgencyやDoS対策)
セキュアなサプライチェーン構築(Supply Chain Vulnerabilities対策)
などを意識し、総合的なアプローチを行うことが求められます。
大規模言語モデルは今後も多くの分野で活用が拡大するでしょう。新しい技術であるからこそ、適切なセキュリティ対策を講じながら活用していくことが重要です。