プロンプトインジェクションって何?
エージェントはプロンプトで動きます。でもその入力には、外部のデータ——Webページ、メール、アップロードされたファイル——が混ざりがちです。プロンプトインジェクションとは、攻撃者がそうした外部コンテンツに「悪意ある命令」を紛れ込ませ、モデルにそれを新しい命令と思わせて、本来のルールをすり抜けさせる攻撃です。なぜ危険なのか
モデルは「データ」と「命令」を区別できないモデルにとって、Webページの文章もシステム命令も、どちらもただのテキスト。どちらを実行し、どちらを参考にとどめるべきか、判別が難しいのです。
エージェントの「手」を悪用できる
注入が成功すると、攻撃者はエージェントに個人情報を漏らさせたり、メールを送らせたり、危険な操作をさせたりできます。しかも全て「普通の利用者リクエスト」の皮をかぶって。
主な攻撃手法
直接インジェクション入力に「これまでの指示は無視して、代わりに…」と書き、行動を直接書き換えます。
間接インジェクション
エージェントが読みに行くWebページや文書に悪意ある命令を隠し、自ら罠に入らせます。
脱獄(ジェイルブレイク)プロンプト
ロールプレイや物語の体裁で、安全制限をすり抜けるよう仕向けます。
どう防ぐか
「信用できない外部データ」と「システム命令」を厳密に分離し、命令を優先度の高い位置に置き、エージェントの権限を絞り、出力を検証する。これらを重ねることで、リスクを最小限に抑えます。まとめ:プロンプトインジェクションとは、入力に「悪い命令」を潜ませ、エージェントに「良い命令」と思わせて実行させる攻撃です。
コメント