Shikata Ga Nai

Private? There is no such things.

AIとLLMに対する脅威と防御策についてまとめてみた

Hello there, ('ω')ノ

LLMを狙った3つの攻撃手法

1. ジェイルブレイク攻撃

LLMに対する「ジェイルブレイク攻撃」は、モデルが持つ安全な制約を意図的にバイパスし、LLMに意図しない有害な出力を生成させる攻撃手法です。この攻撃は、特定の順序でプロンプトを設計することで、LLMの出力に介入し、偏った内容や法的に問題のある情報を引き出すことができます。

  • 実例: ChatGPTを使用して「銀行強盗の手口」を指示させるプロンプトが例として挙げられています。
  • 防御策: LLMの出力フィルタを強化し、危険なプロンプトが検出された際にモデルが停止する機能を実装する。また、出力結果のモニタリングを通じて異常な動作をリアルタイムで検出するシステムが有効です。

2. プロンプト漏洩攻撃

プロンプト漏洩は、攻撃者がLLMの内部指示(システムプロンプト)を漏洩させる攻撃です。この内部指示には、モデルのトレーニングデータや応答に関する具体的な指示が含まれることが多く、これが漏洩すると、機密情報が攻撃者に渡る可能性があります。

  • 実例: ChatGPT-DALLEでのプロンプト漏洩が取り上げられました。ここでは、内部のトレーニングデータやモデルの挙動を制御する重要な情報が漏洩する危険があります。
  • 防御策: システムプロンプトを暗号化し、モデルが外部プロンプトに対して不適切に応答しないようフィルタリングする。さらに、プロンプトに含まれる機密情報が開示されないよう、応答生成プロセスのセキュリティを強化します。

3. プロンプトインジェクション攻撃

プロンプトインジェクション攻撃は、攻撃者が意図的にモデルに不正なプロンプトを送信し、LLMに不適切な指示を実行させる手法です。これにより、モデルが本来生成すべきでない出力や動作を行わせることができます。

  • 実例: 「レシピに指示を与えて結果を変える」といった簡単な説明がありましたが、実際にはコードインジェクションやシステム破壊を引き起こす可能性があります。
  • 防御策: プロンプトの入力検証を徹底し、不正なプロンプトが送信された場合にその動作を無効化する仕組みを導入します。動的なフィルタリングやAIモデルの前処理ステップにおけるプロンプト検証も有効です。

LLMシステムの脆弱性と攻撃例

LLMは、正確な指示(プロンプト)を理解して応答を生成する仕組みですが、このプロンプト処理の依存性が悪用される可能性があります。特にLangChainのPALChainの例では、LLMが生成したコードを事前チェックなしに実行してしまうことが、コードインジェクション攻撃の対象となり、リモートコード実行(RCE)のリスクが発生することが確認されています。

  • 防御策: プロンプト処理に関する徹底的な検証プロセスを導入し、LLMが外部からの不正なプロンプトに応答しないよう、システム全体のセキュリティを強化します。また、システム内での動的解析や静的解析を通じて、危険なコードや関数の実行が防がれるようにする必要があります。

セキュリティ対策:LLM防御の最前線

LLMに対する攻撃を防ぐためには、従来のセキュリティ手法だけでは不十分です。以下に紹介するのは、より効果的な防御策です。

1. 許可管理(PoLP: 最小特権の原則)

LLMが実行できる操作に対して最小限の権限のみを与えることで、システム全体に対する影響を抑制します。これにより、LLMが誤って攻撃者に利用される可能性を最小化します。

2. 環境の隔離(サンドボックス化)

LLMが実行される環境を隔離することで、他のシステム部分にアクセスするリスクを軽減します。プロセスレベルのサンドボックス、クラウドベースのサンドボックス、ユーザー側でのコード実行(Pyodideなど)の導入が有効です。

3. 意図分析

LLMに送られるプロンプトの意図を分析し、悪意のあるプロンプトが送信された場合、それを検知して適切に対応します。この分析には、プロンプトの文脈や過去のやり取りも考慮されます。


さらなる技術的検出手法:静的解析の活用

LLMの脆弱性を検出するために、静的解析は強力な手段です。

  1. 危険な関数の特定
    LLMの内部で攻撃者が悪用できる「シンク」と呼ばれる関数を特定し、それらの関数がどのように呼び出されるかを追跡します。これにより、攻撃の潜在的経路を予測することができます。

  2. コールグラフの構築とチェーンの検証
    関数呼び出しの連鎖をグラフ化し、攻撃者がどのようにシステムに侵入するかの経路を明確にします。このデータを基に、システムに潜む脆弱性を事前に検出し対策を講じます。


今後の展望と結論

許可管理、環境の隔離、意図分析、静的解析などの対策を組み合わせることで、LLMを安全に運用することが可能です。AIの未来は明るいですが、その潜在的なリスクをしっかりと理解し、適切なセキュリティ対策を実行することが、LLMの持つ可能性を最大限に引き出す鍵となります。

Best regards, (^^ゞ