| name | nuclei-scanning |
| description | Scanner de vulnerabilidades Nuclei como complemento al analisis LLM. Detecta CVEs conocidos, misconfiguraciones y paneles expuestos. Degradacion graceful si Nuclei no esta instalado. |
| context | Invocado por /security-pipeline y /pentesting. Complementa security-attacker con deteccion basada en templates. |
| category | quality |
| disable-model-invocation | false |
| user-invocable | false |
| allowed-tools | ["Bash","Read","Write"] |
Nuclei Scanner — Skill de Seguridad Complementario
Proposito
Complementar el analisis LLM (security-attacker, pentester) con un scanner
basado en templates que detecta CVEs conocidos, misconfiguraciones estandar
y paneles expuestos. El LLM encuentra vulnerabilidades logicas; Nuclei
encuentra las conocidas que el LLM podria pasar por alto.
Verificacion de instalacion
if command -v nuclei &>/dev/null; then
NUCLEI_VERSION=$(nuclei -version 2>&1 | head -1)
echo "OK: Nuclei disponible — $NUCLEI_VERSION"
else
echo "SKIP: Nuclei no instalado. Scan complementario omitido."
echo "Instalar: go install github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest"
fi
Ejecucion del scan
nuclei -u "${TARGET_URL}" \
-severity critical,high,medium \
-silent -json \
-rate-limit 50 \
-timeout 10 \
-o "output/security/nuclei-$(date +%Y%m%d-%H%M%S).json"
Parametros obligatorios
-severity critical,high,medium — no reportar low/info (ruido)
-silent -json — output estructurado, sin banners
-rate-limit 50 — maximo 50 requests/segundo
-timeout 10 — timeout por request en segundos
Parseo de resultados
Cada linea JSON contiene:
| Campo | Uso |
|---|
template-id | Identificador del template (ej: CVE-2024-1234) |
info.severity | critical, high, medium |
info.name | Nombre legible de la vulnerabilidad |
info.classification.cwe-id | CWE para deduplicacion con hallazgos LLM |
matched-at | URL donde se detecto |
curl-command | Comando para reproducir manualmente |
Deduplicacion con hallazgos LLM
Mapear hallazgos por CWE:
- Extraer
cwe-id de cada hallazgo Nuclei
- Comparar contra CWEs del security-attacker
- Si coinciden: marcar como "confirmado por ambas fuentes" (mayor confianza)
- Si solo Nuclei: anadir como hallazgo nuevo con
source: nuclei
- Si solo LLM: mantener con
source: llm
Integracion con scoring
Misma formula que el pipeline adversarial:
score = 100 - (critical * 25 + high * 10 + medium * 3 + low * 1)
Hallazgos Nuclei se marcan con source: nuclei en el informe.
Restricciones por entorno
| Entorno | Permitido | Prohibido |
|---|
| DEV | Scan completo | — |
| PRE | Scan sin DoS templates | -exclude-tags dos,fuzzing |
| PROD | Solo pasivo | -type http -exclude-tags dos,fuzzing,intrusive |
NUNCA ejecutar contra produccion sin confirmacion explicita del PM.
Degradacion graceful
| Nuclei | Target accesible | Resultado |
|---|
| Instalado | Si | Scan completo |
| Instalado | No | Solo templates de config local |
| No instalado | — | Skip con aviso, pipeline continua |
Instalacion de Nuclei
go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest
curl -sL https://github.com/projectdiscovery/nuclei/releases/latest/download/nuclei_linux_amd64.zip \
-o /tmp/nuclei.zip && unzip -o /tmp/nuclei.zip -d /usr/local/bin/ nuclei
Output
Fichero: output/security/nuclei-{fecha}.json
Resumen en informe del pipeline: seccion "Hallazgos Nuclei" con tabla.