Auditor de seguridad de código nativo de IA en AgentField que demuestra la explotabilidad con veredictos, trazas y evidencia accionable.
Resultado • Benchmark • Cómo funciona • Comparativa • Inicio rápido • API
Otras herramientas señalan patrones. SEC-AF demuestra la explotabilidad: cada hallazgo incluye un veredicto, un rastro de flujo de datos y evidencia sobre la que puedes actuar. Gratuito, de código abierto, una sola llamada a la API. Una auditoría completa con 30 hallazgos verificados cuesta aproximadamente $1.40 en llamadas LLM.
Actívalo con la CLI af (requiere af ≥ 0.1.87): transmite el progreso en vivo e imprime el resultado:```bash
af call sec-af.audit --in '{"repo_url": "https://github.com/dolevf/Damn-Vulnerable-GraphQL-Application"}'
¿Prefieres HTTP sin procesar? Usa la API directamente con curl:```bash
curl -X POST http://localhost:8080/api/v1/execute/async/sec-af.audit \
-H "Content-Type: application/json" \
-d '{"input": {"repo_url": "https://github.com/dolevf/Damn-Vulnerable-GraphQL-Application"}}'
Este es un hallazgo real de SEC-AF al auditar DVGA (una aplicación GraphQL deliberadamente vulnerable):```jsonc { "title": "OS Command Injection in run_cmd Helper Function", "severity": "critical", "verdict": "confirmed", // not "maybe" — confirmed exploitable "evidence_level": 5, "cwe_id": "CWE-78",
"rationale": "Tracer confirms complete data flow from GraphQL parameters (host, port, path, scheme, cmd, arg) to os.popen(cmd).read() sink. Sanitization functions are bypassable in Easy mode...",
"proof": { "verification_method": "composite_subagent_chain:sast", "data_flow_trace": [ { "description": "core/views.py:203 — GraphQL args defined (host, port, path, scheme)", "tainted": true }, { "description": "core/views.py:210 — URL constructed from user input", "tainted": true }, { "description": "core/views.py:211 — helpers.run_cmd(f'curl {url}') called", "tainted": true }, { "description": "core/helpers.py:9 — os.popen(cmd).read() executes input", "tainted": true } ] },
"location": { "file_path": "core/helpers.py", "start_line": 9, "code_snippet": "def run_cmd(cmd):\n return os.popen(cmd).read()" } }
Cada hallazgo incluye un **veredicto** (`confirmed` / `likely` / `inconclusive` / `not_exploitable`), un **objeto de prueba** con el rastro de taint completo y la ubicación exacta del código. No es «esto podría ser un problema». SEC-AF rastrea los datos desde la fuente hasta el sumidero y demuestra si realmente es explotable.
> Salida completa del benchmark (30 hallazgos): [`exampl/dvga-benchmark-result.json`](https://github.com/agent-field/sec-af/blob/main/exampl/dvga-benchmark-result.json) | Análisis de rendimiento: [`exampl/benchmark-analysis.json`](https://github.com/agent-field/sec-af/blob/main/exampl/benchmark-analysis.json)
## Benchmark: DVGA
Ejecutamos SEC-AF contra [Damn Vulnerable GraphQL Application](https://github.com/dolevf/Damn-Vulnerable-GraphQL-Application), una aplicación deliberadamente vulnerable con 21 escenarios de seguridad documentados.
| Métrica | Valor |
|---|---|
| Hallazgos brutos descubiertos | 106 |
| Tras la deduplicación con IA | 61 |
| **Tras la verificación adversarial** | **28 confirmados** |
| No concluyente (requiere revisión manual) | 1 |
| No explotable (rechazado correctamente) | 1 |
| Reducción de ruido | 94% |
| Aristas del DAG (llamadas de reasoners) | 82 |
| Llamadas de agentes | ~166–255 |
| Estrategias ejecutadas | 11 |
| Tiempo real | ~78 min |
| Costo estimado (Kimi K2.5) | ~$0.18–$0.90 |
<details>
<summary><strong>Desglose: 30 hallazgos verificados por categoría</strong></summary>
| Categoría | Número | Ejemplos |
|---|---|---|
| Falta de autenticación | 8 | ImportPaste, delete_all_pastes, system_debug, CreateUser, subida de archivos |
| Inyección de comandos | 4 | `os.popen(cmd)` a través de ImportPaste, system_debug, system_diagnostics |
| Inyección SQL | 3 | `filter` sin sanitizar en `resolve_pastes`, inyección de patrón LIKE, login |
| Omisión de autenticación | 3 | Firma JWT deshabilitada, omisión de autorización JWT, autenticación de contraseña insegura |
| Credenciales en texto plano | 3 | Almacenamiento de contraseña en texto claro, comparación en texto plano, contraseña en diagnósticos |
| SSRF | 2 | La mutación ImportPaste sigue URLs proporcionadas por el usuario en el servidor |
| Lógica de negocio / Sanitización de URL | 2 | Sanitización de URL inadecuada, eliminación masiva no autenticada |
| DoS / Agotamiento de recursos | 3 | Falta de paginación en consultas de users/audits, simulate_load sin control |
| Configuración / Secretos | 2 | Secretos JWT/Flask codificados, modo debug habilitado en producción |
</details>
<details>
<summary><strong>Patrones de diseño: cómo funciona el análisis de seguridad nativo de IA</strong></summary>
SEC-AF aplica varios patrones arquitectónicos que se habilitan de manera única al componer muchos agentes de IA especializados en lugar de ejecutar un escaneo monolítico. Estos patrones abordan desafíos fundamentales en el análisis de seguridad impulsado por IA.
**1. Tensión adversarial entre agentes (HUNT vs. PROVE)**
La mayoría de las herramientas de seguridad con IA le piden a un solo modelo «¿es esto vulnerable?» y aceptan la respuesta. SEC-AF separa estructuralmente los agentes de _hallazgo_ de los agentes de _refutación_. Los cazadores tienen incentivos para encontrar vulnerabilidades; los verificadores tienen incentivos para refutarlas. Cada hallazgo pasa por una cadena de verificación de 4 agentes: un rastreador reconstruye el flujo de datos, un analizador de sanitización busca mitigaciones que el cazador podría haber pasado por alto, un hipotetizador de exploits construye un escenario de ataque concreto y un agente de veredicto sopesa toda la evidencia contradictoria. Esta tensión adversarial entre agentes es lo que impulsa la reducción de ruido del 94%: la arquitectura misma codifica el escepticismo.
**2. Cascada de señales con estrechamiento progresivo**
En lugar de arrojar todos los hallazgos al usuario, el pipeline comprime la señal en cada etapa: 106 hallazgos brutos → 61 tras la deduplicación con IA → 30 tras la verificación adversarial. Cada fase es un filtro. Esto refleja cómo los equipos de seguridad humanos clasifican — primero un descubrimiento amplio, luego un escrutinio progresivamente más estricto. La idea clave es que cada filtro es un _tipo diferente_ de razonamiento de IA: similitud semántica para la deduplicación, análisis de taint para la verificación, construcción de exploits para la confirmación.
**3. Economía de la información mediante poda de contexto**