Naar inhoud
PatchBriefing

Zoek in PatchBriefing

Typ minimaal twee tekens. Resultaten worden direct bijgewerkt.

Zoek op CVE’s, producten, packages en artikeltitels.

Niets gevonden. Kenmerken zoals CVE en GHSA zijn in beide talen doorzoekbaar.

Inschrijven

Gemiddeld · 4.9 Node.js & npm CVE-2026-102281 GHSA-m8vh-jmq9-5rjg GHSA-9c5c-9qcx-q35q GHSA-96h4-vgxj-gvm2

Drie kwetsbaarheden in NestJS: microservice-crash, bypass van Fastify-middleware en ongelimiteerde geheugengroei

Drie afzonderlijke advisories treffen NestJS-pakketten: een crash op afstand in TCP/RabbitMQ-microservices via een diep geneste message pattern (CVE-2026-102281), een bypass van authenticatie/autorisatie-middleware in de Fastify-adapter via absolute-form request targets, en ongelimiteerde geheugengroei in de TCP microservice-transportlaag. Voor alle drie is een update beschikbaar.

AI-samenvatting

Binnen korte tijd zijn drie afzonderlijke beveiligingsadvisories gepubliceerd voor NestJS-pakketten. De eerste, CVE-2026-102281, stelt een aanvaller in staat een NestJS-microservice die de TCP- of RabbitMQ-transportlaag gebruikt te laten crashen door één bericht te sturen met een diep genest message pattern. De tweede betreft de Fastify-adapter (@nestjs/platform-fastify) en beschrijft hoe padgebonden middleware — vaak gebruikt voor authenticatie of autorisatie — omzeild kan worden met absolute-form HTTP request targets. De derde, opnieuw in @nestjs/microservices, beschrijft een situatie waarbij geheugengebruik ongelimiteerd kan groeien in de TCP-transportlaag, veroorzaakt door een peer die gedeeltelijke data verstuurt of reacties negeert, met uiteindelijk een out-of-memory-crash van het proces tot gevolg. Elk probleem raakt een ander codepad en heeft een eigen fix; deze briefing behandelt ze afzonderlijk.

Wat is er gebeurd

Er zijn drie losstaande problemen gemeld voor NestJS-pakketten. CVE-2026-102281 (GHSA-m8vh-jmq9-5rjg) betreft @nestjs/microservices: ServerTCP#handleMessage en ServerRMQ#handleMessage geven een door de client bepaald, niet-string pattern door aan JSON.stringify om een lookup-sleutel voor de handler op te bouwen. Een bericht met een voldoende diep genest object in het pattern veroorzaakt een RangeError (maximum call stack size exceeded), en de daaruit voortvloeiende onafgehandelde promise rejection beëindigt het Node.js-proces onder het standaardgedrag. Alleen de TCP- en RabbitMQ-transportlagen zijn getroffen, omdat andere transportlagen patterns als strings ontvangen. GHSA-9c5c-9qcx-q35q betreft @nestjs/platform-fastify: een HTTP-verzoek met een absolute-form request target (bijvoorbeeld 'GET http://host/path HTTP/1.1' in plaats van 'GET /path HTTP/1.1') bereikt de route-handler zonder dat de padgebonden Nest-middleware voor die route wordt uitgevoerd. Twee onderdelen matchten tegen het ruwe request target in plaats van absolute-form targets eerst om te zetten naar een pad: een gebundelde fork van de @fastify/middie-engine, en de eigen middleware-padcontrole van FastifyAdapter tegen req.originalUrl. GHSA-96h4-vgxj-gvm2 betreft wederom @nestjs/microservices: de TCP-transportlaag buffert gedeeltelijke berichten zonder timeout of limiet op het aantal verbindingen, en negeert backpressure-signalen bij het schrijven naar sockets, waardoor een verbonden peer ongelimiteerde geheugengroei op de server kan veroorzaken door gedeeltelijke payloads te sturen en/of nooit reacties te lezen.

Technische oorzaak

