
Herramientas de detección, mitigación e ingeniería inversa para CVE-2026-41940 (SessionScribe): la vulnerabilidad de falsificación de sesión no autenticada en cPanel/WHM divulgada el 2026-04-28. Shim de mitigación activa de defensa en profundidad, paquete de reglas ModSec, sonda remota, escáner de IOC en el host y recopilador de instantáneas RE por nivel. GPL v2.
RCE crítico no autenticado en cPanel & WHM. Cuatro solicitudes HTTP forjan una sesión root mediante inyección CRLF en el campo de contraseña de una sesión de preautenticación. Sin autenticación, sin precondiciones, todos los niveles compatibles afectados. Divulgado el 2026-04-28 por Sina Kheirkhah / watchTowr Labs.
Inicio rápido · ioc-scan · mitigate · remote-probe · Compilaciones afectadas · Orden de prioridad
[!IMPORTANT] Los niveles 112, 114, 116, 120, 122, 128 no tienen parche del proveedor. Toda compilación en esos niveles es vulnerable; la actualización o la migración es la única solución duradera. Hasta entonces: restrinja por firewall TCP/2082, 2083, 2086, 2087, 2095, 2096 a las CIDR de administración (
mitigate.sh --applyhace esto) y proteja la superficie restante con el paquete de reglas ModSec.
Tres comandos de una línea, en orden de prioridad del operador:```bash
curl -fsSL https://raw.githubusercontent.com/rfxn/cpanel-sessionscribe/main/sessionscribe-ioc-scan.sh | bash
curl -fsSL https://raw.githubusercontent.com/rfxn/cpanel-sessionscribe/main/sessionscribe-mitigate.sh | bash -s -- --apply
curl -fsSL https://raw.githubusercontent.com/rfxn/cpanel-sessionscribe/main/sessionscribe-remote-probe.sh | bash -s -- --target HOST
Los códigos de salida están diseñados para la automatización de flotas: `ioc-scan` sale con `4` en
COMPROMISED, `1` en VULNERABLE; `mitigate` sale con `0` limpio / `1` aplicado
/ `2` manual / `3` error de herramienta; `remote-probe` sale con `2` si algún objetivo está
VULN.
---
## Herramientas
En orden de prioridad operativa. Cada artefacto emite salida estructurada
(`--json` / `--jsonl` / `--csv`) con claves `host`, `os`, `cpanel_version`,
`ts` para la consolidación de flota.
| Herramienta | Rol | Dónde se ejecuta |
|---|---|---|
| **[`sessionscribe-ioc-scan.sh`](#sessionscribe-ioc-scansh---ioc-ladder--kill-chain)** | Triage de primera clase. Escalera de IOC, veredictos de estado de código + estado de host, reconstrucción de la cadena de ataque, paquete de IR. | en el host de cPanel |
| **[`sessionscribe-mitigate.sh`](#sessionscribe-mitigatesh---mitigation-orchestrator)** | Cerrar la ventana. Mitigación por fases: comprobación de parches, firewall, proxysub, ModSec. | en el host de cPanel |
| **[`sessionscribe-remote-probe.sh`](#sessionscribe-remote-probesh---non-destructive-fleet-probe)** | Colateral de soporte. Sonda no destructiva de 4 fases → VULN/SAFE por host. | en cualquier lugar con `curl` |
| [`modsec-sessionscribe.conf`](#supporting-collateral) | Paquete de reglas ModSec desplegado por `mitigate`. | front-end de Apache |
| [`sessionscribe-revsnap.sh`](#supporting-collateral) | Recopilador de instantáneas RE por nivel para comparación de binarios. | en el host de cPanel, alrededor de `upcp` |
GPL v2. Todos los artefactos están listos para `curl` mediante las URLs raw anteriores.
---
## `sessionscribe-ioc-scan.sh` - Escalera de IOC + cadena de ataque
**Ejecútalo primero.** Solo detección por defecto (rápido y apto para flotas);
añade `--full` para ejecutar las fases forenses en línea (línea de tiempo de defensa, ingesta
de ofensiva, conciliación, renderizador de cadena de ataque, paquete de IR).```bash
# fast triage (detection only)
curl -fsSL https://raw.githubusercontent.com/rfxn/cpanel-sessionscribe/main/sessionscribe-ioc-scan.sh | bash
# full kill-chain reconstruction inline
curl -fsSL https://raw.githubusercontent.com/rfxn/cpanel-sessionscribe/main/sessionscribe-ioc-scan.sh | bash -s -- --full
# full + ship IR bundle to intake
curl -fsSL https://raw.githubusercontent.com/rfxn/cpanel-sessionscribe/main/sessionscribe-ioc-scan.sh | bash -s -- --full --upload
# JSONL for SIEM ingest
curl -fsSL https://raw.githubusercontent.com/rfxn/cpanel-sessionscribe/main/sessionscribe-ioc-scan.sh | bash -s -- --jsonl --quiet > host.jsonl
# host IOCs only - periodic post-patch sweep, last 7 days
curl -fsSL https://raw.githubusercontent.com/rfxn/cpanel-sessionscribe/main/sessionscribe-ioc-scan.sh | bash -s -- --ioc-only --since 7
# replay forensic phases against a saved envelope (no re-scan)
curl -fsSL https://raw.githubusercontent.com/rfxn/cpanel-sessionscribe/main/sessionscribe-ioc-scan.sh | bash -s -- --replay /var/cpanel/sessionscribe-ioc/<run_id>.json
Los dos ejes informan de forma independiente. code_verdict (PATCHED /
VULNERABLE / INCONCLUSIVE) proviene de la versión, los patrones de código fuente Perl
y la huella binaria de cpsrvd. host_verdict (CLEAN /
SUSPICIOUS / COMPROMISED) proviene de la escalera de IOCs del archivo de sesión,
el análisis de registros de acceso y las sondas de destrucción de los Patrones A–G. Un host parcheado
puede seguir saliendo con 4 si una explotación previa dejó IOCs en el disco.
| Salida | Estado del código | Estado del host | Acción de triaje |
|---|---|---|---|
| 0 | CLEAN/PATCHED | CLEAN | ninguna |
| 1 | VULNERABLE | (cualquiera) | parchear cpsrvd |
| 2 | INCONCLUSIVE | (cualquiera) | revisión manual del estado del código (también: error de herramienta) |
| 3 | (cualquiera) | SUSPICIOUS | revisar registros de sesión/acceso |
| 4 | (cualquiera) | COMPROMISED | IR completo; empaquetar + subir |
Las sesiones etiquetadas con nxesec_canary_<nonce> (dejadas por la sonda remota)
se agrupan como PROBE_ARTIFACT y no escalan a COMPROMISED.
--full recopila cada IOC contra las activaciones de defensa y clasifica
cada uno como PRE-DEFENSE, POST-DEFENSE, POST-PARTIAL o
UNDEFENDED, y luego resume con un titular de veredicto + retraso de defensa.
PRE-DEFENSE = el host estaba abierto al exploit cuando el indicador aterrizó;
POST-DEFENSE = ruido colateral o previo a la mitigación.```
+-- CVE-2026-41940 / IC-5790 --------------------------------------------
| host cpanel.example.com ()
| cpanel unknown os unknown
| verdict COMPROMISED score 315 ioc-scan v2.5.0
| defenses patch x absent modsec + up csf + clean mitigate + ran
+------------------------------------------------------------------------