HTTP2Shell (CVE-2026-111497): vulnerabilitatea critică din Brotli și cum te protejezi
O vulnerabilitate critică în decodorul Brotli afectează Node.js, Python, Bun, Envoy și .NET. Ce înseamnă HTTP2Shell, cine e expus, cum verifici și ce actualizezi.

Ce este HTTP2Shell
Pe 21 octombrie 2026, proiectul Node.js a publicat actualizări de securitate pentru liniile 22, 24 și 26. Una dintre problemele reparate, CVE-2026-111497, nu ține de Node.js în sine, ci de Brotli, algoritmul de comprimare creat de Google și folosit pe scară largă pe web (codificarea br) (BleepingComputer).
Vulnerabilitatea a primit mai multe nume: HTTP2Shell, Node2Shell și Broccoli2Shell. Este aceeași problemă. Numele „HTTP2Shell” e înșelător, pentru că nu are legătură cu protocolul HTTP/2: orice program care decomprimă date Brotli primite din surse nesigure poate fi afectat (JFrog).
Problema a fost descoperită de Khai Tran și Sylvie Mayer (OpenAI Codex Security). Echipa Imperva a demonstrat că poate fi folosită pentru executare de cod pe o versiune vulnerabilă de Node.js (Wiz).
Cum funcționează vulnerabilitatea
Datele Brotli sunt împărțite în blocuri, iar decodorul trece de la un bloc la altul după instrucțiuni din fluxul comprimat. Când o astfel de instrucțiune e invalidă, decodorul vulnerabil nu o tratează ca eroare. O interpretează ca pe o cerere de mai multe date și continuă să scrie octeți într-un buffer de doar 8 octeți, dincolo de limita lui (BleepingComputer, JFrog).
Acest tip de eroare se numește scriere în afara memoriei alocate (out-of-bounds write). Consecințele posibile, în ordinea gravității:
- oprirea procesului: aplicația cade, iar site-ul sau serviciul devine indisponibil;
- scurgeri de memorie: atacatorul poate citi date din memoria procesului;
- executare de cod la distanță: atacatorul rulează propriile comenzi, cu drepturile aplicației.
Atacatorul nu are nevoie de cont sau de parolă. Îi ajunge să facă aplicația să decomprime datele lui.
Cât de gravă este
Scorurile diferă de la o sursă la alta. Autoritatea care a emis CVE-ul o evaluează la 9,2 din 10 (critic) în CVSS 4.0. Node.js o consideră de severitate ridicată, iar Red Hat o consideră importantă.
Ce știm sigur la 26 octombrie 2026:
- există cod public de demonstrație;
- executarea de cod a fost demonstrată pe Node.js nereparat, dar rezultatele variază de la un sistem la altul;
- nu s-au raportat încă atacuri reale, iar vulnerabilitatea nu este în catalogul CISA al vulnerabilităților exploatate activ.
Cu cod public disponibil, atacurile reale apar de obicei repede. Tratează actualizarea ca pe o urgență.
Cine este afectat
Biblioteca Brotli
Sunt vulnerabile versiunile 1.0.3 până la 1.2.0. Reparația este în 1.0.10, 1.1.1 și 1.2.1. Distribuțiile Linux pot aplica reparația și fără să schimbe numărul versiunii, așa că verifică anunțul de securitate al distribuției tale, nu doar numărul.
Programe și limbaje afectate
| Program | Versiuni reparate |
|---|---|
| Node.js | 22.23.4, 24.22.1, 26.12.1 (liniile 18, 20, 23 și 25 nu mai primesc reparații) |
| Bun | 1.4.4 |
| Python: pachetele Brotli și brotlicffi | Brotli 1.2.1, brotlicffi 1.2.1.0 |
| Envoy Proxy | 1.36.12, 1.37.8, 1.38.6, 1.39.3, 1.40.0 |
| Istio | 1.29.9, 1.30.6, 1.31.2 |
| Go: andybalholm/brotli | v1.2.7 |
| Ruby: gem-ul brotli | 0.9.1 |
| PHP: extensia brotli | 0.21.1 |
| .NET | actualizările Microsoft din 25 octombrie 2026 |
Sursa versiunilor: Wiz și Phoenix Security. PHP a refăcut și pachetele oficiale pentru Windows ale versiunilor 8.2–8.5, pentru că includ biblioteca Brotli.
Alte programe cu propria copie de Brotli
Multe programe includ o copie proprie a decodorului. Acestea nu se repară când actualizezi biblioteca sistemului, ci doar când apare o versiune nouă a programului. Printre cele semnalate: ClickHouse, DuckDB, Apache Arrow (pyarrow), 7-Zip-zstd, p7zip, FFmpeg prin libjxl (imagini JPEG XL) și instrumentele pentru fonturi WOFF2. La unele dintre ele reparația nu apăruse încă într-o versiune oficială la 25 octombrie (Phoenix Security, JFrog).
Cum poate ajunge un atac la tine
- Cereri primite de server: un atacator trimite o cerere cu Content-Encoding: br, iar aplicația decomprimă automat corpul cererii (de exemplu prin middleware în Express sau ASP.NET Core).
- Răspunsuri descărcate de aplicație: aplicația ta cere o pagină sau un API de pe alt site, iar serverul acela răspunde cu date Brotli otrăvite. fetch() din Node.js și clienții Python requests, HTTPX, aiohttp și urllib3 decomprimă automat răspunsurile Brotli când suportul e instalat.
- Fișiere încărcate: imagini JPEG XL, fișiere Parquet, arhive sau fonturi WOFF2 care conțin date Brotli.
Al doilea scenariu e cel mai ușor de ratat: chiar dacă serverul tău nu primește niciodată date Brotli, o aplicație care descarcă resurse externe este expusă.
Verifică dacă ești afectat
Versiunea de Node.js (pe server, în fiecare container și în fiecare aplicație din „Setup Node.js App”, dacă folosești cPanel):
node -v
Pachetele Python (în fiecare mediu virtual):
pip show brotli brotlicffi
Biblioteca de sistem:
# Debian / Ubuntu
dpkg -l | grep -i brotli
# AlmaLinux / Rocky / CloudLinux / RHEL
rpm -qa | grep -i brotli
Procesele care au încărcată biblioteca de sistem și trebuie repornite după actualizare:
sudo grep -l brotlidec /proc/*/maps 2>/dev/null
Bun:
bun --version
Imaginile Docker poartă propria versiune de Node.js. Verifică fiecare imagine, de exemplu cu docker run --rm imaginea-ta node -v.
Cum te protejezi
1. Actualizează
- Node.js: treci pe 22.23.4, 24.22.1 sau 26.12.1 ori mai nou. Dacă folosești Node.js 18 sau 20, mută aplicația pe 22 sau 24, pentru că acele linii nu mai primesc reparații.
- Python: pip install -U brotli brotlicffi în fiecare mediu care le are.
- Sistemul de operare: instalează actualizările de securitate (apt upgrade sau dnf upgrade) imediat ce distribuția publică pachetul reparat.
- Bun, Envoy, Istio, .NET: versiunile din tabelul de mai sus.
2. Repornește și reconstruiește
Un proces pornit înainte de actualizare rulează în continuare codul vechi. Repornește aplicațiile Node.js (de exemplu cu pm2 reload all sau din cPanel), serviciile Python și orice proces găsit cu comanda de mai sus. Reconstruiește imaginile Docker pe o imagine de bază reparată și verifică după pornire că rulează versiunea nouă.
3. Măsuri temporare, până poți actualiza
Dacă nu poți actualiza imediat, blochează cererile care sosesc comprimate cu Brotli. Browserele nu trimit cereri comprimate cu Brotli, deci vizitatorii obișnuiți nu sunt afectați. Verifică totuși dacă ai integrări (API-uri, aplicații mobile) care trimit astfel de cereri.
În nginx, în blocul server:
if ($http_content_encoding ~* "br") {
return 415;
}
În Apache (.htaccess):
RewriteEngine On
RewriteCond %{HTTP:Content-Encoding} br [NC]
RewriteRule ^ - [R=415,L]
Cloudflare a publicat pe 25 octombrie o regulă WAF de urgență pentru această vulnerabilitate, iar Azure, Imperva și Vercel au reguli similare. În Python poți dezinstala temporar pachetele brotli și brotlicffi; fără ele, clienții HTTP nu mai decomprimă date Brotli.
Atenție: aceste măsuri protejează doar datele care intră în server. Nu protejează aplicațiile care descarcă resurse de pe alte site-uri. Singura soluție completă este actualizarea.
4. Urmărește semnele unui atac
- opriri neașteptate ale aplicațiilor Node.js sau Python (erori de tip segmentation fault);
- cereri cu Content-Encoding: br în jurnalele serverului web;
- procese noi sau conexiuni ieșite din comun pornite de utilizatorul aplicației.
Recomandări pe tipuri de utilizatori
- Site WordPress sau site de prezentare pe găzduire partajată: nu ai nimic de făcut. Bibliotecile de sistem le actualizează furnizorul de găzduire. Actualizează în continuare WordPress, tema și pluginurile.
- Aplicații Node.js în cPanel: în „Setup Node.js App” alege Node.js 22 sau mai nou și repornește aplicația.
- VPS sau server dedicat: tu administrezi sistemul. Rulează verificările de mai sus, actualizează, repornește și reconstruiește containerele.
- Dezvoltatori: actualizează Node.js și local și în CI, reconstruiește imaginile și verifică dependențele care includ propria copie de Brotli.
- Utilizatori obișnuiți: actualizează browserul și aplicațiile. Chrome și Firefox includ deja reparația.
Ce am făcut la HostON
Pe serverele HostON, Node.js rulează deja pe versiunea reparată 22.23.4. În selectorul Node.js din cPanel, versiunea 22 este tot 22.23.4; versiunile 18 și 20 din selector nu mai primesc reparații, așa că îți recomandăm să muți aplicațiile pe 22. Pachetele de sistem le actualizăm imediat ce distribuțiile publică reparația. Clienții cu servere VPS își administrează singuri sistemul și trebuie să aplice pașii de mai sus. Dacă ai nevoie de ajutor, deschide un tichet din contul de client sau scrie-ne din pagina de Contact.
Cronologie
- 21 octombrie 2026: apar Brotli 1.0.10, 1.1.1 și 1.2.1, plus Node.js 22.23.4, 24.22.1 și 26.12.1.
- 22–23 octombrie: pachetele Python Brotli și brotlicffi sunt reparate; apare cod public de demonstrație.
- 24 octombrie: reparații pentru gem-ul Ruby și extensia PHP brotli.
- 25 octombrie: actualizări Microsoft pentru .NET și regula WAF de urgență Cloudflare.
- 26 octombrie: PHP refăcuse deja pachetele pentru Windows; nu s-au raportat atacuri reale.
Surse: BleepingComputer, Wiz, JFrog Security Research, Phoenix Security, Ubuntu Security, The Hacker News.
Prețurile actuale sunt cele de pe paginile de produs, citite zilnic din contul de client. Valorile din articol sunt orientative, la data publicării.
Întrebări frecvente
HTTP2Shell (CVE-2026-111497), numită și Node2Shell sau Broccoli2Shell, este o vulnerabilitate de tip scriere în afara memoriei în decodorul Brotli de la Google. Date comprimate special pot face decodorul să scrie dincolo de un buffer, ceea ce poate duce la oprirea procesului, scurgeri de memorie sau, în anumite condiții, executarea de cod la distanță.
Nu. Numele e înșelător: problema e în decodorul Brotli, nu în protocolul HTTP/2. Orice aplicație care decomprimă date Brotli venite din surse nesigure poate fi afectată, indiferent de protocol.
Node.js 22.23.4, 24.22.1 sau 26.12.1 ori mai nouă, pe linia respectivă. Versiunile 18, 20, 23 și 25 nu mai primesc actualizări și nu vor primi reparația; trebuie mutate pe o linie suportată.
WordPress nu folosește direct decodorul Brotli. Pe servere, bibliotecile de sistem care decomprimă Brotli se actualizează din pachetele distribuției. Pe găzduirea partajată HostON aceste actualizări le facem noi, deci nu ai nimic de făcut pentru un site WordPress obișnuit.
Până pe 26 octombrie 2026 nu s-au raportat atacuri reale, iar vulnerabilitatea nu era în catalogul CISA al vulnerabilităților exploatate activ. Există însă cod public de demonstrație, iar cercetătorii Imperva au arătat executare de cod pe o versiune vulnerabilă de Node.js, deci actualizarea trebuie făcută acum.
Nu. Blocarea cererilor cu Content-Encoding: br protejează doar datele care intră în server. Dacă aplicația ta descarcă resurse de pe alte site-uri (de exemplu cu fetch), un server rău intenționat îi poate trimite un răspuns Brotli. Singura protecție completă este actualizarea.
Da. Un proces pornit înainte de actualizare folosește în continuare codul vechi din memorie. Repornește aplicațiile Node.js, Python și serviciile care folosesc biblioteca Brotli, și reconstruiește imaginile Docker.
Articole înrudite