Bij CVE-2026-102281 is de hoofdoorzaak dat een door de aanvaller bepaald, niet-string message pattern rechtstreeks aan JSON.stringify wordt doorgegeven zonder dieptebeperking, waardoor bij diepe nesting een RangeError optreedt en het proces crasht via een onafgehandelde promise rejection. Bij GHSA-9c5c-9qcx-q35q is de hoofdoorzaak een mismatch tussen de manier waarop de router van Fastify (find-my-way) absolute-form request targets omzet naar een pad vóór het matchen, en de manier waarop de middleware-laag matchte tegen het ruwe, niet-omgezette target. Een bijdragende factor: omdat FastifyAdapter altijd routerOptions doorgeeft, weerspiegelde Fastify bepaalde verouderde top-level router-opties (ignoreTrailingSlash, ignoreDuplicateSlashes, caseSensitive, useSemicolonDelimiter) niet in initialConfig.routerOptions, wat de middleware-engine uitleest, waardoor extra normalisatieverschillen ontstonden bij toepassingen die deze opties op het top-level instelden. Bij GHSA-96h4-vgxj-gvm2 spelen twee onafhankelijke gebreken samen: JsonSocket buffert gedeeltelijke payloads zonder idle-timeout en zonder limiet op het aantal geaccepteerde verbindingen, en JsonSocket#handleSend negeert de returnwaarde van socket.write, waardoor backpressure bij responses wordt genegeerd en ongelezen responses ongelimiteerd in het geheugen worden opgestapeld.

Waarom dit belangrijk is

CVE-2026-102281 stelt een ongeauthenticeerde aanvaller die de TCP-poort kan bereiken of kan publiceren naar de geraadpleegde RabbitMQ-queue of -exchange in staat de service op elk gewenst moment te laten crashen, met alleen impact op beschikbaarheid (CVSS 7,5, AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H). GHSA-9c5c-9qcx-q35q heeft een ernstigere impact: waar de omzeilde middleware authenticatie of autorisatie uitvoert, resulteert dit in een bypass van authenticatie of autorisatie, waardoor een client een handler kan bereiken die geblokkeerd had moeten worden (CVSS 7,4, AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N). De blootstelling neemt af wanneer een reverse proxy vóór de applicatie request targets herschrijft naar origin-form, wat de meeste doen. GHSA-96h4-vgxj-gvm2 is uitsluitend een beschikbaarheidsprobleem (CVSS 6,5, AV:A/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H): een aanvaller die een TCP-verbinding met de microservice kan openen, kan ongelimiteerde geheugengroei afdwingen, wat leidt tot een out-of-memory-crash van het proces of de container. Geen van de drie problemen wordt gemeld als actief misbruikt, en er is voor geen van de drie een publiek exploit bekend.

Wie wordt getroffen

CVE-2026-102281 treft applicaties die @nestjs/microservices gebruiken met de TCP- of RabbitMQ-transportlaag, waarbij de poort of queue/exchange bereikbaar is voor een niet-vertrouwde partij. GHSA-9c5c-9qcx-q35q treft applicaties die @nestjs/platform-fastify gebruiken en middleware aan specifieke paden binden via MiddlewareConsumer.forRoutes(...) of .exclude(...), en die bereikbaar zijn voor een client die de ruwe HTTP-request-regel kan sturen; de blootstelling is kleiner als een reverse proxy request targets normaliseert voordat ze de applicatie bereiken. GHSA-96h4-vgxj-gvm2 treft applicaties die een microservice starten met Transport.TCP waarbij de poort van de transportlaag bereikbaar is voor een niet-vertrouwde partij; applicaties die de TCP-transportlaag niet gebruiken, of waarbij de poort alleen bereikbaar is voor vertrouwde partijen, zijn niet getroffen.

Getroffen versies

Voor CVE-2026-102281 (@nestjs/microservices): versies vóór 11.2.4, en versies vanaf 12.0.0 tot maar niet inclusief 12.0.2 zijn getroffen. Verholpen in 11.2.4 en 12.0.2. Voor GHSA-9c5c-9qcx-q35q (@nestjs/platform-fastify): versies vóór 11.2.4, en versies vanaf 12.0.0 tot maar niet inclusief 12.0.2 zijn getroffen. Verholpen in 12.0.2 en 11.2.4; een verdere upgrade naar 12.0.3 of 11.2.5 wordt aangeraden, omdat die releases ook de hieronder beschreven fix voor GHSA-96h4-vgxj-gvm2 bevatten. Voor GHSA-96h4-vgxj-gvm2 (@nestjs/microservices): versies vóór 11.2.5, en versies vanaf 12.0.0 tot maar niet inclusief 12.0.3 zijn getroffen. Verholpen in 11.2.5 en 12.0.3. De advisory voor GHSA-96h4-vgxj-gvm2 vermeldt dat dezelfde code aanwezig is in de 10.x-lijn en eerder, die end-of-life zijn en geen patch zullen ontvangen.

