
Reglas de detección para la filtración de código fuente de Claude Code : 16 reglas Sigma, Splunk, Elastic, YARA. Validadas en laboratorio en GOAD Light DC02.
Reglas de detección Sigma, Splunk, Elastic y YARA para la filtración del código fuente de Claude Code (31 de marzo de 2026) y el ataque concurrente a la cadena de suministro de npm.
El 31 de marzo de 2026, Anthropic envió accidentalmente un source map mal configurado en @anthropic-ai/[email protected], exponiendo ~60 MB de código TypeScript interno (512k líneas, 1906 archivos). Ese mismo día, el paquete npm axios fue comprometido en las versiones 1.14.1 y 0.30.4: se incrustó un RAT a través de una dependencia llamada plain-crypto-js. Ambos eventos ocurrieron con horas de diferencia.
Construí este repositorio para responder una pregunta simple: sabiendo ahora lo que sabemos sobre los internos de Claude Code, ¿qué debería buscar un SOC?
El código fuente reveló varias características no documentadas y los detalles exactos del motor de permisos —cosas que antes eran vectores de ataque teóricos y ahora son concretos.
Lógica de orquestación MCP : La lista exacta de comandos bash preaprobados y el modelo de confianza para contenido externo ahora son públicos. Los atacantes pueden crear repositorios o documentos que eludan la validación de Claude Code precisamente porque las reglas de validación ya no son secretas.
KAIROS : Un modo daemon mencionado más de 150 veces en el código filtrado. Claude Code puede ejecutarse en segundo plano sin interacción directa del usuario. Esto no aparecía en ninguna documentación.
autoDream : Un proceso de consolidación de memoria que se ejecuta durante periodos inactivos y escribe en MEMORY.md. Envenenar ese archivo puede influir en el comportamiento del agente entre sesiones.
Modo encubierto (Undercover Mode) : Claude Code puede contribuir a repositorios públicos sin revelar la participación de IA. El prompt de sistema filtrado indica explícitamente al modelo que no exponga nombres en clave internos (Capybara, Tengu, Fennec, Numbat) en los mensajes de commit.
CVE-2025-54794 (CVSS 7.7) : Bypass de restricción de ruta, permitiendo a Claude Code acceder a archivos fuera de su sandbox CWD. Corregido en v0.2.111.
CVE-2025-54795 (CVSS 8.7) : Inyección de comandos mediante bypass de validación bash. Corregido en v1.0.20.
Referencias:
16 reglas Sigma (13 amenazas, 3 divididas entre categorías de logsource), todas validadas contra pySigma. Cada regla se asigna directamente a un hallazgo específico de la filtración o a una CVE.
Las reglas Sigma están en rules/sigma/. Consultas SPL en rules/splunk/, EQL en rules/elastic/, YARA en rules/yara/.
Existen dos reglas adicionales fuera del paquete Sigma:
.claude/settings.local.json con flags peligrosos (dangerouslySkipPermissions, autoApprove: true). No están en Sigma porque la coincidencia en el campo Contents para contenido JSON no es compatible de forma fiable en todas las versiones de Sysmon.Ejecuté la simulación en GOAD-Light-DC02 (Windows Server 2019, Sysmon64 en ejecución).
El patrón de CVE-2025-54795: un proceso lanza cmd.exe como hijo para ejecutar comandos arbitrarios. En la simulación, PowerShell hace el papel de claude-code, lanzando cmd.exe que ejecuta whoami.
Sysmon capturó la cadena completa de procesos:
powershell.exe (PID 3856) → cmd.exe /c whoami (PID 3760) → whoami.exe (PID 4428)

whoami.exe — Usuario: NORTH\robb.stark — SHA256: 1D5491E3C468EE4B4EF6EDFF4BBC7D06EE83180F6F0B1576763EA2EFE049493A

cmd.exe — ParentImage: powershell.exe — CommandLine: cmd.exe /c whoami > C:\claude-lab\sc008.txt — CurrentDirectory: C:\claude-lab\sim-repo\

