Hopp til hovedinnhold

Søndag 8. november

 Tilbake Google 3 min 16.32

Brotli-hull med CVSS 9,2 gir kodekjøring i Node.js og Bun: OpenAI fant det i februar

lørdag 24. oktober · KI-generert · Kilde: Aikido

Innholdet er KI-generert og kan inneholde feil. Sjekk originalkilden.

Oppdater Node.js, Bun, Envoy, Istio og Pythons Brotli-pakker nå, fordi en feil i Googles Brotli-dekoder lar en laget komprimert strøm skrive utenfor bufferet og kjøre kode.

«En ondsinnet klient kan ta over en upatchet server, og en ondsinnet server kan ta over en upatchet klient som godtar komprimerte svar.» Slik beskriver sikkerhetsselskapet Aikido rapporten OpenAI sendte inn om CVE-2026-111497, en out-of-bounds write i Googles Brotli-dekoder i versjon 1.0.3 til og med 1.2.0. CVE-posten gir feilen CVSS 4.0 9,2 (Critical), mens Node.js-prosjektet rangerer den som High.

Node.js slapp rettinger 21. oktober i 22.23.4, 24.22.1 og 26.12.1, og Google publiserte Brotli 1.2.1 samme dag, med 1.0.10 og 1.1.1 for eldre grener. Bun 1.4.4 bytter den medfølgende dekoderen fra 1.2.0 til 1.2.1. Envoy er rettet i 1.40.0, 1.39.3, 1.38.6 og 1.37.8, Istio i 1.29.9, 1.30.6 og 1.31.2. Imperva Red Team kjørte egen kode i en app på det offisielle Node.js 24.22.0-imaget for Linux arm64, både via innebygd fetch() og via Express 5.0.0 til 5.3.0 med body-parser 2. Angrepet lyktes ikke hver gang, men 24.22.1 avviste de samme dataene.

Bakgrunn

Ifølge Aikido opplyser OpenAI at de fant feilen allerede i februar. Rotårsaken ble rettet i Brotli-kildekoden da, men ingen så at det var et sikkerhetshull, og ingen utgivelse inneholdt rettingen før nå. Feilen sitter i DecodeBlockTypeAndLength(): returverdien BROTLI_FALSE kunne bety både ugyldig strøm og behov for mer input, og den raske kodestien ignorerte den. Commit 0ed4268 innfører den nye feilkoden BROTLI_DECODER_ERROR_FORMAT_BLOCK_SWITCH (-17). Patch the Planet oppgir at Node.js-varselet krediterer Khai Tran og Sylvie Mayer i OpenAI Codex Security for funnet.

For deg som bygger agenter er klient-scenariet det farlige. En agent med et web-fetch-verktøy henter innhold fra servere du ikke kontrollerer, og Buns fetch sender Accept-Encoding: gzip, deflate, br, zstd som standard og dekoder svaret automatisk. I Python laster urllib3, requests, httpx og aiohttp Brotli av seg selv når pakken er installert, og Brotli har 82,8 millioner nedlastinger i måneden. Aikido melder at pip-audit, Dependabot og Safety per 23. oktober ikke flagger de sårbare versjonene, fordi advisory-databasene ennå ikke kobler CVE-en til PyPI-pakkene Brotli og brotlicffi.

«Behandle dette som en risiko for fjernkjøring av kode.» — Bun i sikkerhetsvarselet GHSA-663w-cv8g-jj2p

Patch the Planet advarer også om Electron-apper, som kan ha flere Brotli-kopier: en rettet Chromium betyr ikke at den innebygde Node.js-runtimen er rettet. Kjører du en kompilert bun build --compile-binær, er den sårbar til du bygger den på nytt.

«Å fjerne br fra Accept-Encoding stopper ikke alene en server fra å sende det.» — Patch the Planet

Slik beskytter du deg

  1. Oppgrader til Node.js 22.23.4, 24.22.1 eller 26.12.1, Bun 1.4.4, eller Brotli 1.2.1 og brotlicffi 1.2.1.0 i Python, og bygg containere og kompilerte binærer på nytt.
  2. Kjør pip show Brotli brotlicffi i hvert miljø og hvert image, siden pip-audit og Dependabot ikke varsler om dette ennå.
  3. Kan du ikke patche i dag, avvis forespørsler med Content-Encoding: br før body-parseren kjører, og slå av automatisk Brotli-dekoding i HTTP-klientene agentene dine bruker. I Next.js stopper images.unoptimized: true bildeoptimalisereren fra å hente og dekode eksterne bilder.

Pulsen · norske KI-nyheter for deg som bygger. Sakene er KI-generert fra originalkilden, som alltid lenkes.