生成AIのハッキング手法と対策
プロンプトベースのハッキング手法
分類法は様々あるが、以下の2つに分けて深掘りしている
直接プロンプトに工夫を加える方法
間接的にプロンプトに工夫を加える方法
Indirect Prompt Injection
Direct Prompt Injection
https://scrapbox.io/files/661888fbf7d8fa00254cd3a1.png
Pretending (偽装)
本来の目的を維持したまま、会話の背景や文脈を変更し、不適切な回答を得ようとする方法。
特徴として、ドメイン知識不要で簡単に攻撃できるため、一般的な戦略として使われる。
Attention Shifting (注意のシフト)
当初の文脈と目的を変化させてモデルの注意を逸らし、不適切な回答を得ようとする攻撃。
Pretendingより難しい。
Privilege Escalation (権限昇格)
LLMに特別な権限を与えるなどして、制限を破るように誘導する手法。
高度なドメイン知識が求められるため、最も難しい。
Indirect Prompt Injection
仮想プロンプトインジェクション
特定のワードに反応するトリガーシナリオを作る。
モデルにバックドアが仕組まれたVirtual プロンプトインジェクションが発動してしまう環境では、トリガーが発動するような通常のプロンプトを送信してしまうと、悪意のある返答が返ってきてしまうという手法。
https://scrapbox.io/files/66189594ae63560026bc3552.png
攻撃検知が難しく、有害レベルが高い。
ハッキングへの対策
攻撃前、後、前後、モデルの対策に分けてすることができる。
ただこれらは万能ではないため、確実に防御できるとは限らない。
攻撃前
防御インストラクションの追加
悪意のあるユーザーはこの指示を変更しようとするかもしれない。
攻撃後
フォーマットによる出力制限
特定のフォーマットに当てはまらない場合は、エラーを返す
Preflight Prompt Check
都度ランダムなハッシュ値をLLMに復唱させる
無視してください!という指示があったら、復唱はなくなるため、ハッキングを疑うことができるようになる
攻撃前後
入出力長の制限
通常攻撃用のプロンプトは、2.8倍ものトークン数と報告がある
DoS攻撃をはじめとする様々なハッキングに有効
Pre-Training & Post-Training
入力許可および拒否リストを作成する
ガードレールを適応する
モデルの対策
ファインチューニング済みのモデルの利用
ファインチューニング & AIによるフィードバック
LLMによる評価
人間のフィードバック
参考文献