Fixes en mitigatie

Voor CVE-2026-102281: upgrade @nestjs/microservices naar 11.2.4 of 12.0.2. Voor GHSA-9c5c-9qcx-q35q: upgrade @nestjs/platform-fastify naar 12.0.2 of 11.2.4 (12.0.3 of 11.2.5 wordt aanbevolen); de fix verwijdert de gebundelde @fastify/middie-fork ten gunste van een afhankelijkheid van @fastify/middie 9.3.4, lost absolute-form targets op in de eigen routecontrole van de adapter, en integreert verouderde top-level Fastify router-opties in routerOptions zodat middleware en router paden identiek normaliseren. Als upgraden niet direct mogelijk is: registreer een Fastify onRequest-hook vóór initialisatie van de applicatie die elk request target weigert dat niet begint met '/' (en niet gelijk is aan '*', het legitieme target voor 'OPTIONS * HTTP/1.1'); het weigeren of normaliseren van absolute-form targets bij een reverse proxy is even effectief. Voor GHSA-96h4-vgxj-gvm2: upgrade @nestjs/microservices naar 12.0.3 of 11.2.5. De fix voegt een configureerbare stall-timer toe (incompleteMessageTimeout, standaard 30000ms) die een peer loskoppelt die midden in een pakket stilvalt, onderbreekt het lezen wanneer de uitgaande buffer van een peer vastloopt en hervat bij 'drain', en begrenst responses die in de wachtrij staan maar ongelezen blijven (maxSendBufferSize, standaard 128MB). Beide limieten staan standaard aan en kunnen worden uitgeschakeld door ze op 0 te zetten; applicaties die zeer grote responses streamen naar bewust trage consumenten moeten mogelijk maxSendBufferSize verhogen. Mitigaties voor GHSA-96h4-vgxj-gvm2 zijn onder meer: netwerktoegang tot de TCP-poort beperken, maxBufferSize verlagen (dit beperkt alleen de impact per verbinding, niet het totaal), of een eigen socketClass met eigen idle-timeout en backpressure-afhandeling aanleveren. Het instellen van een procesgeheugenlimiet verhelpt dit probleem niet; het verandert alleen een out-of-memory-crash van de host in een van het proces.

Aanbevolen actie

Upgrade @nestjs/microservices naar 12.0.3 of 11.2.5 om zowel de fix voor CVE-2026-102281 als voor GHSA-96h4-vgxj-gvm2 te krijgen. Upgrade @nestjs/platform-fastify naar 12.0.3 of 11.2.5 om de fix voor GHSA-9c5c-9qcx-q35q te krijgen, samen met latere onderhoudsverbeteringen. Als applicaties draaien op de end-of-life 10.x-lijn of ouder en getroffen zijn door GHSA-96h4-vgxj-gvm2, plan dan een upgrade naar een ondersteunde hoofdversie, aangezien er voor die lijnen geen patch zal verschijnen. Waar upgraden niet direct mogelijk is, pas de beschreven mitigaties toe: beperk netwerktoegang tot TCP/RabbitMQ-transportendpoints, voeg de Fastify onRequest-hook toe om niet-origin-form request targets te weigeren, en/of zorg dat een reverse proxy vóór de applicatie request targets normaliseert.

PatchBriefing-score

4.9 / 10 · Gemiddeld

Officiële CVSS: 7.5

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

Waarom deze score

