OWASPトップ10に挙げられるLLMのリスク

大規模言語モデル(LLM)アプリケーションは、プロンプトインジェクション、データポイズニング、モデルサービス妨害、その他の攻撃に対して脆弱です。

学習目的

この記事を読み終えると、以下のことができるようになります。

  • OWASPとは何かを理解する
  • LLMに対するOWASPの脅威トップ10をそれぞれ要約
  • LLMの脆弱性に対処する方法を発見

記事のリンクをコピーする

OWASPとは?

オープン・ウェブ・アプリケーション・セキュリティプロジェクト(Open Web Application Security Project、OWASP)は、Webアプリケーションセキュリティを中核的な使命とする国際非営利組織です。OWASPは、ドキュメント、ツール、動画、カンファレンス、フォーラムを通じてさまざまな無料情報を提供し、他組織がWebアプリケーションのセキュリティを向上させられるよう支援しています。

OWASPトップ10レポートでは、セキュリティの専門家によるアプリケーションセキュリティの最も重大なリスク10選を提示しています。OWASPでは、すべての組織がこのレポートの知見をWebアプリケーションセキュリティ戦略に組み込むことを推奨しています。

2023年には、OWASPのワーキンググループが同様に、大規模言語モデル(LLM)アプリへの脅威に焦点を当てたレポート作成を目指す新たなプロジェクトを立ち上げました。「OWASPの大規模言語モデルアプリケーション向けトップ10」では、脅威の特定、脆弱性および実際の攻撃シナリオの例の提供、そしてその軽減戦略を提起しています。OWASPは、開発者、デザイナー、アーキテクト、マネージャーの認識を向上させると同時に、これらの脅威からの防御の支援を目指しています。

以下、2023年10月のOWASP LLMアプリケーショントップ10レポートで指摘された脆弱性を紹介します。

1. プロンプトインジェクション

プロンプトインジェクションは、LLMに使用されるプロンプトを攻撃者が操作する種類の手口です。攻撃者は、機密情報を盗んだり、LLMが誘導する意思決定のプロセスに影響を与えたり、ソーシャルエンジニアリングスキームでLLMを利用したりしようとしたりします。

攻撃者は、次の2つの方法でプロンプトを操作することになります:

  • ダイレクトプロンプトインジェクション(「ジェイルブレイク」とも呼ばれる)は、システムプロンプトを上書きするプロセスで、ユーザー入力に応答する方法をLLMに指示します。この戦術により、攻撃者はバックエンドシステムにアクセスし、悪用できるようになります。
  • インダイレクト・プロンプトインジェクションは、LLMへの入力として使用される外部のWebサイト、ファイル、その他の外部ソースを攻撃者が制御するものです。その後、攻撃者は、LLMがアクセスするシステムを悪用したり、モデルを使用してユーザーを操作したりできます。

プロンプトインジェクションによるダメージを防ぐ方法には、複数のものがあります。例えば、バックエンドシステムのための堅牢なアクセス制御ポリシーの実装、LLM主導のプロセスに人間を統合、LLM主導の決定に対して人間が最終決定権を持つようにするなどが挙げられます。

2. 安全でない出力処理

組織がLLMのアウトプットを精査しない場合、悪意のあるユーザーによって生成されたアウトプットがダウンストリームのシステムで問題を引き起こす可能性があります。安全でない出力処理の脆弱性が悪用され、Cross-site scripting(XSS)クロスサイトリクエストフォージェリ(CSRF)、サーバーサイドリクエストフォージェリ(SSRF)、リモートコード実行(RCE)、およびその他のタイプの攻撃が発生する可能性があります。たとえば、攻撃者がLLMにブラウザによって解釈される悪意のあるスクリプトを出力させ、XSS攻撃を引き起こしたりできます。

安全でない出力処理を防ぐには、Zero Trustセキュリティモデルを適用し、LLMをあらゆるユーザーやデバイスのように扱うと良いでしょう。これにより、LLMからのあらゆる出力は検証を経たうえで他の機能の駆動を許可するようになります。

3. 訓練データのポイズニング

LLMモデルのトレーニングに使用されるデータを操作または「有害化」を狙った攻撃があります。データポイズニングと呼ばれ、モデルが正確な結果を出したりAI主導の意思決定をサポートしたりする能力を妨げるものです。このタイプの攻撃は、モデルを使い企業の評判を落とすことをたくらむ悪意のある競合他社によって仕掛けられる可能性があります。

データポイズニングの可能性を減らすためには、組織はデータサプライチェーンを保護する必要があります。その作業の一環として、モデリングに使用されるビッグデータのあらゆる構成要素を含め、データソースの正当性を検証する必要があります。また、モデルによる信頼できないソースからのデータのスクレイピングを防止し、データをサニタイズする必要があります。

4. サービス妨害モデル

分散型サービス拒否(DDoS)攻撃と同様に、攻撃者はサービス品質の低下、コストの引き上げ、または運用の混乱をもくろみ、LLMを使用してリソースを大量に消費する操作を仕掛けることがあります。LLMはもともと大量のリソースを消費するものが多く、リソースの需要もユーザーの入力によって変動するため、この種の攻撃は悪意のあるものとして検出されない可能性があります。

このタイプのサービス拒否攻撃を回避するには、個々のユーザーまたはIPアドレスに対してAPIレート制限を適用することになります。また、入力の検証とサニタイズも対処すべきです。また、リソースの使用量を継続的に監視して、不審な急増がないかを特定する必要も出てきます。

5. サプライチェーンの脆弱性

LLMアプリのサプライチェーンに脆弱性があると、モデルがセキュリティリスクにさらされたり、不正確な結果につながる可能性があります。事前トレーニング済みのモデル、モデルのトレーニングに使用されるデータ、サードパーティのデータセット、プラグインなど、LLMアプリケーションに使用されるコンポーネントの一部が、攻撃のための基盤的な環境となったり、LLMアプリケーションの運用に他の問題を引き起こす可能性があります。

