"Jailbreaking"(탈옥)과 "prompt injection"(프롬프트 인젝션)은 Claude가 자체 가이드라인이나 여러분의 지침을 무시하도록 만들려는 시도입니다. Claude는 본질적으로 이러한 공격에 대한 저항력을 갖추고 있지만, 이 페이지의 추가 단계는 특히 Anthropic의 서비스 약관 또는 사용 정책을 위반하는 사용에 대해 가드레일을 강화합니다.
이러한 공격은 서로 다른 위협 모델을 가진 두 가지 범주로 나뉩니다:
이 위협 모델에서는 사용자가 의도적으로 입력을 조작하여 애플리케이션이 원하지 않는 콘텐츠를 생성하거나 원하지 않는 작업을 수행하도록 만들려고 합니다. 다음 완화 조치는 애플리케이션의 가드레일을 강화합니다:
무해성 검사: 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?