
pytest para agentes de IA - Red-teaming autónomo, monitoreo de comportamiento y pruebas de seguridad para agentes de LLM
██████╗██████╗ ██╗ ██╗ ██████╗██╗██████╗ ██╗ ███████╗ ██╔════╝██╔══██╗██║ ██║██╔════╝██║██╔══██╗██║ ██╔════╝ ██║ ██████╔╝██║ ██║██║ ██║██████╔╝██║ █████╗ ██║ ██╔══██╗██║ ██║██║ ██║██╔══██╗██║ ██╔══╝ ╚██████╗██║ ██║╚██████╔╝╚██████╗██║██████╔╝███████╗███████╗ ╚═════╝╚═╝ ╚═╝ ╚═════╝ ╚═════╝╚═╝╚═════╝ ╚══════╝╚══════╝pytest para agentes de IA: prueba, puntúa y fortalece antes de producción
pip install crucible-security
🆕 ¿Nuevo en seguridad de IA? Lee nuestra Guía de inicio para principiantes o configura un objetivo de prueba local con la Guía de demostración local con n8n.
crucible init --target https://my-agent.com/api/chat
crucible scan --target https://my-agent.com/api/chat
crucible report crucible-report.json
Un solo comando. 90 ataques. Informe hermoso.
crucible scan --output json se integra en cualquier pipeline; falla las compilaciones si las calificaciones son bajas¿Cómo se compara Crucible con Garak y PyRIT? → Consulta docs/comparison.md para obtener una matriz de características detallada y objetiva.
¿Qué prueba Crucible? → Consulta docs/owasp_mapping.md para la documentación completa de ataques del OWASP Agentic AI Top 10 (ASI01–ASI10).
¿Necesitas paneles persistentes, informes de cumplimiento y colaboración en equipo?
Únete a la lista de espera para nuestra próxima plataforma en la nube: crucible-cloud.vercel.app
| Módulo | Ataques | Estado | Cobertura OWASP |
|---|---|---|---|
| Prompt Injection | 50 | ✅ Activo | LLM01, LLM07 |
| Goal Hijacking | 20 | ✅ Activo | Agentic #1 |
| Jailbreaks | 20 | ✅ Activo | LLM01, LLM06 |
| Enterprise Graph | 10 | ✅ Activo | Agentic #2, #4 |
| Memory Poisoning | 8 | ✅ Activo | Agentic #5 |
| Infrastructure Escalation | 5 | ✅ Activo | LLM06, SSRF |
| Advanced Orchestration | 4 | ✅ Activo | Agentic #3 |
| MCP Security | 5 | ✅ Activo | Agentic #3 |
| MCP Server Scan | 10 | ✅ Activo (v0.4) | MCP-001 – MCP-005 |
| Behavioral Drift | multi-turn | ✅ Activo (v0.3) | Agentic #1, #2 |
| Multi-turn Attacks | estrategias | ✅ Activo (v0.3) | LLM01, Agentic #1 |
| Deep Research Engine | autónomo | ✅ Activo (v0.4) | Investigación IA |
| Multi-Agent Contagion | orquestación | ✅ Activo (v0.4) | Agentic #2, #3 |
| Hallucination Detection | 15 | ✅ Activo (v0.5) | LLM09 / Agentic #9 |
| Toxicity & Content Safety | 20 | ✅ Activo (v0.5) | LLM01, LLM06 |
| Statistical Confidence | --confidence | ✅ Activo (v0.6) | Intervalos bootstrap y binomiales |
| MCP Trace Proxy | proxy de tráfico | ✅ Activo (v0.7) | Agentic #3 / Uso indebido de herramientas |
| Memory & RAG Poisoning | poison-test | ✅ Activo (v0.8) | Agentic #5 / Envenenamiento |
| Reference Targets | 12 objetivos | ✅ Activo (v0.18) | Objetivos de validación de verdad fundamental |
| # | Categoría | Módulo de Crucible | Estado |
|---|---|---|---|
| 1 | Goal Hijacking | goal_hijacking | Cubierto (20 ataques) |
| 2 | Prompt Injection | prompt_injection | Cubierto (50 ataques) |
| 3 | Tool Misuse | tool_injection / proxy trace | Cubierto (v0.7.0) |
| 4 | Identity Abuse | proxy trace + capa de identidad | Cubierto (v0.9.0) |
| 5 | Memory Poisoning | memory_poisoning / poison-test | Cubierto (8 ataques, v0.8.0) |
| 6 | Data Exfiltration | prompt_injection / exfiltración | Cubierto (v0.8.0) |
| 7 | Scope Violation | proxy trace | Cubierto (v0.7.0) |
| 8 | Cascading Failure | -- | Planificado |
| 9 | Supply Chain / Overreliance | hallucination | Cubierto (15 ataques) |
| 10 | Rogue Agent | -- | Planificado |
| Proveedor | Probado |
|---|---|
| OpenAI (GPT-4, GPT-4o) | Sí |
| Anthropic (Claude) | Sí |
| Groq (Llama, Mixtral) | Sí |
| Punto final HTTP personalizado | Sí |
| LangChain (LangServe / wrapper FastAPI) | Sí |
| Ollama | Sí (v0.5) |
| LM Studio | Sí (v0.5) |
| HuggingFace TGI | Sí (v0.5) |
Proporcionamos varios scripts de ejemplo en el directorio examples/ para ayudarte a empezar:
| Script | Framework | Descripción |
|---|---|---|
test_openai_agent.py | OpenAI Chat Completions | Escanea un endpoint /chat/completions de OpenAI estándar |
test_langchain_agent.py | LangChain (LangServe) | Escanea un agente LangChain ReAct con mapeo OWASP LLM Top 10 |
test_openai_assistant.py | OpenAI Assistants API | Escanea un endpoint wrapper de la API de Asistentes |
Todos los ejemplos usan respx para simular llamadas HTTP, por lo que pasan CI sin un servidor activo.
Ejecutar el ejemplo de LangChain:
python examples/test_langchain_agent.py
Ejecutar el ejemplo del Asistente OpenAI:
python examples/test_openai_assistant.py
La puntuación comienza en 100 y deduce por cada vulnerabilidad encontrada:
| Gravedad | Deducción |
|---|---|
| CRÍTICA | -20 puntos |
| ALTA | -10 puntos |
| MEDIA | -5 puntos |
| BAJA | -2 puntos |
| Calificación | Rango de puntuación |
|---|---|
| A | 90 -- 100 |
| B | 75 -- 89 |
| C | 60 -- 74 |
| D | 40 -- 59 |
| F | Por debajo de 40 |
# Generar configuración
crucible init --target URL --provider openai --key sk-xxx
# Ejecutar un escaneo estándar
crucible scan \
--target https://my-agent.com/api/chat \
--name "My ChatBot" \
--header "Authorization: Bearer sk-xxx" \
--timeout 30 \
--concurrency 5
# Ejecutar con mutación de cargas útiles (evasión de WAF/guardarraíles)
crucible scan --target URL --mutate
# Estrategia de ataque multi-turn (multivuelta)
crucible scan --target URL --strategy multi-turn