# Exploitability Scoring Methodology ## Overview El sistema de puntuación de la optimización de ClawSec proporciona una evaluación de vulnerabilidad consciente de contexto diseñada específicamente para implementaciones de agentes de IA (OpenClaw/NanoClaw). A diferencia de las puntuaciones genéricas de CVSS que tratan a todos los ambientes por igual, nuestra puntuación considera los patrones únicos de superficie de ataque y uso de los agentes de AI para reducir la fatiga de alerta y priorizar amenazas accionables. ## Scoring Levels TENIDO Nivel ANTE Severity TENIDO Significado Silencio... Silencio `high` ANTE Critical/High ANTE Exploitable en despliegues típicos de agentes, atención inmediata requerida Silencio `medium` Silencio Medium Silencio Puede ser explotable dependiendo de la configuración, justifica la investigación Silencio `low` Silencio Bajo Silencio Explotación limitada en contexto de agente, baja prioridad Silencio `unknown` Silencio Desconocido Silencio Datos insuficientes para evaluar la explotación ## Scoring Factors ### 1. CVSS Base Score (Baseline) El análisis comienza con la puntuación base CVSS como base: **CVSS ≥ 9.0**: Severidad crítica → puntuación inicial `high` - **CVSS 7.0-8.9**: Alta gravedad → puntuación inicial `high` **CVSS 4.0-6.9**: Severidad media → puntuación inicial `medium` **CVSS 1.0-3.9**: Baja gravedad → puntuación inicial `low` - **No CVSS**: → puntuación inicial `unknown` ### 2. Análisis de vectores de ataque (Métricas CVSS) El analizador analiza los vectores CVSS v2, v3.0 y v3.1 para evaluar: #### Network Accessibility **AV:N** (Network): Remotamente explotable sobre la red - **AV:A** (Adjacent): Requiere acceso a la red local - **AV:L** (Local): Requiere el acceso del sistema local - **AV:P** (Physical): Requiere acceso físico **Impact on agents**: Las vulnerabilidades accesibles a la red son elevadas porque los agentes normalmente funcionan como servicios de red o hacen llamadas externas de API. ##### Requisitos de autenticación - **PR:N / Au:NONE**: No se requiere autenticación → eleva la puntuación - **PR:L / Au:SINGLE**: Bajo privilegios requeridos - **PR:H / Au:MULTIPLE**: Se requieren altos privilegios → reduce la puntuación **Impact on agents**: Los exploits no autenticados son críticos para las API de agente expuesto públicamente. ###### User Interaction - **UI:N**: No se requiere interacción de usuario → eleva la puntuación - **UI:R**: Requiere la interacción del usuario → reduce la puntuación **Impact on agents**: Los agentes suelen funcionar de forma autónoma, por lo que las vulnerabilidades que requieren interacción con el usuario son menos críticas. #### Attack Complexity - **AC:L**: Baja complejidad → eleva la puntuación - **AC:M / AC:H**: Media / Alta complejidad → neutral o reduce la puntuación **Impact on agents**: Las explotaciones de baja complejidad tienen más probabilidades de ser automatizadas y utilizadas en ataques masivos. ### 3. Tipo de vulnerabilidad (Contexto de despliegue) ClawSec ajusta las puntuaciones basándose en cómo los tipos de vulnerabilidad afectan las implementaciones de agentes AI: #### High-Risk Types in Agent Context ** Ejecución del Código de Revocación (RCE)* * ``` Score: Always HIGH Rationale: RCE is critical in agent deployments ``` Los agentes de AI ejecutan código arbitrario como parte de su función. Las vulnerabilidades RCE permiten a los atacantes secuestrar flujo de ejecución de agentes, exfiltrate credenciales o pivotar a otros sistemas. **Server-Side Request Forgery (SSRF)* * ``` Score: Elevated to HIGH if CVSS ≥ 6.0 Rationale: SSRF affects agents making external requests ``` Los agentes suelen llamar a API externas, acceder a servicios internos y buscar recursos remotos. SSRF permite a los atacantes: - Acceso a los servicios de metadatos de nube interna (AWS IMDSv1, metadatos GCP) - Pivot a redes internas - Exfiltrate data through DNS túneling **Path Traversal / Directorio Traversal* * ``` Score: Elevated to HIGH if CVSS ≥ 6.0 Rationale: Path traversal affects agents with file access ``` Los agentes leen archivos, ejecutan scripts y administran codebases. Traversal permite: - Leyendo archivos de configuración sensibles (.env, credenciales) - Acceso a las teclas SSH, fichas API - Sobreescribir archivos de sistema crítico Inyección colectiva** ``` Score: Always HIGH Rationale: Command injection is critical in agent deployments ``` Similar a RCE, los agentes a menudo ejecutan comandos de shell para interactuar con sistemas. La inyección de comandos permite un compromiso completo del sistema. #### Medium-Risk Types **Contaminación de prototipos (Node.js)* * ``` Score: Elevated from LOW to MEDIUM Rationale: Prototype pollution can escalate in Node.js agents ``` Muchos marcos de agentes funcionan en Node.js. La contaminación prototipo puede conducir a: - Pasaje de cheques de autenticación - Escalada de privilegios - Denegación del servicio **SQL Injection / NoSQL Injection** ``` Score: Elevated to HIGH if network-accessible and unauthenticated Rationale: Injection affects agents with database access ``` Los agentes que almacenan historia de conversación, datos de usuario o resultados de herramientas en bases de datos son vulnerables a ataques de inyección. #### Tipos de tinta inferior **Cross-Site Scripting (XSS)* * ``` Score: Reduced to MEDIUM if not network-accessible Rationale: XSS has limited impact in headless agents ``` Los agentes normalmente no renderizan HTML en los navegadores, reduciendo el impacto XSS. Sin embargo, XSS en la gestión de agentes UIs o interfaces de chat sigue siendo una preocupación. ### 4. Disponibilidad de explotación Cuando `--check-exploits` está habilitado, el analizador comprueba URLs de referencia para exploits públicos: ** Indicadores de despliegue:** - exploit-db.com / exploit-database.com - packetstormsecurity.com - github.com/exploit, github.com/poc - módulos marco metásploit - URL que contienen "/exploit", "/poc", "/proof-of-concept" **Score Elevation:** - `low` → `medium` (exploit available) - `medium` → `high` (exploit available) - `unknown` → `medium` (exploit available + CVSS ⇩ 0) **Rationale**: Las explotaciones públicas reducen la barrera de habilidad para los atacantes y aumentan la probabilidad de explotación automatizada. ## Scoring Algorithm El analizador sigue este árbol de decisión: ``` 1. Parse CVSS score → set baseline (high/medium/low/unknown) 2. Parse CVSS vector → analyze attack characteristics 3. Adjust for attack vector: - Network-accessible + no auth + no UI → elevate to HIGH - Local-only access → reduce HIGH to MEDIUM 4. Adjust for vulnerability type: - Check against agent-specific risk categories - Elevate or reduce score based on deployment context 5. Check for public exploits (if enabled): - Elevate score if exploits detected 6. Generate rationale explaining the final score ``` ## Ejemplos ### Ejemplo 1: Critical RCE (High Exploitability) ```json { "cve_id": "CVE-2024-12345", "cvss_score": 9.8, "cvss_vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H", "type": "remote_code_execution", "description": "Unauthenticated RCE in Express.js framework" } ``` ** Producto de Análisis** ```json { "exploitability_score": "high", "exploitability_rationale": "Critical CVSS score (9.8); remotely exploitable without authentication; RCE is critical in agent deployments" } ``` **Por qué ALTO**: CVSS crítico + red accesible + no auth + RCE tipo. ### Ejemplo 2: SSRF en la API de agente (Explotabilidad alta) ```json { "cve_id": "CVE-2024-23456", "cvss_score": 7.3, "cvss_vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L", "type": "server_side_request_forgery", "description": "SSRF in webhook handler allows internal network access" } ``` ** Producto de Análisis** ```json { "exploitability_score": "high", "exploitability_rationale": "High CVSS score (7.3); remotely exploitable without authentication; SSRF affects agents making external requests" } ``` **Por qué ALTO**: SSRF es crítico para los agentes que hacen llamadas de API (la mayoría lo hace). El acceso a la red sin autenticación eleva el riesgo. ### Ejemplo 3: Path Traversal with Public Exploit (High Exploitability) ```json { "cve_id": "CVE-2024-34567", "cvss_score": 6.5, "cvss_vector": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N", "type": "path_traversal", "references": [ "https://exploit-db.com/exploits/51234", "https://nvd.nist.gov/vuln/detail/CVE-2024-34567" ] } ``` ** Producto de análisis (con --check-exploits):** ```json { "exploitability_score": "high", "exploitability_rationale": "Medium CVSS score (6.5); network accessible; path traversal affects agents with file access; public exploit available (1 source)" } ``` **Por qué ALTO**: Acceso a ficheros Path traversal + agente + exploit público eleva el CVSS medio a alta explotabilidad. ### Ejemplo 4: XSS in Agent UI (Medium Exploitability) ```json { "cve_id": "CVE-2024-45678", "cvss_score": 7.1, "cvss_vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:L", "type": "cross_site_scripting", "description": "Stored XSS in agent management dashboard" } ``` ** Producto de Análisis** ```json { "exploitability_score": "medium", "exploitability_rationale": "High CVSS score (7.1); network accessible; XSS has limited impact in headless agents" } ``` **Por qué MEDIUM**: A pesar de la alta CVSS, XSS es menos crítico en implementaciones de agentes (operación sin cabeza). Requiere la interacción del usuario. ### Ejemplo 5: Escalada Local de Privilege (Explotabilidad de Medios) ```json { "cve_id": "CVE-2024-56789", "cvss_score": 8.8, "cvss_vector": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H", "type": "privilege_escalation", "description": "Local privilege escalation via symbolic link attack" } ``` ** Producto de Análisis** ```json { "exploitability_score": "medium", "exploitability_rationale": "High CVSS score (8.8); requires local access" } ``` **Por qué MEDIUM**: A pesar de la alta CVSS, requiere acceso local. Los agentes normalmente se ejecutan en entornos containerizzatos y en caja donde la escalada local tiene un impacto limitado. ### Ejemplo 6: Contaminación Prototipo con Exploit (High Exploitability) ```json { "cve_id": "CVE-2024-67890", "cvss_score": 5.3, "cvss_vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N", "type": "prototype_pollution", "description": "Prototype pollution in lodash merge function", "references": [ "https://github.com/exploit/prototype-pollution-poc", "https://snyk.io/vuln/SNYK-JS-LODASH-1234567" ] } ``` ** Producto de análisis (con --check-exploits):** ```json { "exploitability_score": "high", "exploitability_rationale": "Medium CVSS score (5.3); remotely exploitable without authentication; prototype pollution can escalate in Node.js agents; public exploit available (1 source)" } ``` **Por qué ALTO**: contaminación prototipo en agentes Node.js + explotación pública + acceso a la red sin auth = alto riesgo a pesar de CVSS moderado. ## Usage in ClawSec Workflows ### Automated Scoring (NVD Feed) El flujo de trabajo `poll-nvd-cves.yml` marca automáticamente nuevos CVEs: ```bash # Workflow step python utils/analyze_exploitability.py --json --check-exploits < cve-data.json ``` Los asesores en `advisories/feed.json` pueden incluir: ```json { "id": "CVE-2024-12345", "severity": "high", "exploitability_score": "high", "exploitability_rationale": "Critical CVSS score (9.8); remotely exploitable without authentication; RCE is critical in agent deployments", "attack_vector_analysis": { "is_network_accessible": true, "requires_authentication": false, "requires_user_interaction": false, "complexity": "low" } } ``` ### Manual Analysis Los investigadores de seguridad pueden analizar CVEs manualmente: ```bash # Basic analysis echo '{"cve_id":"CVE-2024-12345","cvss_score":7.3,"type":"ssrf"}' | \ python utils/analyze_exploitability.py --json # With exploit detection echo '{"cve_id":"CVE-2024-12345","cvss_score":7.3,"references":["https://exploit-db.com/exploits/51234"]}' | \ python utils/analyze_exploitability.py --json --check-exploits ``` ## Filtración por Exploitability Los usuarios pueden filtrar las asesorías mediante la puntuación de explotación: ```bash # Get only high-exploitability advisories curl -s https://clawsec.prompt.security/feed.json | \ jq '.advisories[] | select(.exploitability_score == "high")' # Prioritize by exploitability and severity curl -s https://clawsec.prompt.security/feed.json | \ jq '[.advisories[] | select(.exploitability_score == "high" and .severity == "critical")] | sort_by(.cvss_score) | reverse' ``` ## Backfilling Existing Advisories (Mantenimiento histórico) `scripts/backfill-exploitability.sh` se mantiene como una utilidad de mantenimiento histórico para el mantenimiento de un repositorio. No es el camino principal para la generación de asesoramiento normal. Rutas preferidas: 1. Ruta canónica de la CI: ejecutar el flujo de trabajo NVD con init/reset para reconstruir asesorías de NVD y firmar artefactos en tubería. 2. Ruta del desarrollador local: ejecute `./scripts/populate-local-feed.sh --force` para repoblar los piensos locales con contexto de explotación. Use backfill sólo cuando repara explícitamente el contenido de alimentación heredado que ya existe en-repo. ## Community Contributions Los miembros de la comunidad pueden presentar evaluaciones de la explotación: 1. **Informe a través de GitHub Edición**: Use la plantilla de asesoramiento para informar a CVEs con contexto de explotación 2. **Análisis automatizado**: El flujo de trabajo `community-advisory.yml` marca automáticamente CVEs reportado por la comunidad 3. **Revisión manual**: Los usuarios examinan y aprueban evaluaciones de la explotación 4. **Feed Update**: Los asesores aprobados se añaden al pienso con puntuaciones de explotación ## Limitaciones y trabajo futuro Limitaciones actuales 1. **Análisis estadístico**: El cableado se basa en metadatos CVE, no en el análisis dinámico del tiempo de ejecución 2. **No hay detección de versiones**: No comprueba si las versiones específicas son vulnerables 3. ** Clasificación interna**: No considera atenuaciones parciales o defensa en profundidad 4. **Contexto enviado**: No conoce la configuración exacta del agente ni las herramientas desplegadas ### Future Enhancements 1. **Incorporar las puntuaciones de probabilidad EPSS (Exploit Prediction Scoring System)** 2. **KEV Matching**: Cross-reference with CISA KEV (Known Exploited Vulnerabilities) catalog 3. **Agent Profiling**: Considerar las capacidades de los agentes desplegados y las API expuestas 4. **Detección de Mitigación**: Comprobar reglas de WAF, sandboxing u otros controles compensatorios 5. **Escobimiento basado en MLS**: Usar el aprendizaje automático para predecir la explotación basada en datos históricos ## Referencias **CVSS v3.1 Especificación**: [https://www.first.org/cvss/v3.1/specification-document](https://www.first.org/cvss/v3.1/specification-document) - Guía CVSS v2**: [https://www.first.org/cvss/v2/guide](https://www.first.org/cvss/v2/guide) - [https://www.first.org/epss/](https://www.first.org/epss/) - **CISA KEV**: [https://www.cisa.gov/known-exploited-vulnerabilities-catalog](https://www.cisa.gov/known-exploited-vulnerabilities-catalog) **NVD API**: [https://nvd.nist.gov/developers/vulnerabilities](https://nvd.nist.gov/developers/vulnerabilities) ## Contribución Mejorar la metodología de puntuación de explotabilidad: 1. **Enviar casos de prueba**: Agregar casos de prueba a `utils/analyze_exploitability.py` 2. **Informe Positivos/Negativos falsos**: Open GitHub números con ejemplos de CVE 3. **Ajustes para la preparación de proyectos**: Presentar relaciones públicas con racionalidad y ejemplos 4. **Compartir el contexto del agente**: Contribuir patrones de vulnerabilidad específicos del agente See [CONTRIBUTING.md](../../CONTRIBUTING.md) for detailed contribution guidelines. -... **Maintained by**: [Prompt Security](https://prompt.security) **Licencia**: AGPL-3.0 o later ** Última actualización**: 2026-03-01