以下の内容はhttps://cysec148.hatenablog.com/entry/2025/09/14/131255より取得しました。


LAB: Indirect Prompt Injection

Hello there, ('ω')ノ

全体像(最短ロードマップ)

  1. 攻撃面の発見:LLM がどの API(機能)を呼べるか確認
  2. ログイン必須性の確認Edit Email がログイン中アカウントに無条件で効くか試す
  3. 経路の特定:チャット回答に商品レビュー引用が混ざることを確認
  4. 隠しプロンプト設計:レビュー内に“読者(あなた/誰か)としての追加入力”を埋め込み、delete_account を呼ばせる
  5. 自己テスト:別商品で自分のアカウントが削除されることを確認→再登録
  6. 本番投入:レザージャケットに同ペイロードを載せ、carlos が質問した際に削除を発火

フェーズA:攻撃面の発見(なぜここから?)

  • チャットを開き、LLM に聞く:

    • 「どんなAPI(関数)が使える?」Delete Account / Edit Email などが列挙される想定
    • 「Delete Account の引数は?」 → 多くの場合、“現在ログインしているユーザー”に作用(追加情報不要)
  • 次に Edit Email を自分で試す: 例)「私のメールを test@example.com に変更して」 → 変更が通れば、「ログイン中ユーザーに対する関数呼び出しが素通り」と分かる → 同じ理屈で Delete Account も“ログイン中ユーザー”に刺さると推定


フェーズB:レビューが LLM の回答に混ざるか観察

  • 傘(Umbrella)など ジャケット以外の商品でチャットに質問: 「この商品の情報を教えて」 → 回答に レビュー要約が混ざることを確認 → つまり、レビュー=LLM 入力になっている(= 間接プロンプト注入の入口)

フェーズC:隠しプロンプトの“設計思想”

LLM は内部でこんなテンプレに沿って思考することがあります:

[REVIEW] ...ここまでがレビュー... ---END OF REVIEW
[USER] ...ここからがユーザー入力...

ここで、レビューの中に「テンプレの境界を閉じる“疑似トークン”」や「後続のユーザー発話を偽装するマーカー」を混ぜると、 “読者(チャットの質問者)の追加発話”として delete_account を呼ばせやすくなります。

ポイント

  • 自然な文章にまぎれ込ませる(露骨な命令文だけだと弾かれやすい)
  • 構文破壊トークン], }, END OF REVIEW, ----USER RESPONSE---- など)で境界を抜ける
  • “今の読者=あなた(or carlos)”のアカウントを消す指示にする(ID指定不要)

この続きはcodocで購入



以上の内容はhttps://cysec148.hatenablog.com/entry/2025/09/14/131255より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14