{"id":"CVE-2026-19481","aliases":["GHSA-x8mw-p69m-v3mx"],"title":"@fastify/busboy vulnerable to Denial of Service via prototype-named multipart part header","summary":"@fastify/busboy vulnerable to Denial of Service via prototype-named multipart part header","severity":"high","cvss":7.5,"cwe":["CWE-754"],"vendor":"fastify","product":"@fastify/busboy","ecosystem":"npm","affected":["@fastify/busboy >= 1.0.0, < 3.2.1"],"patched":["@fastify/busboy 3.2.1"],"published":"2026-10-02","updated":"2026-10-02","sourceUpdated":"2026-10-02T23:17:27Z","source":"GHSA","sourceUrl":"https://github.com/advisories/GHSA-x8mw-p69m-v3mx","references":[{"url":"https://github.com/fastify/busboy/security/advisories/GHSA-x8mw-p69m-v3mx"},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-19481"},{"url":"https://github.com/fastify/busboy/commit/957a24b66d5915e6d0a6ac988c9dbcee86373e9b"},{"url":"https://cna.openjsf.org/security-advisories.html"},{"url":"https://github.com/fastify/busboy/releases/tag/v3.2.1"},{"url":"https://github.com/advisories/GHSA-x8mw-p69m-v3mx"}],"tags":["ghsa","npm"],"epss":0.00493,"epssPercentile":0.40151,"ingestedAt":"2026-10-02T23:34:57.391Z","slug":"CVE-2026-19481","body":"## Overview\n\n### Impact\n\nVersions of `@fastify/busboy` from 1.0.0 and prior to 3.2.1 are vulnerable to a Denial of Service. The multipart header parser stores part-header names on a plain JavaScript object, so a part header named `__proto__` or `constructor` resolves to an inherited value that is not an array, and the parser throws `TypeError: this.header[h].push is not a function`. Through the documented `req.pipe(busboy)` integration this surfaces as an `error` event, while direct `write()`/`end()` usage throws synchronously and can terminate the Node.js process if uncaught. The parser runs before application middleware, so any unauthenticated client that can submit multipart/form-data is affected.\n\n### Patches\n\nFixed in version 3.2.1.\n\n### Workarounds\n\nAttach an `error` listener to the Busboy stream so the parser failure is handled rather than crashing the process, and wrap direct `write()`/`end()` calls in a try/catch. Upgrading to 3.2.1 removes the failure entirely.\n\n## Affected packages\n\n- `@fastify/busboy >= 1.0.0, < 3.2.1`\n\n## Remediation\n\nUpgrade to a patched release:\n\n- `@fastify/busboy 3.2.1`","depth":"twilight","depthScore":41,"depthScoreParts":{"impact":41.3,"likelihood":0.1,"exploitation":0,"ransomware":0},"changes":[]}