Një dobësi kritike në dekoderin Brotli, që ndikon në Node.JS, Bun, shfletuesit, klientët HTTP dhe projekte të tjera

Në bibliotekën me zbatimin standard të dekoduesit të formatit të kompresimit të të dhënave Brotli, është zbuluar një vulnerabilitet (CVE-2026-111497, emrat kodik Broccoli2Shell dhe HTTP2Shell), që çon në mbushje të tepërt të tamponit gjatë përpunimit të të dhënave të kompresuara që janë formatuar në mënyrë të veçantë. Sipas Google, ky vulnerabilitet mund të përdoret për ekzekutimin e kodit në distancë gjatë sulmeve në projektet që përdorin zbatimin zyrtar të dekoduesit Brotli. Në mesin e projekteve të prekur nga ky vulnerabilitet janë: Node.js, Bun, Envoy, Istio, shfletuesit web, serverat proxy, klientët HTTP, serverat HTTP, arkivuesit, firmware-t UEFI, shikuesit JPEG XL, bibliotekat që dekodojnë përmbajtjen për Python, Ruby, Java, PHP dhe .NET dhe varësitë përkatëse.

Problemi u identifikua nga kompania OpenAI në shkurt të këtij viti dhe u bllokua në kodin e bazës Brotli duke hedhur jashtë rrjedhat e papërshtatshme gjatë dekodimit. Më 22 tetor, u publikuan versione korrigjuese Brotli 1.0.10, 1.1.1 dhe 1.2.1, në të cilat u deklarua qartë se ishte eliminuar vulnerabiliteti dhe u rregullua thelbi i problemit. Në të njëjtën ditë, u krijua një prototip i një eksploiti që lejonte ekzekutimin e kodit në distancë në kushte laboratorike, duke përdorur ndërtimet e pakonfirmuara (në ndërtimet standarde ndodhte përfundimi i papritur). Më vonë, kompania Imperva dokumentoi një sulm ndaj ndërtimeve standarde të Node.js 24.22.0 në një mjedis Linux në sistemin ARM64.

Vulnerabiliteti çon në shkruajtjen jashtë tamponit për shkak të përpunimit të gabuar të gabimeve gjatë analizimit të blloqeve në rrjedhën e kompresuar. Funksioni DecodeBlockTypeAndLength() përveç kodit të gabimit ktheu vetëm vlerat true dhe false, gjë që nuk lejonte kodin thirrës të dallonte dëmtimin e rrjedhës nga një gjendje që kërkonte dërgimin e të dhënave të tjera në funksion. Në rast se në rrjedhë tregohej një tip blloku të kompresuar të gabuar, dekoduesi e perceptonte atë jo si një gabim, por si një gjendje të mungesës së të dhënave, që kërkonte lexim shtesë nga rrjedha. Por pasi tamponi i ndarë nuk ishte llogaritur për të dhënat e lexuara shtesë, ato u shkruan në një zonë përtej kufijve të tij, ku ndodhej gjendja e brendshme e dekoduesit.

