CVE-2026-111497: Eén Brotli-bug, negen runtimes en de Codex Agent die hem vond
Guides & Insights

CVE-2026-111497: Eén Brotli-bug, negen runtimes en de Codex Agent die hem vond

Auteur

Rowan Sterling

Publicatiedatum

Nieuwste modellen · 20Bekijk alle modellen →
Benchmarks: Artificial Analysis · dagelijks bijgewerkt
Terug naar alle berichten

Het lastige aan CVE-2026-111497 is dat het niet één kwetsbaarheid in één product is. Het is één out-of-bounds write in Google's Brotli-decompressor, en dezelfde bug is bereikbaar via ten minste acht afzonderlijke runtimes en proxies die de bibliotheek insluiten — Node.js, .NET en ASP.NET Core, Python's Brotli en brotlicffi, Bun, Envoy, Istio en de pure-Go-implementatie. De meting van Wiz schat dat 91% van de cloudomgevingen risico loopt en merkt op dat 82% daarvan Node.js publiek toegankelijk maken. CISA heeft het toegevoegd aan de catalogus Known Exploited Vulnerabilities, en Microsoft heeft een noodpatch uitgebracht voor .NET en Visual Studio.

De tweede helft van het verhaal is wie het heeft gevonden: Khai Tran en Sylvie Mayer van OpenAI Codex Security, volgens de beschrijving van Wiz en de upstream-credits. Dat is een team van AI-beveiligingsagenten, en de kwetsbaarheid die het vond, zit in de decompressiebibliotheek die op het web het breedst is ingebed.

Wat de bug doet

Brotli is wat bijna elke HTTP-stack decompresseert wanneer een server het volgende verzendt: code>Content-Encoding: br/code>. Een misvormde gecomprimeerde stream veroorzaakt tijdens het decomprimeren een schrijfactie buiten de grenzen, en de CVSS v4-score is 9,2. Het getroffen bereik is Brotli 1.0.3 tot en met 1.2.0, verholpen in 1.0.10, 1.1.1 en 1.2.1.

Wat er een programma van maakt en niet een ticket, is dat de bibliotheek als vendored code wordt meegeleverd, statisch wordt gelinkt of in elke runtime opnieuw wordt geïmplementeerd, waardoor de fix telkens via een andere release-trein binnenkomt — en soms helemaal niet, omdat de standaarddistributie van een taal zijn eigen kopie heeft.

De patchlijst, die het nuttige deel is

Alle onderstaande cijfers komen uit Wiz' adviessamenvatting en de betreffende projectreleases, gelezen op 30 oktober 2026.

• Google Brotli / libbrotli — betroffen versies 1.0.3–1.2.0, met uitzondering van gepatchte backports; opgelost in 1.0.10, 1.1.1, 1.2.1.

• Python Brotli — betroffen 1.0.3–1.2.0; opgelost in 1.2.1. brotlicffi — betroffen 1.0.3–1.2.0.x; opgelost in 1.2.1.0.

• Node.js — getroffen: 22.x, 24.x en 26.x; opgelost in 22.23.4, 24.22.1 en 26.12.1.

• Bun — betroffen versies 1.0.21–1.4.3; opgelost in 1.4.4.

• Envoy Proxy — betroffen: 1.36.11, 1.37.7, 1.38.5, 1.39.2; opgelost in 1.36.12, 1.37.8, 1.38.6, 1.39.3 en 1.40.0.

• Istio — getroffen: 1.29.0–1.29.8, 1.30.0–1.30.5, 1.31.0–1.31.1; opgelost in 1.29.9, 1.30.6 en 1.31.2.

• andybalholm/brotli (Go) — getroffen vóór v1.2.7; opgelost in v1.2.7.

De Node.js-rij is degene die de week van de meeste mensen bepaalt. Een service op 22.22.x wordt via zijn HTTP-stack blootgesteld, zelfs als de applicatiecode nooit Brotli vermeldt, omdat de decompressie gebeurt voordat je handler wordt aangeroepen. Dat verklaart ook de drie namen die de industrie eraan heeft gegeven: Node2Shell voor het Node-pad, HTTP2Shell voor het proxypad dat Check Point documenteerde, en Brotli2Shell van JFrog voor het bredere beeld.

Waarom "91%" het getal is om mee te argumenteren

De cijfers van Wiz beschrijven de cloudomgevingen van Wiz-klanten, niet het internet. Het aantal omgevingen waarin zich ergens een kwetsbare bibliotheek bevindt, is niet het aantal uitbuitbare diensten, en het verschil is groot: een meegeleverde Brotli in een desktopapplicatie die nooit onbetrouwbare invoer decompresseert, is een bevinding, geen kwetsbaarheid. De bruikbare versie van de statistiek is beperkter — diensten die gecomprimeerde invoer van onbetrouwbare bronnen accepteren, wat in wezen neerkomt op elk openbaar HTTP-eindpunt dat eindigt op code>br/code>.

