Awarely Monitor
AwarelyMonitor
Toate articolele
Vulnerabilități exploatate8 min

Brotli CVE-2026-111497: o bibliotecă, mai multe runtime-uri

Pe 27 octombrie 2026, CISA a adăugat în KEV CVE-2026-111497, o scriere în afara limitelor în decodorul Brotli, cu termen federal 10 noiembrie. Defectul este în biblioteca Google Brotli (corecții în 1.0.10, 1.1.1 și 1.2.1) și ajunge în aplicații prin runtime-urile care o includ: Node.js, .NET și PHP pe Windows au publicat deja corecții. Cercetătorii l-au numit „Node2Shell”, după primul runtime pentru care a fost demonstrată execuția de cod.

Ce îl face o problemă de inventar, nu doar de patch: biblioteca nu apare în lista de dependențe a aplicației tale. Este compilată în binarul Node.js, în runtime-ul .NET sau în build-ul PHP, deci un scanner de pachete npm sau NuGet poate să nu o vadă. Mai jos separăm ce confirmă producătorii de ce raportează cercetătorii și ce rămâne contradictoriu.

Ce este confirmat

CISA a inclus CVE-2026-111497 în KEV pe 27 octombrie, descriindu-l ca o valoare de returnare necontrolată în Google Brotli, prin care un atacator la distanță, neautentificat, poate corupe memoria decodorului, extrage conținut din memorie, provoca refuz de serviciu sau, potențial, executa cod cu un flux Brotli special construit. Termenul este 10 noiembrie; am verificat direct în feed-ul KEV. Notele de lansare Brotli v1.2.1 raportează o corecție de securitate pentru o scriere în afara limitelor care permite execuție de cod la distanță.

Node.js a descris, în lansarea de securitate din 21 octombrie, cum o intrare malformată poate scrie dincolo de un buffer intern de opt octeți: un bloc invalid era tratat ca nevoie temporară de mai multe date, nu ca eroare permanentă de format, iar decodorul continua să adauge octeți. Impactul, scris de Node.js, este coruperea memoriei procesului, cu prăbușire, divulgare de memorie sau execuție de cod, pentru aplicații care decomprimă cu node:zlib date Brotli controlate de atacator. Node.js îl clasifică High; Google, ca CNA, îl notează 9,2 pe CVSS 4.0, potrivit HeroDevs.

Ce runtime-uri au corecții

  • ▸Brotli upstream: 1.0.10, 1.1.1 și 1.2.1 (afectate sunt 1.0.3–1.0.9, 1.1.0 și 1.2.0, potrivit HKCERT și HeroDevs).
  • ▸Node.js: 22.23.4, 24.22.1 și 26.12.1, lansate pe 21 octombrie; liniile 22.x, 24.x și 26.x sunt afectate. Liniile ieșite din suport sunt, conform Node.js, mereu afectate la o lansare de securitate și nu primesc corecții.
  • ▸.NET: 8.0.33, 9.0.22 și 10.0.14, plus .NET 11 RC3, în actualizările din afara ciclului din 25 octombrie. Sunt expuse aplicațiile care procesează date Brotli prin decomprimarea cererilor în ASP.NET Core, decomprimarea automată a răspunsurilor în HttpClient sau API-urile Brotli din System.IO.Compression; cele două decomprimări nu sunt activate implicit, iar .NET Framework nu este afectat. Aplicațiile autonome trebuie reconstruite.
  • ▸PHP pe Windows: construcții actualizate 8.5.12-1, 8.4.27-1, 8.3.36-1 și 8.2.35-1, publicate pe 26 octombrie. Anunțul spune că decodorul vulnerabil este accesibil prin extensia cURL cu decomprimare automată a răspunsurilor, dezactivată implicit în cURL, dar activabilă de aplicații și biblioteci.
  • ▸Alți furnizori: HKCERT listează un aviz Palo Alto Networks pentru același CVE, pe care nu l-am citit.

Exploatare și surse care diferă

CISA l-a pus în KEV pe baza dovezilor de exploatare activă. Help Net Security (27 octombrie) citează ELLIO, care spune că senzorii săi au înregistrat trafic de exploatare, de la o sursă pe care firma o leagă de exploatări PHP2Shell și de scanări ale unor VPN-uri și clustere Kubernetes. The Hacker News scria pe 22–23 octombrie că nu exista exploatare în lume, iar Imperva a demonstrat execuție de cod pe imaginea oficială Node.js 24.22.0 Linux arm64, fără build special, dar nu la fiecare încercare. Imperva nu a testat alte arhitecturi, nici liniile 22.x și 26.x; versiunea 24.22.1 a respins aceeași intrare.

