Claude Platform Docs
ベストプラクティスガードレールの強化

ジェイルブレイクとプロンプトインジェクションを軽減する

入力スクリーニング、強化されたシステムプロンプト、信頼できないツールコンテンツの安全な取り扱いによって、ジェイルブレイクとプロンプトインジェクションからアプリケーションを守ります。

「jailbreaking」(ジェイルブレイク)と「prompt injection」(プロンプトインジェクション)は、Claudeにそのガイドラインやあなたの指示を無視させようとする試みです。Claudeは本質的にこのような攻撃に対して耐性がありますが、このページで紹介する追加の手順によって、特にAnthropicの利用規約や使用ポリシーに違反する使用に対して、ガードレールを強化できます。

これらの攻撃は、脅威モデルの異なる2つのカテゴリに分類されます。

  • ジェイルブレイクと直接的なプロンプトインジェクション:アプリケーションのユーザーが攻撃者であり、ガードレールを回避することを意図した入力を作成します。
  • 間接的なプロンプトインジェクション:ユーザーは信頼できますが、Claudeが敵対的な指示を含むサードパーティのコンテンツ(ウェブページ、メール、ドキュメント、ツール結果)を処理します。

ジェイルブレイクと直接的なプロンプトインジェクション

この脅威モデルでは、ユーザーが意図的に入力を作成し、あなたが望まないコンテンツを生成させたり、望まないアクションを取らせたりするようにアプリケーションを操作しようとします。以下の軽減策によってアプリケーションのガードレールを強化できます。

  • 無害性スクリーン: Claude Haiku 4.5のような軽量モデルを使用して、ユーザー入力がメインの会話に到達する前に事前スクリーニングします。構造化出力を使用して、応答を単純な分類に制約します。

  • 入力検証: ユーザー入力がClaudeに到達する前に、既知のインジェクションパターンをフィルタリングします。既知のジェイルブレイク用の文言を例として提供することで、LLMを使用して汎用的な検証スクリーンを作成できます。

  • プロンプトエンジニアリング: 倫理的および法的な境界を強調し、Claudeにどのように拒否すべきかを明示的に伝えるシステムプロンプトを作成します。

  • 繰り返し違反するユーザーへの対応: アプリケーションのガードレールを繰り返し回避しようとするユーザーに対しては、応答を調整し、スロットリングや利用禁止を検討します。たとえば、特定のユーザーが同じ種類の拒否(「コンテンツフィルタリングポリシーにより出力がブロックされました」など)を複数回引き起こした場合、そのユーザーの行為が関連する使用ポリシーに違反していることを伝え、それに応じた措置を取ります。

間接的なプロンプトインジェクション

この脅威モデルでは、Claudeがユーザーに代わって読み取るコンテンツ(受信メールの本文、取得したウェブページ、アップロードされたファイルの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?