Kritisk RCE-sårbarhet i protobuf.js hotar miljontals system
Ett av de mest använda JavaScript-biblioteken i världen hade en kritisk sårbarhet som gör det möjligt för angripare att köra godtycklig kod på drabbade system. Säkerhetsforskare vid Endor Labs har identifierat en RCE-sårbarhet (Remote Code Execution) i protobuf.js, den populäraste JavaScript-implementationen av Googles Protocol Buffers.
Biblioteket laddas ner cirka 52 miljoner gånger per vecka via npm och används i otaliga projekt som förlitar sig på gRPC, Firebase och liknande tjänster. Sårbarheten har fått beteckningen CVE-2026-41242 och en CVSS-poäng på 9.4 av 10, vilket klassificerar den som kritisk.
Så fungerar sårbarheten
Problemet finns i funktionen Type.generateConstructor, som använder JavaScripts Function constructor för att dynamiskt skapa kod. Denna mekanism fungerar i praktiken som eval() och öppnar dörren för kodinjicering.
Biblioteket filtrerade inte fältnamn i .proto- eller JSON-scheman. Det innebär att en angripare kan skapa en skadlig schemafil där ett "name"-fält innehåller körbar JavaScript-kod. Så snart en applikation laddar och bearbetar det skadliga schemat körs den injicerade koden. I automatiserade flöden och på serversidan kan detta ske helt utan användarinteraktion.
Endor Labs beskriver exploateringen som "trivial" så snart en förgiftad fil laddas i minnet.
Vilka system är drabbade?
Alla versioner upp till och med 8.0.0 samt 7.5.4 och tidigare är sårbara. System som accepterar opålitliga .proto- eller JSON-scheman löper störst risk. Det gäller exempelvis applikationer som tar emot scheman från externa källor, tredjepartsintegrationer eller användargenererat innehåll.
System som enbart använder fördefinierade och betrodda scheman är däremot inte exponerade.
Fixen: en enda rad kod
Lösningen är anmärkningsvärt enkel. Hela fixen består av en enda rad kod som sanerar fältnamn genom att ta bort alla icke-alfanumeriska tecken:
jsname = name.replace(/\W/g, "")
Sårbarheten rapporterades den 2 mars 2026, bekräftades den 9 mars och patchade versioner (8.0.1 och 7.5.5) publicerades på npm i april 2026.
Vad bör du göra nu?
Den här sårbarheten är ett tydligt exempel på supply chain-risker i JavaScript-ekosystemet. Ett enda bibliotek med en trivial brist kan potentiellt påverka miljontals system. Här är konkreta steg du bör ta:
Uppdatera omedelbart. Om ditt projekt använder protobuf.js, uppgradera till version 8.0.1 eller 7.5.5. Kontrollera med npm ls protobufjs om biblioteket finns i ditt beroendeträd.
Granska dina beroenden. Använd verktyg som npm audit eller Snyk för att identifiera sårbara paket i hela din kodbas.
Acceptera aldrig opålitliga scheman utan validering. Om din applikation tar emot .proto- eller JSON-scheman från externa källor, implementera strikt validering innan de bearbetas.
Supply chain-attacker blir allt vanligare. Att hålla beroenden uppdaterade och granska dem regelbundet är inte längre valfritt utan en grundläggande del av säkerhetsarbetet.