mirror of
https://github.com/prompt-security/clawsec.git
synced 2026-06-13 05:28:02 +03:00
b37162a33d
* feat(i18n): add multilingual wiki scaffolding, language switcher, and translation QA pipeline * docs(readme): adopt picoclaw-style multilingual link bar * fix(i18n): repair localized index links and tighten partial-pair QA * ci(i18n): fail on broken markdown links in README/wiki * ci(i18n): add changed-files mode for markdown link checks * i18n(de): use local Argos MT to fill untranslated German sections * i18n(es,fr): fill untranslated sections via local Argos workflow * i18n(ja): fill untranslated sections with scoped local Argos pass * i18n(ko): fill untranslated sections with scoped local Argos pass * fix(i18n): address review feedback --------- Co-authored-by: David Abutbul <David.a@prompt.security>
426 lines
16 KiB
Markdown
426 lines
16 KiB
Markdown
<!-- AUTO-GENERATED TRANSLATION SCAFFOLD (es)
|
|
Source: ../exploitability-scoring.md
|
|
Review status: draft
|
|
-->
|
|
|
|
# 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
|