Er zijn correctieve uitgaven beschikbaar voor het server-side JavaScript-platform Node.js 21.6.2, 20.11.1, 18.19.1, waarin 8 kwetsbaarheden zijn verholpen, waarvan 4 een hoog risico hebben.
- CVE-2024-21892 — de mogelijkheid voor een niet-bevoorrechte gebruiker om code uit te voeren die erfelijke verhoogde rechten heeft waarmee de workflow draait. De kwetsbaarheid is veroorzaakt door een fout in de implementatie van een uitzondering die het mogelijk maakt om omgevingsvariabelen die door niet-bevoorrechte gebruikers zijn ingesteld, te verwerken met verhoogde rechten. De uitzondering had alleen moeten worden verstrekt voor de bevoegdheid CAP_NET_BIND_SERVICE, maar door een fout werd deze ook op sommige andere bevoegdheden toegepast.
- CVE-2024-22019 — denial of service door uitputting van beschikbare resources (CPU-belasting en bandbreedteverbruik) bij de verwerking door de ingebouwde HTTP-server van specifiek opgestelde chunked-verzoeken, wat leidt tot het lezen van een onbeperkt aantal bytes in één verbinding.
- CVE-2024-21896 — het overschrijden van de basisdirectory in bestandsroutes. De kwetsbaarheid maakt het mogelijk om de normalisatie van bestandsroutes te omzeilen met behulp van path.resolve() wanneer een pad wordt doorgegeven via de Buffer-klasse. Na verificatie wordt de Buffer.from() methode aangeroepen, maar in de applicatie kan de Buffer.prototype.utf8Write worden aangeroepen, wat resulteert in een vervanging van de inhoud na de uitvoering van path.resolve() en het ontstaan van de kwetsbaarheid.
- CVE-2024-22017 — de aanroep van setuid() resette niet alle bevoegdheden. In het bijzonder heeft setuid() geen invloed op io_uring-operaties die worden gebruikt in libuv, als ze zijn geïnitialiseerd vóór de aanroep van setuid().
- CVE-2023-46809 — een kwetsbaarheid in de API privateDecrypt(), die het mogelijk maakt om een Marvin-aanval toe te passen voor het ontsleutelen van RSA op basis van tijdsmetingen van bewerkingen.
- CVE-2024-21891 — de mogelijkheid om de toegangsrechtenmodel te omzeilen bij het gebruik van aangepaste normalisatiehandlers voor bestandsroutes.
- CVE-2024-21890 — onjuiste verwerking van maskers in de parameters ‘—allow-fs-read’ en ‘—allow-fs-write’. Bijvoorbeeld, ‘—allow-fs-read=\/home\/node\/.ssh\/*.pub’ leidt tot toegang tot de gehele inhoud van ‘.ssh\/’, en niet alleen tot bestanden met de extensie ‘.pub’, omdat de masker ‘*’ wordt verwerkt als het laatste element van het pad.
- CVE-2024-22025 — een denial-of-service door uitputting van middelen bij het decoderen van gecomprimeerde data in het Brotli-formaat, verkregen via een fetch() oproep.
Daarnaast kan het optreden van library-uitgave libuv 1.48.0 worden opgemerkt, die wordt gebruikt in Node.js voor het multiplexen van verbindingen en asynchrone invoer/uitvoer verwerking. Behalve Node.js wordt de library ook gebruikt in DNS-servers BIND 9 en Knot DNS, de HTTP-server H2O, en het Lua-framework Luvit. een virtuele machine MoarVM, de programmeertaal Julia en het Python-framework uvloop zijn ook betrokken. In de nieuwe versie is een kwetsbaarheid (CVE-2024-24806) verholpen, die zich manifesteert in projecten die libuv gebruiken, en waarmee een SSRF (Server-side request forgery) aanval kan worden uitgevoerd om toegang te krijgen tot de interne API. Deze kwetsbaarheid ontstond door het afsnijden van de hostnaam door de functie uv_getaddrinfo() tot 256 tekens voordat het domein werd opgelost met de functie getaddrinfo(), wat kan leiden tot het identificeren van het verkeerde IP-adressen en omzeilen van checks. Bijvoorbeeld, services zoals MySpace, die subdomeinen van het type ‘username.example.com’ creëren, kunnen worden aangevallen door een lange gebruikersnaam op te geven.
Er is ook een update uitgebracht van de HTTP-client undici 5.28.3 die in Node.js wordt gebruikt, waarin een kwetsbaarheid (CVE-2024-24758) is verholpen, veroorzaakt door het ontbreken van het opschonen van de HTTP-header Proxy-Authorization bij het omleiden van verzoeken.
Bron: opennet.ru
