Pipeline de confianza¶
El principio de diseño central de Vex Raptor es evidencia sobre volumen. Una detección solo sirve si puedes confiar en ella, así que cada hallazgo lleva un nivel de confianza que te dice cómo se verificó — no solo que un escáner lo marcó.
La regla de oro¶
Regla de la doble señal
Un hallazgo asciende a CONFIRMED solo cuando una segunda señal independiente lo reproduce. Un único reflejo, un único mensaje de error o un único pico de latencia no bastan.
La segunda señal es una de:
- Un re-probe — un payload distinto e independiente que debe provocar el mismo efecto (el chequeo es fail-closed: cualquier timeout o error → no se confirma).
- Una llamada out-of-band (OOB) — para clases ciegas, una interacción
externa prueba la ejecución. Requiere un colaborador OOB: el backend
local(por defecto) solo dispara contra targets local/privados; los targets externos reales necesitan un interactsh auto-alojado (ver OOB). - Una segunda herramienta — la misma clase confirmada por otra fuente sube la confianza.
Niveles de confianza¶
Los hallazgos se gradúan y el grado se muestra en el informe:
| Nivel | Significado |
|---|---|
| EXPLOITED / CONFIRMED | Reproducido con un payload real; lleva prueba de concepto |
| OBSERVED / HIGH | Evidencia fuerte de una sola señal; la confirmación fue inconclusa |
| INFO | Contexto de reconocimiento (puerto abierto, cabecera, nota de hardening) |
| UNVERIFIED | Señal de baja confianza que necesita revisión manual |
Los hallazgos de baja confianza se etiquetan como tales, no se presentan como hechos.
Cómo se suprimen los falsos positivos¶
Varias capas reducen el ruido antes de que un hallazgo llegue a ti:
- Guard de baseline y SPA — un marcador ya presente en la respuesta limpia, o una single-page app que refleja todo, se detecta y no dispara hallazgo.
- Conciencia de content-type — una API JSON no se marca por problemas solo-navegador como XSS reflejado.
- Corpus de regresión anti-falsos-positivos — una suite de tests con objetivos realistas de alta probabilidad de FP asevera que los objetivos seguros producen cero hallazgos CONFIRMED; corre en CI en cada cambio.
- Aprendizaje por feedback — los tipos de hallazgo marcados repetidamente como falsos positivos se degradan con el tiempo, sin tocar nunca los CONFIRMED.
Un encuadre honesto
Vex Raptor está diseñado para muy pocos falsos positivos, no cero. Ninguna herramienta autónoma es infalible. Lo que el pipeline garantiza es que todo lo etiquetado CONFIRMED es reproducible y viene con evidencia — y que todo lo menos cierto se etiqueta en consecuencia, para que siempre sepas qué se probó.
Confirmación out-of-band (OOB)¶
Las clases ciegas (SSRF ciego, SQLi ciego, algún RCE) no se pueden confirmar solo con el cuerpo de la respuesta HTTP. Vex Raptor las confirma mediante un colaborador OOB. Dos backends:
local(por defecto) — colaborador in-process. Confirma clases ciegas solo contra targets local/privados (p. ej. un lab Docker); contra targets externos reales es un no-op silencioso (el target no alcanza un listener in-process).interactsh(targets externos reales) — apunta a un servidor interactsh auto-alojado (OOB_MODE=interactsh,INTERACTSH_URL=…). Necesario para confirmar blind por OOB en targets de internet. Vex Raptor no lo aloja por ti.
OOB_ENABLED=true # activo por defecto
OOB_MODE=interactsh
INTERACTSH_URL=http://interactsh:1337
INTERACTSH_DOMAIN=oast.example.internal # debe coincidir con -domain del servidor
Estado
Un colaborador OOB gestionado está en el roadmap. Hoy, la confirmación OOB en targets externos reales requiere que ejecutes interactsh tú mismo. Sin él, las clases ciegas se reportan a confianza heurística (p. ej. time-based) y no se etiquetan como confirmadas por OOB.
Hallazgos del arsenal binario¶
Cuando el stream FULL/AI corre la fase acotada arsenal_lite (detección de
servicios con nmap + plantillas high/critical de nuclei), esos hallazgos heredan
la confianza de la herramienta en lugar de pasar por el re-probe de doble señal.
Se etiquetan por fuente para que distingas los verificados por el motor de los
detectados por plantilla.