Patchwire beoordeelt deze advisories afzonderlijk. CVE-2026-102281 en GHSA-9c5c-9qcx-q35q scoren beide 4,9, voornamelijk bepaald door hun CVSS-basisscores (respectievelijk 7,5 en 7,4) plus kleine bijdragen omdat ze ongeauthenticeerd en op afstand uitbuitbaar zijn zonder gebruikersinteractie. GHSA-96h4-vgxj-gvm2 scoort 3,8, wat een lagere CVSS-basisscore (6,5) weerspiegelt en het feit dat de aanvalsvector adjacent-network is in plaats van network (er moet een TCP-verbinding met de microservice-transportlaag worden geopend in plaats van bereikbaar te zijn over willekeurige netwerken). Geen van de drie advisories heeft een status van bekende actieve uitbuiting, publiek exploit, of EPSS-gegevens die bijdragen aan de score, en voor alle drie is een fix beschikbaar, wat eveneens meeweegt in de score.

Getroffen versies

@nestjs/microservices >= 12.0.0, < 12.0.2
kwetsbaar
≥ 11.2.4
gepatcht
≥ 12.0.2
gepatcht
@nestjs/platform-fastify >= 12.0.0, < 12.0.2
kwetsbaar
≥ 11.2.4
gepatcht
≥ 12.0.2
gepatcht
@nestjs/microservices >= 12.0.0, < 12.0.3
kwetsbaar
≥ 11.2.5
gepatcht
≥ 12.0.3
gepatcht

Gemelde oplossingen

Voor CVE-2026-102281: upgrade @nestjs/microservices naar 11.2.4 of 12.0.2. Voor GHSA-9c5c-9qcx-q35q: upgrade @nestjs/platform-fastify naar 12.0.2 of 11.2.4 (12.0.3 of 11.2.5 wordt aanbevolen); de fix verwijdert de gebundelde @fastify/middie-fork ten gunste van een afhankelijkheid van @fastify/middie 9.3.4, lost absolute-form targets op in de eigen routecontrole van de adapter, en integreert verouderde top-level Fastify router-opties in routerOptions zodat middleware en router paden identiek normaliseren. Als upgraden niet direct mogelijk is: registreer een Fastify onRequest-hook vóór initialisatie van de applicatie die elk request target weigert dat niet begint met '/' (en niet gelijk is aan '*', het legitieme target voor 'OPTIONS * HTTP/1.1'); het weigeren of normaliseren van absolute-form targets bij een reverse proxy is even effectief. Voor GHSA-96h4-vgxj-gvm2: upgrade @nestjs/microservices naar 12.0.3 of 11.2.5. De fix voegt een configureerbare stall-timer toe (incompleteMessageTimeout, standaard 30000ms) die een peer loskoppelt die midden in een pakket stilvalt, onderbreekt het lezen wanneer de uitgaande buffer van een peer vastloopt en hervat bij 'drain', en begrenst responses die in de wachtrij staan maar ongelezen blijven (maxSendBufferSize, standaard 128MB). Beide limieten staan standaard aan en kunnen worden uitgeschakeld door ze op 0 te zetten; applicaties die zeer grote responses streamen naar bewust trage consumenten moeten mogelijk maxSendBufferSize verhogen. Mitigaties voor GHSA-96h4-vgxj-gvm2 zijn onder meer: netwerktoegang tot de TCP-poort beperken, maxBufferSize verlagen (dit beperkt alleen de impact per verbinding, niet het totaal), of een eigen socketClass met eigen idle-timeout en backpressure-afhandeling aanleveren. Het instellen van een procesgeheugenlimiet verhelpt dit probleem niet; het verandert alleen een out-of-memory-crash van de host in een van het proces.

Hoe dit rapport is gemaakt

4 bronrecords zijn opgehaald, gekoppeld en gebruikt om het rapport hierboven op te stellen.

  • NVD (NIST) database
  • GitHub Advisory Database database
  • GitHub Advisory Database database
  • GitHub Advisory Database database
Eén rapport
Drie kwetsbaarheden in NestJS: microservice-crash, bypass van Fastify-middleware en ongelimiteerde geheugengroei
1 artikel · 4 bronnen geciteerd
Revisiegeschiedenis
  1. Gepubliceerd
  2. Gegenereerd
De Ochtendbriefing

Relevante veranderingen voor de stacks die je volgt.

Kies je stacks, onderwerpen en eventueel WordPress-plugins. Om 07:00 CEST worden passende meldingen en releases uit de rapportageperiode in één e-mail gegroepeerd.

✓ Kies stacks en onderwerpen✓ Pas voorkeuren altijd aan✓ Eén gebundelde e-mail