Åtta byte, och en avkodare som bad om mer

Node.js-projektet släppte säkerhetsversioner för sina grenar 26.x, 24.x och 22.x den 21 oktober, som 26.12.1, 24.22.1 och 22.23.4. Tio CVE rättas, fyra av dem bedömda som höga. Versioner som nått slutet av sin livstid berörs också.

Den som bär ett AI-labbs namn är CVE-2026-111497, en skrivning utanför gränserna i den medföljande Brotli-avkodaren. Node.js tillskriver fyndet OpenAI Codex Security och namnger Khai Tran och Sylvie Mayer som rapportörer, med Matteo Collina och Antoine du Hamel som rättare.

Mekanismen är ett felklassificerat fel. Avkodaren behandlade ett ogiltigt blockbyte som ett tillfälligt behov av mer indata i stället för ett permanent formatfel. Strömavkodaren fortsatte sedan att lägga till indatabyte i en intern buffert på åtta byte och skrev förbi dess slut. Varje program som packar upp Brotli-data från en angripare via node:zlib kan få sitt processminne förstört, och Node.js anger verkan som allt från en krasch till röjt minne till fjärrkörning av kod.

En datorskärm med tom bildskärm på ett skrivbord
Brotli-avkodaren skrev förbi slutet på en intern buffert om åtta byte. Illustrativ bild. Cup of Couple · pexels · Pexels License

Fyra rättningar av redan rättat

Den obekvämare detaljen i det här släppet är hur många poster som är andra försök. CVE-2026-105482, där dns.resolve*() och dns.reverse() kapar namn som innehåller en NUL-byte, beskrivs av projektet som en ofullständig rättning av CVE-2026-48930. CVE-2026-105481, där keep-alive-uttag godtar ett svar som tagits emot innan förfrågan skickades, är en ofullständig rättning av CVE-2026-48931. CVE-2026-106073, där fs.realpathSync() hoppar över kontroller av läsbehörighet under --permission, är en ofullständig rättning av CVE-2026-21715. CVE-2026-105483 beskrivs som en regression efter CVE-2026-48618.

Den sista är tydligast: tls.checkServerIdentity() känner inte igen IP-adresser med bredsiffror som 127.0.0.1, så ett certifikat som bara bär alternativa DNS-namn kan matchas mot en sådan. Ytterligare två poster angriper samma skarv från andra håll. CVE-2026-106069 gäller IPv4-värdar med inledande nollor som 0127.0.0.1, vilka WHATWG:s URL-tolk läser som oktal medan operativsystemets namnuppslagare på vissa plattformar läser som decimal, så att certifikatet valideras mot en annan adress än den man anslutit till. CVE-2026-106072 utvidgar det till andra icke-kanoniska skrivsätt: 0177.0.0.1, 0x7f.0.0.1, 2130706433, 127.1.

Den som upprepar sig själv

CVE-2026-106074 bedöms som medel och är den märkligaste i uppsättningen. Cacherna bakom crypto.randomUUID(), randomUUIDv7() och randomInt() sparas i startögonblicksbilder och i program byggda som en enda körbar fil. Varje process som startas från en sådan ögonblicksbild upprepar sedan samma värden. Allt som behandlade en genererad identifierare som omöjlig att gissa — en sessionsnyckel, en länk för lösenordsåterställning, en idempotensnyckel — skulle återanvända en följd som en angripare kan iaktta en gång och därefter förutse.

En trave hårddiskar på en hylla
Identifierare från cachade generatorer upprepas i varje process som startas från en ögonblicksbild. Illustrativ bild. Marta Branco · pexels · Pexels License

Två poster med låg allvarlighet berör bara 26.x: zlib.ZipFile som returnerar byte styrda av angriparen efter en misslyckad huvudvalidering, så att en skanner kan godkänna ett annat innehåll än andra ZIP-verktyg packar upp, och en jokerregel för --allow-fs-read/--allow-fs-write som matchar kortare sökvägar, där /etc/passwd.* också ger /etc/passwd.

Att följa härnäst

Släppet uppdaterar dessutom medföljande beroenden: c-ares, OpenSSL, SQLite och Undici i de berörda grenarna, plus en uppdatering av certifikatutfärdarpaketet kopplad till att en mellanliggande CA hos eMudhra komprometterats. Den sista posten är ett separat förtroendeproblem som åker med i en rutinmässig patch, och den som bara följer CVE-beteckningar ser den inte.

Mönstret värt att följa är andelen upprepade rättningar. Fyra ofullständiga rättningar och en regression i ett enda släpp pekar mot en felklass — tolkning av IP-adresser i synnerhet — där varje patch lämnar ett angränsande skrivsätt ohanterat, och där nästa fynd sannolikt ser ut ungefär som det förra.