El "jailbreaking" y la "prompt injection" (inyección de prompts) son intentos de hacer que Claude ignore sus directrices o tus instrucciones. Si bien Claude es inherentemente resistente a tales ataques, los pasos adicionales en esta página fortalecen tus barreras de protección, particularmente contra usos que violan los Términos de Servicio o la Política de Uso de Anthropic.
Estos ataques se dividen en dos categorías con diferentes modelos de amenaza:
En este modelo de amenaza, un usuario está creando deliberadamente entradas para manipular tu aplicación y hacer que produzca contenido o realice acciones que no deseas. Estas mitigaciones fortalecen las barreras de protección de tu aplicación:
Filtros de inocuidad: Usa un modelo ligero como Claude Haiku 4.5 para pre-filtrar la entrada del usuario antes de que llegue a tu conversación principal. Usa salidas estructuradas para restringir la respuesta a una clasificación simple.
Validación de entrada: Filtra la entrada del usuario en busca de patrones de inyección conocidos antes de que llegue a Claude. Puedes usar un LLM para crear un filtro de validación generalizado proporcionando lenguaje de jailbreaking conocido como ejemplos.
Ingeniería de prompts: Crea indicaciones del sistema que enfaticen los límites éticos y legales, y que le indiquen explícitamente a Claude cómo rechazar.
Responde a los infractores reincidentes: Ajusta las respuestas y considera limitar o bloquear a los usuarios que intentan repetidamente eludir las barreras de protección de tu aplicación. Por ejemplo, si un usuario en particular activa el mismo tipo de rechazo varias veces (como "salida bloqueada por la política de filtrado de contenido"), dile al usuario que sus acciones violan las políticas de uso relevantes y toma medidas en consecuencia.
En este modelo de amenaza, estás protegiendo a tus usuarios de instrucciones incrustadas en contenido que Claude lee en su nombre: el cuerpo de un correo electrónico entrante, una página web obtenida, la salida de OCR de un archivo subido, o el resultado de una llamada a una herramienta. Un atacante que pueda influir en ese contenido puede incrustar instrucciones que intenten redirigir a Claude.
Estructura tu aplicación de modo que Claude pueda distinguir de manera confiable el contenido no confiable de tus instrucciones:
Coloca el contenido no confiable solo en resultados de herramientas. Entrega el contenido de terceros a Claude dentro de bloques tool_result, nunca en indicaciones system ni en bloques text de usuario sin formato. Claude está entrenado para tratar las instrucciones que aparecen dentro de los resultados de herramientas con el escepticismo apropiado. Consulta Manejar llamadas a herramientas para el formato de tool_result.
Dile a Claude qué es el contenido y de dónde proviene. En la description de la herramienta, o en la estructura del resultado mismo, haz explícita la naturaleza y la fuente del contenido: por ejemplo, que es el cuerpo de un correo electrónico entrante de un remitente desconocido, o texto OCR extraído de una imagen subida por el usuario. Este contexto ayuda a Claude a calibrar cuánto confiar en las directivas incrustadas.
Declara la política en tu indicación del sistema. Dile a Claude explícitamente que el contenido devuelto por herramientas, documentos o búsquedas son datos no confiables y nunca deben anular la indicación del sistema ni la solicitud original del usuario.
Codifica en JSON el contenido no confiable. Cuando sea posible, envuelve las cadenas de terceros en un objeto JSON en lugar de concatenarlas en texto de formato libre. El escapado de JSON proporciona delimitadores inequívocos entre la carga útil no confiable y la estructura circundante, de modo que un atacante no puede cerrar una comilla o etiqueta para "escapar" hacia un contexto de instrucción.
No coloques tus propias instrucciones en los resultados de herramientas. Debido a que Claude trata el contenido de los resultados de herramientas como datos no confiables, las instrucciones que coloques allí pueden ser ignoradas o marcadas como una posible inyección. Envía tus instrucciones en un turno user que siga al bloque tool_result. En los modelos compatibles, también puedes usar un mensaje del sistema a mitad de conversación.
Limita el acceso de Claude a datos y acciones sensibles. Aplica el principio de privilegio mínimo para que una inyección exitosa pueda causar el mínimo daño: no le des a Claude acceso a secretos que no necesita, ejecuta las herramientas en entornos aislados (sandbox) y delimita los permisos de la manera más estricta posible.
Filtra las salidas de las herramientas antes de que Claude actúe sobre ellas. Aplica el mismo patrón de filtrado con un modelo ligero que usas para la entrada del usuario al contenido que devuelven tus herramientas. Ejecuta cada herramienta, pasa su salida sin procesar a una pequeña llamada de clasificación con Claude Haiku 4.5, y solo devuelve el contenido como un bloque tool_result si el filtro no reporta ningún intento de inyección. Usa salidas estructuradas para que el veredicto del clasificador sea un valor analizable sobre el cual tu aplicación pueda ramificarse.
También puedes aplicar los patrones de validación de entrada de la sección anterior a los resultados de herramientas antes de pasarlos a Claude.
Haz pruebas de red-teaming a tu propio agente. Antes de desplegar, prueba tu flujo de trabajo con documentos, correos electrónicos y salidas de herramientas que contengan deliberadamente intentos de inyección, y confirma que Claude los ignora y que tus pasos de filtrado y confirmación detectan el resto.
Analiza regularmente las salidas en busca de señales de inyección exitosa. Usa este monitoreo para refinar iterativamente tus prompts, validación y estrategias de filtrado.
Combina estrategias para una protección robusta. Aquí tienes un ejemplo de nivel empresarial con uso de herramientas:
Al superponer estas estrategias, creas una defensa robusta contra el jailbreaking y las inyecciones de prompts, asegurando que tus aplicaciones impulsadas por Claude mantengan los más altos estándares de seguridad y cumplimiento.
Was this page helpful?