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