Defekti në Brotli prek Node.js, Bun, Python dhe sistemet proxy
Defekti në Brotli, i gjurmuar si CVE-2026-111497, prek softuerët që përdorin decoder të Google për të shpaketuar trafikun web të kompresuar me Brotli. Të dhënat e kompresuara, të përgatitura posaçërisht, mund të shkruajnë përtej fundit të një memory buffer, duke shkaktuar memory corruption, që do të thotë se të dhënat brenda një programi në punë mund të dëmtohen ose ndryshohen. Rezultati mund të jetë një ndërprerje e papritur, një memory leak ose remote code execution (RCE), ku një sulmues e detyron programin e prekur të ekzekutojë kodin e tij.
Brotli është një format kompresimi që përdoret për të zvogëluar madhësinë e faqeve web dhe të trafikut tjetër të rrjetit. Komponenti i cenueshëm është kodi C që dekodon një Brotli stream. Meqë mjediset runtime, sistemet proxy dhe paketat softuerike përfshijnë kopjet e tyre të këtij kodi, çdo projekt duhet të publikojë përditësimin e vet. Defekti u bë publik më 21 tetor, kur Google dhe Node.js nxorën korrigjime, ndërsa përditësimet për produktet e tjera pasuan veçmas.
Versionet 1.0.3 deri në 1.2.0 të Google Brotli C library janë të prekura, ndërsa versionet e korrigjuara janë 1.0.10, 1.1.1 dhe 1.2.1. Për Node.js, branch-et e cenueshme janë 22.x, 24.x dhe 26.x përpara korrigjimeve të tyre përkatëse. Versionet e korrigjuara janë 22.23.4, 24.22.1 dhe 26.12.1. Node.js 20.x dhe versionet më të vjetra janë gjithashtu të prekura, por kanë arritur end of life. Ekspozimi mund të ndodhë kur fetch() përpunon një përgjigje të shënuar Content-Encoding: br ose kur Express 5 apo body-parser 2 çkompreson një Brotli request body. Një Node.js HTTP server bazë nuk i çkompreson vetë request body hyrëse.
Bun 1.4.3 dhe versionet më të hershme janë të cenueshme përmes përgjigjeve fetch() dhe node:zlib, ndërsa korrigjimi gjendet në Bun 1.4.4. Versionet 1.39.2, 1.38.5, 1.37.7 dhe 1.36.11 të Envoy janë të prekura kur konfigurohet Brotli decompressor i tij; versionet e korrigjuara janë 1.40.0, 1.39.3, 1.38.6, 1.37.8 dhe 1.36.12. Istio preket në versionet 1.31.0 deri në 1.31.1, 1.30.0 deri në 1.30.5 dhe 1.29.0 deri në 1.29.8 kur aktivizohet çkompresimi Brotli. Korrigjimet e tij janë 1.31.2, 1.30.6 dhe 1.29.9. Nëse çkompresimi është çaktivizuar në Envoy ose Istio, kodi i cenueshëm nuk mund të arrihet.
Python Brotli 1.2.0 dhe versionet më të hershme korrigjohen në 1.2.1, ndërsa brotlicffi 1.2.0.x dhe versionet më të hershme korrigjohen në 1.2.1.0. Aplikacionet mund të ekspozohen pa importuar drejtpërdrejt asnjërën paketë. Kur instalohet një paketë e cenueshme, HTTP clients, duke përfshirë requests, urllib3, httpx dhe aiohttp, mund të dekodojnë automatikisht përgjigjet Brotli të marra nga një server tjetër. cdxgen standalone binaries dhe images preken gjithashtu në versionet 13.4.0 dhe 12.8.8 e më të hershme kur skanojnë input të pabesuar; versionet e korrigjuara janë 13.5.0 dhe 12.8.9.
Një program është në rrezik vetëm kur dekodon të dhëna Brotli të kontrolluara nga dikush tjetër. Kjo mund të përfshijë një client keqdashës që dërgon input të kompresuar drejt një serveri ose një server keqdashës që i kthen një client-i përmbajtje të kompresuar. Ekipi Codex Security i OpenAI, i cili raportoi defektin, identifikoi gjithashtu client-ët që përdorin curl --compressed si një shembull të drejtimit të dytë. Një web application firewall (WAF), pra një filtër që kontrollon kërkesat web, nuk mund ta bllokojë domosdoshmërisht këtë rrugë dalëse. Vercel vendosi rregulla firewall në datën e publikimit, por tha se ato nuk mbrojnë përgjigjet që funksionet marrin nga serverë të tjerë.
Red Team i Imperva demonstroi ekzekutimin e kodit të kontrolluar nga sulmuesi në një build të pandryshuar të Node.js 24.22.0 për Linux në ARM64. Puna e tij Node2Shell e dorëzoi të dhënën keqdashëse si nëpërmjet një përgjigjeje të marrë nga një server tjetër, ashtu edhe përmes një Express request body. Exploit kërkoi disa përpjekje, nuk është publikuar dhe nuk u testua kundër build-eve të tjera. Ekzekutimi i kodit nuk është demonstruar në produktet e tjera të prekura dhe nuk janë raportuar sulme në përdorim real. Cybersecurity and Infrastructure Security Agency (CISA) nuk regjistroi as exploitation dhe as automatizim në vlerësimin e saj të 23 tetorit, ndërsa Red Hat tha se nuk ishte i disponueshëm asnjë proof of concept publik dhe i besueshëm për ekzekutimin e kodit.
Vlerësimet e rëndësisë ndryshojnë. Google caktoi një rezultat kritik prej 9.2 sipas Common Vulnerability Scoring System (CVSS) 4.0. Node.js e klasifikoi problemin me rëndësi të lartë, ndërsa Red Hat i dha rezultatin 8.1 dhe e etiketoi si të rëndësishëm. Ndryshimi korrigjues në source code ishte shtuar në Brotli më 27 shkurt, por në atë kohë nuk u njoh si një security fix dhe nuk u përfshi në një version të ri të Brotli deri më 21 tetor.
Administratorët duhet të instalojnë versionin e duhur të korrigjuar, të rinisin shërbimet e prekura dhe të rindërtojnë container images, të cilat janë kopje të paketuara të një aplikacioni dhe të dependencies që i nevojiten për të punuar. Një process që vazhdon të jetë aktiv përdor ende decoder e vjetër. Kur një përditësim nuk mund të zbatohet menjëherë, OpenAI dhe Aikido rekomandojnë refuzimin e kërkesave të shënuara Content-Encoding: br përpara se një proxy ose body parser t'i çkompresojë, çaktivizimin e dekodimit automatik Brotli në HTTP clients dhe refuzimin e përgjigjeve Brotli përpara dekodimit. Operatorët e sistemeve Python mund t'i heqin paketat e cenueshme Brotli dhe brotlicffi, në mënyrë që client-ët të përdorin gzip ose deflate si alternativë. Heqja e br nga Accept-Encoding nuk mjafton, sepse një server mund të kthejë përmbajtje Brotli pavarësisht kërkesës. Nuk është publikuar asnjë workaround për Node.js, ndaj përditësimi i runtime është korrigjimi i deklaruar.
Paketat e sistemit operativ mund të përditësohen sipas afateve të ndryshme. Debian e korrigjoi Brotli për Debian 13 (trixie) më 23 tetor me versionin 1.1.0-2+deb13u1. Deri më 22 tetor, Amazon Linux 2023 vazhdonte t'i shënonte si në pritje korrigjimet e tij për Brotli dhe Node.js 24. Mjetet për kontrollin e dependencies mund të mos i zbulojnë gjithashtu paketat e cenueshme Python, sepse CVE record drejton te repository i Google dhe advisory i GitHub nuk rendit asnjë paketë të prekur, që është informacioni i përdorur nga Dependabot. PYSEC-2026-4322 dhe PYSEC-2026-4323 u shtuan më 23 tetor për dy paketat Python, prandaj versionet e instaluara duhet të kontrollohen edhe manualisht. Për organizatat që kanë nevojë për ndihmë për të shqyrtuar mjediset runtime, paketat dhe infrastrukturën e prekur, AEU-I ofron IT, infrastrukturë dhe konsulencë me sigurinë në plan të parë.