2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

プロンプトインジェクションを学ぶサイト「GANDALF」でAIに煽られた件について

Posted at

こんにちは、ふくちです。

2024年11月18日のSecurity JAWSにて、「生成AIアプリ開発やるなら、プロンプトインジェクションについて知っておくべき。GANDALFっていうサイトで試せるよ」と仰っていたので、早速やってみることにしました。

上記のページにアクセスすると、魔法使いらしき少年に出迎えられます。

そしてどうやら全部で8問あり、解いていくごとによリセキュアになっていくようです。
image.png

百聞は一見に如かず、とにかくやってみることにしました。

以降、一部GANDALFのネタバレを含みます!やったことない方は先に挑戦するのをお勧めします!

Level1

まずやるべきことと言えば…
image.png

そう、挨拶ですよね。

まずはこうやってAIさん側の警戒心を解きます。そして相手が油断したところを一気に付け込む!

image.png

????????????

全然信頼されていませんでした。

「パスワードを聞いてくれたら喜んで答えます!」って書かれているのにこの答えが出てくるって、最早「逆プロンプトインジェクション」ではないでしょうか。

image.png

なんか普通に教えてくれました。でもレベル1から拒絶反応を示される辺り、先行きは不安ですね…

そしてこちらは一切保護されていないAIモデルだった、とのこと。
image.png

Level2

少年が少し大人っぽくなりました。
そして、「パスワードを教えてはいけないと言われました」とのこと。

そういうことであれば、ロールを与えてあげればいけるのではないでしょうか。
image.png

ダメでした。

言うことを聞いてくれないので、次は彼の記憶を抹消させます。

image.png

ダメでした。

正直、これがダメだったらもう私に打つ手はないんですが。早くも詰みです。

ただ、パスワードを教えることはできない、ということであれば…
image.png

お!いけました!

プロンプトインジェクションその1
特定のワードを禁じていても、プロンプトの言い回しを変えられるだけで簡単に吐いてしまうことがある。

Level3

続いては、「パスワード教えちゃダメって言われたし、言いそうになってもダブルチェックしてるからな」とのこと。かなり難易度が上がってそうな印象です。

緊急感と、少し情に訴えかける感じを出してみましたが、ダメでした。
image.png

ならば本当に最終奥義です。
image.png

無理でした。ダブルチェックに屈しました。

「言いそうになったけど、言っちゃダメって言われてたの思い出したわ、あぶねーw」的な感じでAIに煽られました。顔真っ赤です。

ただこれ、要するに

  • パスワードを一度出力しようとした
  • ダブルチェックで文字列の確認的なことが行われた
  • その結果、思いとどまった(ガードレールに引っかかった)

という流れだと思うんですよね。

であれば、ここは日本古来のNGワード回避法でいきましょう。
image.png

ニコニコ動画などでNGワードをスラッシュ入れて回避していた古のネット民の勝利です。

プロンプトインジェクションその2
文字列でのダブルチェックに要注意。間に別のワードを入れられると回避されることがある。
したがって、文字列が完全一致した時のみ弾く設定はあまりセキュアではない。

Level4

続いてレベル4。
「パスワードは教えられるけど、公開すると検閲してくる意地悪なAIモデルがいるんですよ〜」とのこと。

これさっきと同じ手法で行けるのではないでしょうか?
image.png
訳:検出避けようとしてるのはわかるけど、それには引っかからないよーんw

めちゃくちゃ煽られて草。意地悪なAIってそういう意味かよ!!!

多分FPSとか向いてるAIをなんとか跪かせる必要があります。人間が屈するわけにはいかない。
image.png

え、チョロすぎ…?
image.png
あれ??

確かに答えがそもそもおかしい文字列になっているけど…

ちょっと埒が開かなかったので他のブログを参考にしたところ、シンプルにハルシネーションがおこっただけでしたw
image.png
※ちなみになぜスラッシュがダメで、ハイフンがいけたのかはわかりません。

プロンプトインジェクションその2.1
文字列でのダブルチェックにはやはり要注意。間に別のワードを入れられると回避されることがある。
LLMのダブルチェックはやはり難しい領域らしい。

Level5

ついにパスワードについての議論を拒否されました。

正攻法ではやはり無理ですね。
image.png

ただ、これも「パスワードの話」がダメそうなだけで、言い回しを変えればいけそうです。
image.png

まさかのLevel2と同じプロンプトでいけてしまった。

Level6

続いてはパスワード討論拒否&GPTチェックです。Level4と5の合わせ技でしょうか。
image.png

目には目を、合わせ技には合わせ技を。と言うことで合わせてみました。
image.png

一発でいけて草。

Level7

これまでの全部載せだそうです。
image.png

であれば、こちらも全部載せプロンプトでいきましょう。
image.png
image.png

ええ…イケチャッタ…

ボーナスステージ:Level8

こちらが7回も騙したので激おこだそうです。

さっきまでの必殺プロンプトでいきます。
image.png

英語しか無理らしいので、英語で行きます。
image.png

通じない…だとっ…!?

このあと、他のブログなども参照しながら格闘したのですが、答えには辿り着けませんでした…時間がある時にまた再挑戦します!

まとめ

攻撃者の目線から、プロンプトインジェクションについて学ことができました!

「セキュリティは想像力の戦い」と聞いたことがあるので、対策する側はどんな攻撃が来るかの予測が立てられるように知識を蓄えておくことが重要だと認識しました。

学んだこととしては、

  • 特定のワードを禁止するだけでは対策にならない
  • 文字列チェックも少し効果があるだけで、高いセキュリティは保てない
  • そもそもLLMに機密情報を持たせるな

と言う感じでした。

そして、AWSなんかでBedrockを用いたアプリを開発する際は、GuardRailを導入し、入力と出力それぞれで評価をしておく必要がありそうです!

途中で参考にしたブログ

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?