3 registros reales de Sysmon EventID 1 con campos completos. JSON sin procesar en tests/real-logs/SC-008.json, EVTX completo en tests/real-logs/sysmon_lab.evtx.
Limitaciones honestas: SC-005 (EventID 11 no capturado en este DC — filtrado de FileCreate en la configuración de Sysmon), SC-006 (git no instalado en DC02), reglas de red SC-009/SC-010 no probadas contra registros de proxy reales. Detalles completos en LIMITATIONS.md.
Verifica si descargaste el axios comprometido durante la ventana de ataque (31 de marzo de 2026, 00:21–03:29 UTC):
chmod +x scripts/check_lockfile.sh
./scripts/check_lockfile.sh
python3 scripts/check_axios_rat.py --path ./
Despliega las reglas Sigma:
pip install sigma-cli
sigma convert -t splunk rules/sigma/*.yml
sigma convert -t eql rules/sigma/*.yml
Ejecuta el conjunto de pruebas sintéticas:
python3 tests/validate_rules.py --verbose
Reproduce el laboratorio en una máquina Windows con Sysmon:
Set-ExecutionPolicy Bypass -Scope Process -Force
.\scripts\claude_leak_lab_dc02.ps1
rules/
sigma/ 16 reglas Sigma (SC-001 a SC-013, con SC-002/SC-004/SC-013 divididas por logsource)
splunk/ Consultas SPL
elastic/ Reglas EQL
yara/ Reglas YARA para detección de archivos/binarios
tests/
events/ Eventos JSON sintéticos por regla (casos TP + FP)
sim-logs/ Registros de ejecución de simulaciones en contenedores Linux
real-logs/ Registros Sysmon reales desde DC02 (EventID 1/3/11)
scripts/
check_lockfile.sh Auditar lockfiles de npm en busca de versiones comprometidas
check_axios_rat.py Buscar marcadores RAT en node_modules
claude_leak_lab_dc02.ps1 Reproducir laboratorio en Windows con Sysmon
docs/
threat_model.md Cadenas de eliminación
mitre_mapping.md Cobertura ATT&CK
ioc_list.md IOCs
lab_validation.md Qué se probó y cómo
assets/screenshots/ Capturas Sysmon reales desde DC02
LIMITATIONS.md Lo que esto cubre y no cubre
Lista completa con patrones de red y CVEs en docs/ioc_list.md.
Jean Koumou - Equipo Azul
Licencia MIT.
| ID | Qué detecta | Gravedad |
|---|
| SC-001 | [email protected] o plain-crypto-js en instalaciones npm | Crítica |
| SC-002a | Conexiones salientes de claude-code a hosts no pertenecientes a Anthropic | Alta |
| SC-002b | Procesos peligrosos (shell, curl, python) lanzados por claude-code | Alta |
| SC-003 | Archivos CLAUDE.md que contienen patrones de inyección de prompt del sistema | Media |
| SC-004a | claude-code lanzado con el flag --daemon o argumentos KAIROS/autoDream | Alta |
| SC-004b | Archivos MEMORY.md o .claude/ creados fuera de los directorios del proyecto | Media |
| SC-005 | MEMORY.md escrito con contenido de escalada de privilegios (siempre permitir, saltar confirmación) | Alta |
| SC-006 | Commits de Git que contienen nombres en clave internos de Anthropic o autoría de IA no revelada | Media |
| SC-007 | claude-code accediendo a archivos sensibles fuera de CWD (CVE-2025-54794) | Crítica |
| SC-008 | Comandos destructivos o reverse shell lanzados desde claude-code (CVE-2025-54795) | Crítica |
| SC-009 | Payloads XSS en solicitudes a subdominios de claude.ai (ShadowPrompt) | Alta |
| SC-010 | Open redirect de claude.com encadenado con inyección de prompt ?q= (Claudy Day) | Alta |
| SC-011 | curl lanzado por claude/cowork subiendo archivos a api.anthropic.com | Alta |
| SC-012 | Herramientas de reconocimiento/explotación (nmap, mimikatz, hydra) lanzadas desde claude-code | Crítica |
| SC-013a | eval de Node.js + volcado de process.env (indicadores de ejecución del RAT axios) | Crítica |
| SC-013b | Beacon C2 de Node.js hacia puertos no estándar (red del RAT axios) | Crítica |
| Tipo | Valor |
|---|
| Paquete npm | [email protected] |
| Paquete npm | [email protected] |
| Dependencia npm | plain-crypto-js (cualquier versión) |
| Paquete npm | @anthropic-ai/[email protected] |
| Ventana de tiempo | 2026-03-31 00:21–03:29 UTC |
| Nombres en clave internos | Capybara, Fennec, Tengu, Numbat |
| Patrón de proceso | claude-code --daemon / kairos |