
Erkennungs-, Mitigations- und Reverse-Engineering-Werkzeuge für CVE-2026-41940 (SessionScribe): die nicht authentifizierte Session-Forgery-Schwachstelle in cPanel/WHM, offengelegt am 28.04.2026. Aktiver Defense-in-Depth-Mitigation-Shim, ModSec-Regelpaket, Remote-Sonde, On-Host-IOC-Scanner und RE-Snapshot-Collector pro Ebene. GPL v2.
Kritischer nicht authentifizierter RCE in cPanel & WHM. Vier HTTP-Anfragen schmieden eine Root-Sitzung mittels CRLF-Injection in das Passwortfeld einer Preauth-Sitzung. Keine Authentifizierung, keine Voraussetzungen, jede unterstützte Stufe betroffen. Offengelegt am 28.04.2026 von Sina Kheirkhah / watchTowr Labs.
Schnellstart · ioc-scan · mitigate · remote-probe · Betroffene Builds · Prioritätsreihenfolge
[!IMPORTANT] Die Tiers 112, 114, 116, 120, 122, 128 haben keinen Hersteller-Patch. Jeder Build auf diesen Tiers ist verwundbar; ein Upgrade oder eine Migration ist die einzige dauerhafte Lösung. Bis dahin: Firewall TCP/2082, 2083, 2086, 2087, 2095, 2096 auf Management-CIDRs beschränken (
mitigate.sh --applyerledigt das) und die verbleibende Angriffsfläche mit dem ModSec-Regelpaket absichern.
Drei Einzeiler, in Operator-Prioritätsreihenfolge:```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
Exitcodes sind für die Flottenautomatisierung ausgelegt: `ioc-scan` beendet mit `4` bei
COMPROMISED, mit `1` bei VULNERABLE; `mitigate` beendet mit `0` sauber / `1` angewendet
/ `2` manuell / `3` Tool-Fehler; `remote-probe` beendet mit `2`, wenn irgendein
Ziel VULN ist.
---
## Tools
In der Reihenfolge der operativen Priorität. Jedes Artefakt erzeugt strukturierte Ausgabe
(`--json` / `--jsonl` / `--csv`) geschlüsselt nach `host`, `os`, `cpanel_version`,
`ts` für das Flotten-Roll-up.
| Tool | Rolle | Ausführungsort |
|---|---|---|
| **[`sessionscribe-ioc-scan.sh`](#sessionscribe-ioc-scansh---ioc-ladder--kill-chain)** | Erstklassige Triage. IOC ladder, Code-State- und Host-State-Bewertungen, Kill-Chain-Rekonstruktion, IR-Bundle. | auf dem cPanel-Host |
| **[`sessionscribe-mitigate.sh`](#sessionscribe-mitigatesh---mitigation-orchestrator)** | Das Zeitfenster schließen. Phasenweise Mitigation: Patch-Check, Firewall, proxysub, ModSec. | auf dem cPanel-Host |
| **[`sessionscribe-remote-probe.sh`](#sessionscribe-remote-probesh---non-destructive-fleet-probe)** | Begleitmaterial. Nicht-destruktive 4-stufige Prüfung → VULN/SAFE pro Host. | überall mit `curl` |
| [`modsec-sessionscribe.conf`](#supporting-collateral) | ModSec-Regelpaket, bereitgestellt von `mitigate`. | Apache-Frontend |
| [`sessionscribe-revsnap.sh`](#supporting-collateral) | RE-Snapshot-Sammler pro Stufe für Binärdiffing. | auf dem cPanel-Host, rund um `upcp` |
GPL v2. Alle Artefakte sind über die obigen Raw-URLs per `curl` abrufbar.
---
## `sessionscribe-ioc-scan.sh` - IOC ladder + kill-chain
**Führen Sie dies zuerst aus.** Standardmäßig nur Erkennung (schnell, flottenfreundlich);
fügen Sie `--full` hinzu, um die forensischen Phasen inline auszuführen (Defense-Timeline, Offense-Ingest,
Abgleich, Kill-Chain-Renderer, IR-Bundle).```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
Zwei Achsen berichten unabhängig voneinander. code_verdict (PATCHED /
VULNERABLE / INCONCLUSIVE) stammt aus Version, Perl-Quellcode-Mustern
und dem cpsrvd-Binär-Fingerabdruck. host_verdict (CLEAN /
SUSPICIOUS / COMPROMISED) ergibt sich aus der IOC-Leiter der
Sitzungsdateien, dem Zugriffsprotokoll-Scan und den Zerstörungs-Sonden der
Muster A–G. Ein gepatchter Host kann den Exit-Code 4 dennoch liefern,
wenn eine frühere Ausnutzung IOCs auf der Festplatte hinterlassen hat.
| Exit | Code-state | Host-state | Triage-Aktion |
|---|---|---|---|
| 0 | CLEAN/PATCHED | CLEAN | keine |
| 1 | VULNERABLE | (beliebig) | cpsrvd patchen |
| 2 | INCONCLUSIVE | (beliebig) | manuelle Prüfung des Code-Zustands (auch: Tool-Fehler) |
| 3 | (beliebig) | SUSPICIOUS | Sitzungs-/Zugriffsprotokolle prüfen |
| 4 | (beliebig) | COMPROMISED | vollständige IR; Bündeln + Hochladen |
Sitzungen, die mit nxesec_canary_<nonce> markiert sind (von der
Remote-Sonde hinterlassen), werden als PROBE_ARTIFACT eingestuft und
nicht auf COMPROMISED hochgestuft.
--full stellt jedes IOC den Verteidigungsaktivierungen gegenüber und
klassifiziert jedes als PRE-DEFENSE, POST-DEFENSE, POST-PARTIAL
oder UNDEFENDED und fasst dann mit Bewertung und Schlagzeile zur
Verteidigungsverzögerung zusammen.
PRE-DEFENSE = der Host war für den Exploit offen, als der Indikator eintraf;
POST-DEFENSE = Kollateralschaden oder Rauschen vor der Schadensbegrenzung.```
+-- 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
+------------------------------------------------------------------------