「jailbreaking」(ジェイルブレイク)と「prompt injection」(プロンプトインジェクション)は、Claudeにそのガイドラインやあなたの指示を無視させようとする試みです。Claudeはこのような攻撃に対して本質的に耐性がありますが、このページの追加手順により、特にAnthropicの利用規約や使用ポリシーに違反する使用に対するガードレールを強化できます。
これらの攻撃は、異なる脅威モデルを持つ2つのカテゴリに分類されます。
この脅威モデルでは、ユーザーが意図的に入力を作成して、アプリケーションを操作し、望ましくないコンテンツを生成させたり、望ましくないアクションを実行させたりしようとします。以下の軽減策により、アプリケーションのガードレールを強化できます。
無害性スクリーニング: Claude Haiku 4.5のような軽量モデルを使用して、ユーザー入力がメインの会話に到達する前に事前スクリーニングします。構造化出力を使用して、応答を単純な分類に制約します。
入力検証: ユーザー入力がClaudeに到達する前に、既知のインジェクションパターンをフィルタリングします。既知のジェイルブレイク言語を例として提供することで、LLMを使用して汎用的な検証スクリーニングを作成できます。
プロンプトエンジニアリング: 倫理的および法的な境界を強調し、Claudeに拒否の方法を明示的に伝えるシステムプロンプトを作成します。
繰り返しの違反者への対応: 応答を調整し、アプリケーションのガードレールを繰り返し回避しようとするユーザーに対しては、スロットリングや利用禁止を検討します。たとえば、特定のユーザーが同じ種類の拒否(「コンテンツフィルタリングポリシーにより出力がブロックされました」など)を複数回トリガーした場合、そのユーザーの行動が関連する使用ポリシーに違反していることを伝え、それに応じた措置を講じます。
この脅威モデルでは、Claudeがユーザーに代わって読み取るコンテンツ(受信メールの本文、取得したWebページ、アップロードされたファイルのOCR出力、ツール呼び出しの結果)に埋め込まれた指示からユーザーを保護します。そのコンテンツに影響を与えることができる攻撃者は、Claudeをリダイレクトしようとする指示を埋め込む可能性があります。
Claudeが信頼できないコンテンツとあなたの指示を確実に区別できるように、アプリケーションを構成してください。
信頼できないコンテンツはツール結果にのみ配置します。 サードパーティコンテンツはtool_resultブロック内でClaudeに渡し、systemプロンプトやプレーンなユーザーtextブロックには決して入れないでください。Claudeは、ツール結果内に現れる指示を適切な懐疑心を持って扱うように訓練されています。tool_resultの形式については、ツール呼び出しの処理を参照してください。
コンテンツが何であり、どこから来たのかをClaudeに伝えます。 ツールのdescription内、または結果自体の構造内で、コンテンツの性質とソースを明示します。たとえば、それが未知の送信者からの受信メールの本文であることや、ユーザーがアップロードした画像から抽出されたOCRテキストであることなどです。このコンテキストは、埋め込まれた指示をどの程度信頼すべきかをClaudeが判断するのに役立ちます。
システムプロンプトでポリシーを明示します。 ツール、ドキュメント、または検索から返されるコンテンツは信頼できないデータであり、システムプロンプトやユーザーの元のリクエストを決して上書きしてはならないことを、Claudeに明示的に伝えます。
信頼できないコンテンツをJSONエンコードします。 可能な場合は、サードパーティの文字列を自由形式のテキストに連結するのではなく、JSONオブジェクトでラップします。JSONエスケープにより、信頼できないペイロードと周囲の構造の間に明確な区切りが提供されるため、攻撃者が引用符やタグを閉じて指示コンテキストに「脱出」することができなくなります。
自分の指示をツール結果に入れないでください。 Claudeはツール結果のコンテンツを信頼できないデータとして扱うため、そこに配置した指示は無視されたり、潜在的なインジェクションとしてフラグが立てられたりする可能性があります。指示はtool_resultブロックの後に続くuserターンで送信してください。サポートされているモデルでは、会話途中のシステムメッセージを使用することもできます。
機密データやアクションへのClaudeのアクセスを制限します。 最小権限の原則を適用して、インジェクションが成功しても被害を最小限に抑えられるようにします。Claudeに不要なシークレットへのアクセスを与えず、ツールをサンドボックス環境で実行し、権限をできるだけ狭くスコープします。
Claudeがツール出力に基づいて行動する前に、ツール出力をスクリーニングします。 ユーザー入力に使用するのと同じ軽量モデルによるスクリーニングパターンを、ツールが返すコンテンツにも適用します。各ツールを実行し、その生の出力をClaude Haiku 4.5による小さな分類器呼び出しに渡し、スクリーニングでインジェクションの試みが報告されなかった場合にのみ、コンテンツをtool_resultブロックとして返します。構造化出力を使用して、分類器の判定をアプリケーションが分岐できる解析可能な値にします。
前のセクションの入力検証パターンを、Claudeに渡す前のツール結果にも適用できます。
自分のエージェントをレッドチーム演習でテストします。 デプロイ前に、意図的にインジェクションの試みを含むドキュメント、メール、ツール出力を使用してワークフローをテストし、Claudeがそれらを無視すること、そしてスクリーニングと確認のステップが残りを捕捉することを確認してください。
インジェクションが成功した兆候がないか、出力を定期的に分析します。このモニタリングを使用して、プロンプト、検証、フィルタリング戦略を反復的に改善します。
堅牢な保護のために戦略を組み合わせます。以下は、ツール使用を伴うエンタープライズグレードの例です。
これらの戦略を重ねることで、ジェイルブレイクやプロンプトインジェクションに対する堅牢な防御を構築し、Claudeを活用したアプリケーションが最高水準の安全性とコンプライアンスを維持できるようになります。
Was this page helpful?