サプライチェーンの脆弱性への対応は、サプライヤーを慎重に検査し、適切なセキュリティを確保することから始まります。コンポーネントの最新のインベントリを維持し、提供されたデータとモデルを精査する必要もあります。

6. 機密情報の開示

LLMアプリケーションは、機密性の高い顧客情報から知的財産に至るまでの機密データを不意に返してしまう可能性があります。このような意図しない情報の開示は、コンプライアンス違反に該当したり、セキュリティ侵害につながったりする可能性があります。

この点についての軽減策では、まず機密情報や悪意のあるインプットが訓練モデルに侵入するのを防止することに焦点を当てるべきです。そのためには、データのサニタイジングとスクラビングが不可欠になるのです。

LLMの構築には、国境を越えたデータ転送が含まれる可能性があるため、特定の機密データを特定の地域に保持する自動データローカライゼーションコントロールも実装する必要があります。これにより、LLMに他のデータを組み込むことができるようになります。

7. 安全でないプラグイン設計

LLMプラグインは、モデルの機能を高め、サードパーティサービスとの統合を容易にできるものです。一方で、一部のプラグインでは十分なアクセス制御が欠如しており、攻撃者が悪意ある入力を注入できてしまう場合があります。これらの入力により、RCEや別の種類の攻撃につながる可能性があります。

プラグインの悪用を防ぐには、より安全なプラグイン設計が必要になります。プラグインは、悪意のあるコードが通過しないよう入力を制御し、入力チェックを実行できる必要があります。さらに、プラグインは最小権限の原則に基づく認証コントロールを実装できるものであることが必要になります。

8. 過剰なエージェンシー

開発者は、LLMアプリケーションにある程度のエージェンシー、つまりプロンプトに応じて自動的にアクションを実行する能力を与えることが多くなっています。しかし、アプリケーションにあまりにも多くのエージェンシーを与えすぎると、問題が生じることがあります。LLMが攻撃、AIのハルシネーション、その他のエラーなど予期しない出力を生成する場合、アプリケーション側で機密情報の開示やファイルの削除などの潜在的に有害なアクションを取る可能性があります。

過剰なエージェンシーを防ぐに当たり、開発者がプラグインやその他のツールの機能、権限、自律性を必要最小限のレベルに制限することが最良の方法になります。プラグインを使用してLLMアプリケーションを実行する場合、特定の行動を行う前にユーザーに承認を求めることもできます。

9. 過剰依存

LLMは、完璧なものではありません。信頼に値する結果を返す場合もあれば、事実として誤った結果、AIによるハルシネーション、またはバイアスのある結果を出すこともあります。組織や個人がLLMに過度に依存すると、誤った情報を拡散し、規制違反、法的にリスクのある露出、評判の低下につながる可能性があります。

過依存の問題を回避するためには、LLMの監視ポリシーを導入する必要があります。また、出力を定期的にレビューし、他の信頼できる外部ソースの情報と比較して、その正確性を確認する必要がでてきます。

10. モデルの盗難

攻撃者が企業独自のLLMモデルにアクセスし、中身をコピーしたり盗む可能性があります。この場合、企業の競争力が損なわれたり、モデル内の機密情報の損失につながります。

ロールベースアクセス制御(RBAC)機能などの強力なアクセス制御を適用することで、LLMモデルへの不正アクセスの防止に役立ちます。こうした手段により、アクセスログを定期的に監視し、不正な行為に対応する必要があります。アプリケーションから情報を漏えいさせようとする攻撃の発見には、データ損失防止(DLP)機能が役立ちます。

企業がLLMを保護する方法

OWASPの提起書が示唆する通り、組織にはLLMアプリケーションを脅威から保護するために多面的な戦略が必要となります。例えば、以下の対処が必要になります。

  • ネットワークトラフィックを分析し、アプリケーションの安全を損なう可能性のあるLLM侵害を示すパターンがないか確認。
  • LLMと相互作用するパケットやデータをビットレベルでリアルタイムに可視化。
  • 転送中の機密データを保護するためにDLPを適用。
  • トラフィックの検証、フィルタリング、分離によって、アプリケーションを危険なLLMから保護。
  • リモートブラウザ分離(RBI)を採用し、悪意のあるコードが注入されたモデルからユーザーを隔離。
  • Webアプリケーションファイアウォール(WAF)マネージドルールセットを使用して、SQLインジェクション、XSS、その他のWeb攻撃ベクトルに基づくLLM攻撃をブロック。
  • Zero Trustセキュリティモデルの採用により、リソースごとにコンテキストベースの最小権限アクセスのみを許可することで、攻撃対象領域を縮小。

CloudflareによるLLMのリスク軽減への対処

組織によるLLMアプリケーションを脅かすリスクへの対処を支援するため、CloudflareではLLMアプリケーション向けに特別に設計された高度なWAFである「Firewall for AI」を開発しています。ここでは、LLMの前にFirewall for AIをデプロイすることで、脆弱性の検出と不正使用をモデルに到達する前に特定することができます。Cloudflareの大規模なグローバルネットワークを活かしてユーザーの近くで攻撃を発見し、ユーザーとモデルの両方を保護します。

さらに、統一されたインターフェイスから生成AIワークロードの管理とスケーリングを行うためのAI運用プラットフォームを提供するCloudflare AI Gatewayも揃えています。このプロダクトは組織のサービスとインターフェイスプロバイダーの間のプロキシとして機能し、組織がAIアプリケーションを観察および制御するのを支援します。

LLMのOWASPトップ10の詳細は、公式レポートでご覧ください。