Twee dingen maken misbruik plausibel en niet louter theoretisch: CISA's toevoeging aan de KEV-catalogus impliceert waargenomen misbruik, en honeypotbeheerders hebben pogingen geregistreerd. Wanneer een kwetsbaarheid in de kolom 'in het wild misbruikt' terechtkomt, is de patchdeadline niet langer jouw change-controlkalender, maar die van iemand anders.

De ontdekking is het deel met een langere halfwaardetijd.

Het beveiligingsteam van een frontier-model heeft een bug in de geheugenveiligheid gevonden in een decompressiebibliotheek die al tien jaar door duizenden mensen is gelezen. Dat is geen verhaal over één leverancier die slim is; het is een uitspraak over dekkingsbereik. Al jaren wordt statische analyse op Brotli losgelaten, er bestaan fuzzing-harnassen, en de bug overleefde beide — terwijl een agent die ontworpen is om code doelgericht te lezen, hem vond en een fix opleverde die upstream accepteerde.

De asymmetrie snijdt in beide richtingen. Dezelfde capaciteit die deze klasse bugs vindt, vindt ze ook in de code die je uitlevert. De vraag voor iedereen die agentisch programmeren in de praktijk toepast, is niet of de agent een out-of-bounds write kan herkennen; het is of de bevinding jou bereikt voordat ze iemand anders bereikt.

Wat te doen, in de volgorde die ertoe doet

• Patch de runtimes die je daadwerkelijk uitvoert. De bovenstaande bibliotheeklijst is de bron; begin met degenen die openbaar verkeer beëindigen.

• Zoek daarna naar meegeleverde kopieën. Containerbasisimages, statische binaries, WASM-builds en language wheels dragen elk hun eigen Brotli, en geen daarvan komt boven water in een audit van de applicatie via een pakketbeheerder. Een inventarisatiescanner op repositoryniveau die deze week is gepubliceerd, doorloopt een bestandssysteem en beoordeelt elke Node-, Bun- en Brotli-kopie die hij vindt, wat een snellere start is dan er zelf een te bedenken.

• Herbouw in plaats van te patchen, waar dat kan. Het vervangen van een statisch gelinkte bibliotheek in een reeds gebouwd artefact is precies waar mensen per ongeluk een half gerepareerde binary verzenden.

• Als je Envoy of Istio als edge gebruikt, behandel de proxyfixes dan als de hoogste prioriteit van de set: de proxy decomprimeert voor alles wat erachter zit.

• Controleer je .NET-omgeving apart. De patch van Microsoft dekt .NET en Visual Studio, en de juiste versie is een runtime-update in plaats van een wijziging van een pakketreferentie.

Waar dit voor onze lezers ligt

Het grootste deel van wat dit blog behandelt, is modelcapaciteit, prijs en routing. Dit hoort hier thuis om één regel: het defect werd gevonden door een AI-agent, en de klasse van systemen die zulke bugs vindt, is de klasse van systemen die onze lezers in hun pipelines inbouwen. Een agent die repo's scant en in CI tegen je dependencies loopt, is nu een beveiligingscontrole, en het is dezelfde agent-runtime die je code schrijft.

De Agent Firewall van OrcaRouter beoordeelt tool- en MCP-aanroepen voordat ze worden uitgevoerd, wat de beheersmaatregel is die het schadebereik van een agent beperkt; hij maakt de bevindingen van een agent niet correct, en niets aan deze CVE is een bewering dat het routeren van een model de supply-chainrisico's vermindert. De bruikbare les uit deze week is smaller en controleerbaar: als je {{1}}een agent leestoegang tot een repository gaf om bugs te vinden{{/1}}, controleer dan dat de voorgestelde patches zijn gepind, en controleer dat de runtime onder je eigen stack {{2}}voorbij 1.0.3–1.2.0 is{{/2}}.

Het patroon dat de moeite waard is om te onthouden, is dat de kwetsbaarheid zat in code die niemand had gekozen. Brotli kwam binnen als een indirecte afhankelijkheid van een runtime-functie, werd op acht plaatsen volgens afzonderlijke schema's gepatcht en zal blijven meekomen in basisimages die vóór deze week zijn gebouwd. Reactie op de toeleveringsketen draait grotendeels om de discipline om de kopieën te vinden die je niet zelf hebt geïnstalleerd.

Bronvermelding: de matrix van getroffen en gecorrigeerde versies, de runtimelijst en de blootstellingscijfers van 91%/82% komen uit de samenvatting van Wiz' advies, gelezen op 30 oktober 2026, en de gecorrigeerde versies zijn de eigen releases van de projecten. De CVSS v4-score van 9,2 komt uit het CVE-record. De ontdekkingsvermelding voor Khai Tran en Sylvie Mayer van OpenAI Codex Security komt uit Wiz' verslag en de upstream-credits. CISA's KEV-vermelding en Microsofts .NET-patch zijn de aankondigingen van de respectievelijke organisaties; geen van beide is hier als primair document gelezen, anders dan de samenvatting van het advies. De beschrijving van de inventarisatiescanner is de eigen beschrijving van een GitHub-project van derden.