Onderzoekers van Endor Labs hebben een kritieke kwetsbaarheid ontdekt in protobuf.js, een veelgebruikte JavaScript-implementatie van Google's Protocol Buffers. Deze kwetsbaarheid maakt het mogelijk om op afstand willekeurige JavaScript-code uit te voeren. Protobuf.js wordt gemiddeld bijna 50 miljoen keer per week gedownload via de npm-registry en wordt gebruikt voor communicatie tussen services, real-time applicaties en efficiënte opslag van gestructureerde data in databases en cloudomgevingen.
Volgens Endor Labs ontstaat de kwetsbaarheid door onveilige dynamische codegeneratie. De bibliotheek bouwt JavaScript-functies op basis van protobuf-schema’s door strings samen te voegen en deze uit te voeren met de Function()-constructor. Hierbij worden schema-afgeleide identifiers, zoals berichtnamen, niet gevalideerd. Hierdoor kan een aanvaller een kwaadaardig schema aanleveren dat willekeurige code injecteert in de gegenereerde functie, welke wordt uitgevoerd zodra de applicatie een bericht verwerkt met dat schema.
Deze kwetsbaarheid opent de deur voor remote code execution (RCE) op servers of applicaties die door een aanvaller beïnvloede schema’s laden. Dit kan leiden tot toegang tot omgevingsvariabelen, credentials, databases en interne systemen, en zelfs laterale beweging binnen de infrastructuur. Ook ontwikkelmachines lopen risico als zij onbetrouwbare schema’s lokaal laden en decoderen. De kwetsbaarheid treft protobuf.js versies 8.0.0/7.5.4 en lager.
Endor Labs adviseert te upgraden naar versies 8.0.1 en 7.5.5, waarin de kwetsbaarheid is verholpen. De patch reinigt typenamen door niet-alfanumerieke tekens te verwijderen, waardoor het sluiten van de synthetische functie door een aanvaller wordt voorkomen. Een structurele oplossing zou zijn om het gebruik van de Function()-constructor voor schema-afgeleide identifiers volledig te vermijden. Volgens Endor Labs is exploitatie eenvoudig, wat wordt bevestigd door de minimale proof-of-concept code in de security advisory. Tot op heden is er echter geen actieve exploitatie in het wild waargenomen.
De kwetsbaarheid werd op 2 maart gemeld door Endor Labs-onderzoeker en bug bounty hunter Cristian Staicu. De protobuf.js-beheerders brachten op 11 maart een patch uit op GitHub. Updates voor de npm-pakketten volgden op 4 april voor de 8.x tak en op 15 april voor de 7.x tak. Naast het updaten van de bibliotheek raadt Endor Labs aan om transitieve dependencies te auditen, het laden van schema’s als onbetrouwbare input te behandelen en in productie bij voorkeur gebruik te maken van vooraf gecompileerde of statische schema’s.
Reacties
Geef een reactie
Vereiste velden zijn gemarkeerd met *