Gemiddeld · 4.9 Node.js & npm GHSA-x8mw-p69m-v3mx CVE-2026-19481 GHSA-xjh9-v7x6-24jw CVE-2026-19484
Twee Denial-of-Service-kwetsbaarheden verholpen in multipart-parser @fastify/busboy
Twee afzonderlijke Denial of Service-kwetsbaarheden (CVSS 7.5) in @fastify/busboy stellen niet-geauthenticeerde aanvallers in staat om Node.js-applicaties te laten crashen of vastlopen via speciaal geprepareerde multipart/form-data-verzoeken. Beide zijn verholpen in versie 3.2.1.
AI-samenvatting
Er zijn twee Denial of Service-kwetsbaarheden bekendgemaakt in @fastify/busboy, een veelgebruikte Node.js-bibliotheek voor het verwerken van multipart/form-data-verzoeken. Beide problemen kunnen door een niet-geauthenticeerde aanvaller op afstand worden veroorzaakt, zonder bijzondere rechten of gebruikersinteractie, en beide zijn verholpen in versie 3.2.1 van het pakket. Omdat de betreffende parsing-logica wordt uitgevoerd vóórdat applicatiemiddleware actief wordt, loopt elke dienst die multipart-formulieruploads via deze bibliotheek accepteert risico — zowel rechtstreeks als via @fastify/multipart.
Wat is er gebeurd
Er zijn twee afzonderlijke Denial of Service-kwetsbaarheden bekendgemaakt in het npm-pakket @fastify/busboy. CVE-2026-19481 (GHSA-x8mw-p69m-v3mx): De parser voor multipart-headers slaat namen van part-headers op in een gewoon JavaScript-object. Als een part-header de naam `__proto__` of `constructor` krijgt, verwijst deze naar een overgeërfde eigenschap in plaats van een array, waardoor de parser een TypeError gooit. Afhankelijk van de integratie uit dit zich als een `error`-event, of — bij direct gebruik van write()/end() — als een synchrone throw die het Node.js-proces kan laten crashen als deze niet wordt afgevangen. CVE-2026-19484 (GHSA-xjh9-v7x6-24jw): Het ingebouwde zoekalgoritme voor multipart-streaming slaat de standaard-skipafstand op in een vast array van 256 bytes. Een multipart-boundary van precies 252 bytes produceert een zoekpatroon van 256 bytes, waardoor een tabelwaarde terugloopt naar nul. Dit dwingt het zoekproces in een CPU-intensieve lus die de Node.js event loop laat vastlopen — en dit kan al met één klein verzoek worden veroorzaakt.
Technische oorzaak
CVE-2026-19481 valt onder CWE-754 (onjuiste afhandeling van uitzonderlijke omstandigheden): de parser controleert niet op part-headernamen die botsen met prototype-eigenschappen van JavaScript-objecten (`__proto__`, `constructor`), wat leidt tot een onafgehandelde typefout in plaats van veilige afwijzing of opschoning van de invoer. CVE-2026-19484 valt onder CWE-835 (lus met onbereikbare afsluitvoorwaarde / oneindige lus): een vaste opzoektabel die wordt gebruikt in het boundary-zoekalgoritme werkt niet correct bij een boundary-lengte van precies 252 bytes, waardoor de berekening van de skipafstand terugloopt en de zoeklus niet efficiënt kan worden beëindigd.
Waarom dit belangrijk is
Beide kwetsbaarheden hebben een CVSS-basisscore van 7.5 (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H), wat duidt op aanvallen die via het netwerk mogelijk zijn, met lage complexiteit, zonder vereiste rechten of gebruikersinteractie, met een hoge impact op beschikbaarheid en geen impact op vertrouwelijkheid of integriteit. Elke niet-geauthenticeerde client die een multipart/form-data-verzoek kan indienen, kan een van beide problemen veroorzaken. Omdat de multipart-parser wordt uitgevoerd vóórdat applicatiemiddleware actief wordt, bieden gangbare authenticatie- of autorisatiecontroles geen bescherming tegen misbruik.
Wie wordt getroffen
Applicaties die @fastify/busboy gebruiken om multipart/form-data te verwerken zijn getroffen, ongeacht of het pakket rechtstreeks of indirect via @fastify/multipart wordt gebruikt. CVE-2026-19481 treft versies vanaf 1.0.0 tot (maar niet met inbegrip van) 3.2.1. CVE-2026-19484 treft versies vanaf 3.1.0 tot (maar niet met inbegrip van) 3.2.1. Diensten die bestanden of formulieren accepteren van niet-geauthenticeerde of niet-vertrouwde clients lopen het grootste risico.
Getroffen versies
@fastify/busboy: CVE-2026-19481 treft versies >= 1.0.0 en < 3.2.1. CVE-2026-19484 treft versies >= 3.1.0 en < 3.2.1. Beide kwetsbaarheden zijn verholpen in versie 3.2.1.
Oplossingen en mitigatie
Beide kwetsbaarheden zijn verholpen in @fastify/busboy versie 3.2.1. Totdat deze update kan worden doorgevoerd, zijn er voor elk probleem afzonderlijke tijdelijke maatregelen beschikbaar. Voor CVE-2026-19481: koppel een `error`-event-listener aan de Busboy-stream zodat parserfouten netjes worden afgehandeld in plaats van het proces te laten crashen, en omring directe write()/end()-aanroepen met een try/catch-blok. Voor CVE-2026-19484: valideer de lengte van de multipart-boundary vóór het parsen en wijs elke boundary af die langer is dan de RFC 2046-limiet van 70 tekens, bijvoorbeeld via een reverse proxy of in een onRequest-hook. Upgraden naar versie 3.2.1 verhelpt beide problemen volledig en is de aanbevolen langetermijnoplossing.
Aanbevolen actie
Upgrade @fastify/busboy zo snel mogelijk naar versie 3.2.1, ook als het pakket indirect wordt gebruikt via @fastify/multipart. Als directe upgrade niet mogelijk is, pas dan de genoemde tijdelijke maatregelen toe: voeg error-event-afhandeling en try/catch-bescherming toe rond direct streamgebruik, en handhaaf validatie van de boundary-lengte op het niveau van verzoekverwerking.
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
Beide kwetsbaarheden hebben een CVSS-score van 7.5 (Hoog), bepaald door een netwerk-aanvalsvector, lage aanvalscomplexiteit, geen vereiste rechten, geen gebruikersinteractie, en een hoge impact op beschikbaarheid zonder impact op vertrouwelijkheid of integriteit. De PatchBriefing-score van 4.9 voor elk van beide weerspiegelt de bijdrage van de CVSS-basisscore, aangevuld met extra gewicht voor niet-geauthenticeerde exploiteerbaarheid op afstand en het ontbreken van vereiste gebruikersinteractie. Er zijn geen aanwijzingen dat een van beide kwetsbaarheden actief wordt misbruikt, en er is op het moment van publicatie geen publiek beschikbare exploitcode gemeld voor een van beide problemen.
Getroffen versies
- @fastify/busboy >= 1.0.0, < 3.2.1
- kwetsbaar
- ≥ 3.2.1
- gepatcht
- @fastify/busboy >= 3.1.0, < 3.2.1
- kwetsbaar
- ≥ 3.2.1
- gepatcht
Gemelde oplossingen
Beide kwetsbaarheden zijn verholpen in @fastify/busboy versie 3.2.1. Totdat deze update kan worden doorgevoerd, zijn er voor elk probleem afzonderlijke tijdelijke maatregelen beschikbaar. Voor CVE-2026-19481: koppel een `error`-event-listener aan de Busboy-stream zodat parserfouten netjes worden afgehandeld in plaats van het proces te laten crashen, en omring directe write()/end()-aanroepen met een try/catch-blok. Voor CVE-2026-19484: valideer de lengte van de multipart-boundary vóór het parsen en wijs elke boundary af die langer is dan de RFC 2046-limiet van 70 tekens, bijvoorbeeld via een reverse proxy of in een onRequest-hook. Upgraden naar versie 3.2.1 verhelpt beide problemen volledig en is de aanbevolen langetermijnoplossing.
Hoe dit rapport is gemaakt
2 bronrecords zijn opgehaald, gekoppeld en gebruikt om het rapport hierboven op te stellen.
-
GitHub Advisory Database database
-
GitHub Advisory Database database
Revisiegeschiedenis
- Gepubliceerd
- Gegenereerd
Gerelateerd
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