Projektet e prekur nga vulnerabiliteti:

  • Biblioteka standarde brotli, problemi shfaqet qĂ« nga versioni 1.0.3 dhe Ă«shtĂ« eliminuar nĂ« pĂ«rditĂ«simet 1.0.10, 1.1.1 dhe 1.2.1. Vulnerabiliteti prek aplikacionet dhe bibliotekat qĂ« pĂ«rdorin bibliotekĂ«n libbrotlidec.
  • Platforma JavaScript Node.js, problemi e Ă«shtĂ« zgjidhur nĂ« pĂ«rditĂ«simet 26.12.1, 24.22.1 dhe 22.23.4. Aplikacionet qĂ« pĂ«rdorin metodĂ«n fetch() pĂ«r kĂ«rkimin e pĂ«rmbajtjes nga burime jashtĂ« mund tĂ« jenĂ« tĂ« goditura, e cila automatikisht dekodon pĂ«rgjigjet HTTP me header «Content-Encoding: br». Po ashtu, vulnerabiliteti shfaqet kur thirren drejtpĂ«rdrejt metodat zlib.brotliDecompress*(), createBrotliDecompress() dhe brotli.decompress() pĂ«r tĂ« shkarkuar pĂ«rmbajtje jashtme ose kur pranojnĂ« kĂ«rkesa HTTP me analiza pĂ«rmes bibliotekave Express 5 dhe body-parser 2.x.
  • Paketa Python brotli dhe brotlicffi (raportimi Ă«shtĂ« ofruar nĂ« versionin 1.2.1) dhe projektet qĂ« i pĂ«rdorin ato, pĂ«rfshirĂ« bibliotekat e njohura urllib3, aiohttp, httpx dhe Scrapy, tĂ« cilat dekodojnĂ« pĂ«rgjigjet me header «Content-Encoding: br» gjatĂ« kontaktimit me burime web jashtme.
  • ServerĂ«t HTTP, proxy-tĂ« HTTP, klientĂ«t HTTP dhe shfletuesit web qĂ« mbĂ«shtesin pĂ«r掋imin Brotli («Accept-Encoding: br»). NĂ« Apache httpd ofrohet mod_brotli (i cili Ă«shtĂ« i çaktivizuar nga parazgjedhja). PĂ«r nginx Ă«shtĂ« nĂ« dispozicion moduli ngx_brotli (versioni i brotli nĂ« varĂ«si Ă«shtĂ« rritur nĂ« tĂ« fundit). NĂ« Chrome/Chromium dhe Firefox problemi Ă«shtĂ« tashmĂ« zgjidhur nĂ« njĂ« nga pĂ«rditĂ«simet e kaluara.server Envoy, vulnerabiliteti Ă«shtĂ« zgjidhur nĂ« daljet 1.40.0, 1.39.3, 1.38.6, 1.37.8, 1.36.12.
  • .NET runtime do tĂ« thotĂ« se pĂ«rdorimi i metodave BrotliDecoder, BrotliStream dhe HttpClient nĂ« aplikacion. Vulnerabiliteti ende nuk Ă«shtĂ« zgjidhur.
  • Zgjatimi PHP brotli kur pĂ«rdoret funksioni brotli_uncompress(). Korrektimi Ă«shtĂ« nĂ« proces.
  • Paketa Ruby brotli kur pĂ«rdor metoda Brotli.inflate. Vulnerabiliteti ende nuk Ă«shtĂ« zgjidhur.
  • DB DuckDB gjatĂ« importimit tĂ« skedarĂ«ve tĂ« compressuar Parquet. Korrektimi Ă«shtĂ« nĂ« proces.
  • DB ClickHouse. Korrektimi Ă«shtĂ« nĂ« proces.
  • DB YDB. Vulnerabiliteti ende nuk Ă«shtĂ« zgjidhur.
  • Apache Arrow gjatĂ« importimit tĂ« skedarĂ«ve tĂ« compressuar Parquet. Korrektimi Ă«shtĂ« nĂ« proces.
  • libjxl (kur kompresimi i metadave nĂ« JPEG XL pĂ«rdor Brotli).
    Korrektimi është në proces.
  • Arkivat NanaZip, 7-Zip-zstd dhe p7zip gjatĂ« shkarkimit tĂ« skedarĂ«ve br. Vulnerabiliteti nuk Ă«shtĂ« zgjidhur.
  • MuPDF. Vulnerabiliteti nuk Ă«shtĂ« zgjidhur.
  • Firmware UEFI bazuar nĂ« EDK II dhe UEFITool, tĂ« kompresuar duke pĂ«rdorur Brotli. Korrektimi Ă«shtĂ« nĂ« proces — EDK II dhe UEFITool.
  • Platforma JavaScript Bun. Vulnerabiliteti Ă«shtĂ« zgjidhur nĂ« versionin 1.4.4.
  • Platforma pĂ«r menaxhimin e mikroshĂ«rbimeve Istio. Vulnerabiliteti Ă«shtĂ« zgjidhur nĂ« versionet 1.29.9, 1.30.6 dhe 1.31.2.
  • curl dhe libcurl, vulnerabiliteti shfaqet kur ka nĂ« varĂ«si njĂ« version tĂ« dobĂ«t libbrotlidec.
  • ParserĂ«t e formateve tĂ« fontit Web Open Font (WOFF), nĂ« tĂ« cilin pĂ«rdoret
    Brotli.
  • Brotli4j, SumatraPDF, Ghostscript, CatBoost dhe YTsaurus. Vulnerabiliteti Ă«shtĂ« eliminuar nĂ« njĂ« nga pĂ«rditĂ«simet.

Burimi: opennet.ru

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster