
Strumenti di rilevamento, mitigazione e reverse engineering per CVE-2026-41940 (SessionScribe): la vulnerabilità di falsificazione di sessione non autenticata di cPanel/WHM divulgata il 2026-04-28. Shim di mitigazione attiva di difesa in profondità, pacchetto di regole ModSec, sonda remota, scanner IOC sull'host e collettore di snapshot RE per livello. GPL v2.
RCE critico non autenticato in cPanel & WHM. Quattro richieste HTTP forgiano una sessione root tramite CRLF injection nel campo password di una sessione preauth. Nessuna autenticazione, nessuna precondizione, ogni tier supportato è affetto. Divulgato il 2026-04-28 da Sina Kheirkhah / watchTowr Labs.
Avvio rapido · ioc-scan · mitigate · remote-probe · Build interessati · Ordine di priorità
[!IMPORTANT] I tier 112, 114, 116, 120, 122, 128 non hanno patch del fornitore. Ogni build su quei tier è vulnerabile; l'aggiornamento o la migrazione è l'unica soluzione duratura. Fino ad allora: firewall TCP/2082, 2083, 2086, 2087, 2095, 2096 verso CIDR di gestione (
mitigate.sh --applyfa questo) e proteggere la superficie rimanente con il pacchetto di regole ModSec.
Tre oneliner, in ordine di priorità operativa:```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
I codici di uscita sono progettati per l'automazione della flotta: `ioc-scan` esce con `4` su COMPROMISED, `1` su VULNERABLE; `mitigate` esce con `0` pulito / `1` applicato / `2` manuale / `3` errore strumento; `remote-probe` esce con `2` se un qualsiasi target è VULN.
---
## Strumenti
In ordine di priorità operativa. Ogni artefatto emette output strutturato (`--json` / `--jsonl` / `--csv`) indicizzato su `host`, `os`, `cpanel_version`, `ts` per il roll-up della flotta.
| Strumento | Ruolo | Dove viene eseguito |
|---|---|---|
| **[`sessionscribe-ioc-scan.sh`](#sessionscribe-ioc-scansh---ioc-ladder--kill-chain)** | Triage di prima classe. Scala IOC, verdetti su stato del codice + stato dell'host, ricostruzione della kill-chain, bundle IR. | sul host cPanel |
| **[`sessionscribe-mitigate.sh`](#sessionscribe-mitigatesh---mitigation-orchestrator)** | Chiudi la finestra. Mitigazione a fasi: verifica patch, firewall, proxysub, ModSec. | sul host cPanel |
| **[`sessionscribe-remote-probe.sh`](#sessionscribe-remote-probesh---non-destructive-fleet-probe)** | Supporto collaterale. Sonda non distruttiva a 4 stadi → VULN/SAFE per host. | ovunque con `curl` |
| [`modsec-sessionscribe.conf`](#supporting-collateral) | Pacchetto di regole ModSec distribuito da `mitigate`. | Front-end Apache |
| [`sessionscribe-revsnap.sh`](#supporting-collateral) | Collettore di snapshot RE per livello per il binary diffing. | sul host cPanel, intorno a `upcp` |
GPL v2. Tutti gli artefatti pronti per `curl` tramite i URL raw sopra.
---
## `sessionscribe-ioc-scan.sh` - IOC ladder + kill-chain
**Esegui questo per primo.** Solo rilevamento di default (veloce, amichevole per la flotta); aggiungi `--full` per eseguire le fasi forensi inline (linea temporale della difesa, ingestione offensiva, riconciliazione, renderizzatore della kill-chain, bundle 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
Due assi riportano indipendentemente. code_verdict (PATCHED /
VULNERABLE / INCONCLUSIVE) proviene dalla versione, dai pattern di codice Perl e dall'impronta digitale binaria di cpsrvd. host_verdict (CLEAN /
SUSPICIOUS / COMPROMISED) proviene dalla scala IOC dei file di sessione, dalla scansione dei log di accesso e dalle sonde di distruzione dei Pattern A–G. Un host con patch può comunque uscire con codice 4 se uno sfruttamento precedente ha lasciato IOC sul disco.
| Uscita | Stato del codice | Stato dell'host | Azione di triage |
|---|---|---|---|
| 0 | CLEAN/PATCHED | CLEAN | nessuna |
| 1 | VULNERABLE | (qualsiasi) | applicare patch a cpsrvd |
| 2 | INCONCLUSIVE | (qualsiasi) | revisione manuale dello stato del codice (anche: errore dello strumento) |
| 3 | (qualsiasi) | SUSPICIOUS | esaminare i log di sessione/accesso |
| 4 | (qualsiasi) | COMPROMISED | IR completo; raggruppa + carica |
Le sessioni taggate con nxesec_canary_<nonce> (lasciate dalla sonda remota) vengono classificate come PROBE_ARTIFACT e non vengono portate a COMPROMISED.
--full confronta ogni IOC con le attivazioni difensive e classifica ciascuno come PRE-DEFENSE, POST-DEFENSE, POST-PARTIAL o UNDEFENDED, poi riassume con verdetto + headline del ritardo difensivo. PRE-DEFENSE = l'host era aperto allo sfruttamento quando l'indicatore è arrivato; POST-DEFENSE = rumore collaterale o pre-mitigazione.```
+-- 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
+------------------------------------------------------------------------