第4章. プロンプト・インジェクション
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
第1章 、荒らしのハッカーに悪用されたTayの命が絶たれた悲しい物語をレビューした。このケーススタディは、現在私たちがプロンプト・インジェクションと呼んでいるものの最初の有名な例であったが、これが最後でないことは確かである。LLM関連のセキュリティ侵害のほとんどは、何らかの形でプロンプト・インジェクションに関与している。
promptインジェクションでは、攻撃者は悪意のある入力を細工し、LLMの自然言語理解を操作する。これにより、LLMはその意図した運用ガイドラインに反する動作をするようになる。インジェクションの概念は、2001年のOWASPトップ10リスト以来、ほぼすべてのバージョンに含まれている。
アプリケーションセキュリティにおけるインジェクション攻撃とは、攻撃者が脆弱なアプリケーションに悪意ある命令を挿入するサイバー攻撃の一種である。攻撃者は、アプリケーションを制御し、データを盗み、or 演算子を妨害することができる。例えば、SQL インジェクション攻撃では、攻撃者がウェブフォームに悪意のある SQL クエリを入力し、システムを騙して意図しないコマンドを実行させる。その結果、データベースへの不正アクセスや不正操作が行われる可能性がある。
では、なぜプロンプト・インジェクションがこれほど斬新なのだろうか?ほとんどのインジェクション型攻撃では、信頼できないソースからアプリケーションに不正な命令が入力されるのを発見する のは比較的簡単だ。例えば、ウェブ・アプリケーションのテキスト・フィールドに含まれる SQL 文を発見し、サニタイズするのは簡単である。しかし、LLM プロンプトはその性質上、複雑な自然言語を正当な入力として含むことができる。攻撃者は、構文的にも文法的にも正しい英語(または別の言語)のプロンプトを埋め込み、LLMに望ましくない動作を実行させることができる。LLMが持つ自然言語に対する高度で人間的な理解力こそが、こうした攻撃に対してLLMを脆弱にしているのだ。加えて、LLMの出力は流動的であるため、これらの条件付きでテストすることは難しい。
この章では、プロンプト・インジェクションの例、起こりうる影響、プロンプト・インジェクションの2つの主な分類(ディレクトリと間接)について説明し、いくつかの緩和策について見ていく。
プロンプト・インジェクション攻撃の例
このセクションでは、プロンプト・インジェクション攻撃の典型的な例を見ていく。伝統的なコンピュータハッキングというよりは、ソーシャルエンジニアリングに近いと思われる攻撃も見ていく。攻撃者と防御者がプロンプトエンジニアリングとインジェクションテクニックについてさらに学ぶにつれて、これらのような具体例は常に変化していくだろうが、これらの例は概念を理解するのに役立つはずである。
注
プロンプト・エンジニアリングとは、大規模な言語モデルに対するクエリを設計し、具体的で正確なレスポンスを引き出す技術である。AIの技術的理解と戦略的な言語使用を組み合わせ、望ましい結果を得るためにモデルのパフォーマンスを最適化する。
このスペースにおける攻撃ベクトルは頻繁に変化するため、悪意のあるプロンプトの詳細を調べてもあまり意味がない。しかし、現在一般的に使用されている攻撃をカテゴリーに分類することは有益である。ここでは4種類のプロンプトインジェクション攻撃を見てみよう。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access