Primul exploit public a obținut execuție de cod doar pe un build slăbit intenționat; pe un build standard autorul său a raportat o prăbușire și o citire limitată de memorie. Nu am găsit o a doua sursă independentă pentru traficul ELLIO și nu reproduc adresa IP. HeroDevs, care vinde suport extins, scrie că liniile Node.js ieșite din suport (25.x până la 12.x) conțin încă logica vulnerabilă; este o analiză a codului făcută de ei și are interes comercial, nu o declarație Node.js.

Help Net Security notează și că remedierea a fost comisă în depozitul Brotli încă din 27 februarie 2026, fără lansare sau aviz, deci a stat vizibilă public aproximativ opt luni. Nu am putut verifica acest detaliu în depozit.

Cum afli dacă ești expus

  • ▸Inventariază runtime-urile, nu doar pachetele: versiunea Node.js, .NET și PHP pe fiecare gazdă și în fiecare imagine de container. Include binare care încorporează un runtime Node (aplicații autonome), pe care inventarele de pachete pot să le rateze, după Imperva.
  • ▸Pentru fiecare aplicație, întreabă dacă acceptă date Brotli controlate de un atacator: corpuri de cerere decomprimate (Express 5 cu body-parser 2.x a fost reprodus de Imperva), răspunsuri aduse prin fetch() și decomprimate automat, sau API-uri node:zlib, ASP.NET Core ori HttpClient configurate cu decomprimare.
  • ▸Pe PHP/Windows, verifică dacă codul sau bibliotecile HTTP activează decomprimarea automată în extensia cURL.
  • ▸Instalarea unui pachet npm numit „brotli” nu corectează defectul, potrivit HeroDevs: biblioteca vulnerabilă este cea din runtime.
  • ▸Ecosistemul este mai larg decât cele trei runtime-uri: Tenable, citat de Help Net Security, listează Bun, Envoy Proxy, Istio, clienți HTTP Python, FFmpeg, Apache Arrow și ClickHouse ca posibil expuse când decomprimă date controlate de atacator. O căutare a arătat și clienți Python care decodează automat Brotli când este instalat un backend; nu am verificat asta direct. Verifică avizul fiecărui furnizor.

Ce faci

  • ▸Actualizează runtime-urile la versiunile de mai sus, începând cu serviciile expuse care primesc corpuri de cerere comprimate sau aduc conținut de la adrese furnizate de utilizatori.
  • ▸Reconstruiește și redeploiază imaginile de container și executabilele autonome care încorporează runtime-ul; instalarea unui runtime nou pe gazdă nu actualizează copia încorporată. Repornește procesele și verifică ce versiune rulează efectiv (de exemplu cu dotnet --list-runtimes pentru .NET).
  • ▸Dacă nu poți actualiza imediat, Imperva sugerează limitarea traficului Brotli nesigur pe căile afectate și spune că doar actualizarea elimină defectul. Vercel a adăugat reguli de blocare a cererilor de intrare pe 21 octombrie, care nu acoperă răspunsurile Brotli aduse de aplicație de la alte servere.
  • ▸Pentru liniile ieșite din suport (Node.js 20.x, 23.x, 25.x și mai vechi), nu există corecție de la Node.js: planifică migrarea la o linie suportată sau izolarea serviciului.
  • ▸Dacă ai servicii care s-au prăbușit neașteptat după trafic comprimat, păstrează dumpurile și jurnalele înainte de repornire: o prăbușire este un efect documentat al defectului.

Ce nu se știe

Nu se știe cât de fiabil este exploitul pe alte arhitecturi, pe liniile Node.js 22.x și 26.x sau pe alte versiuni Express și body-parser decât cele testate de Imperva. Nu se știe domeniul și scara activității observate de ELLIO. Nu sunt clare versiunile exacte pentru majoritatea produselor din aval și pentru distribuțiile Linux, iar Help Net Security spune doar că mulți mentenanți au actualizat dependențele. Nu am citit avizul Brotli (GHIS-4ggp-56x3-8hjh), la care trimite lansarea v1.2.1.

Închide alerta cu dovezi

Pentru fiecare serviciu, păstrează runtime-ul și versiunea înainte și după, dacă imaginea sau executabilul a fost reconstruit, data repornirii, dacă acceptă date Brotli controlate de utilizator și măsurile temporare aplicate. Pentru liniile ieșite din suport, notează decizia de migrare sau izolare, cu termen. Un termen KEV federal nu se aplică automat companiilor private, dar două săptămâni de la adăugare arată cât de repede se așteaptă remedierea.

Biblioteca nu e în lista de dependențe

Urmărește în Awarely Monitor runtime-urile și versiunile din fiecare serviciu și imagine, plus dovezile reconstruirii. Actualizarea și repornirea rămân în sistemele voastre.