{"id":"CVE-2026-113872","aliases":["GHSA-q7qp-rjg7-q26m"],"title":"multer vulnerable to Denial of Service via a pending asynchronous fileFilter after request teardown","summary":"multer vulnerable to Denial of Service via a pending asynchronous fileFilter after request teardown","severity":"high","cvss":7.5,"cwe":["CWE-248","CWE-404"],"vendor":"multer","product":"multer","ecosystem":"npm","affected":["multer >= 2.0.0, < 2.5.0"],"patched":["multer 2.5.0"],"published":"2026-10-23","updated":"2026-10-23","sourceUpdated":"2026-10-23T22:08:22Z","source":"GHSA","sourceUrl":"https://github.com/advisories/GHSA-q7qp-rjg7-q26m","references":[{"url":"https://github.com/expressjs/multer/security/advisories/GHSA-q7qp-rjg7-q26m"},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-113872"},{"url":"https://github.com/expressjs/multer/commit/80a2d9df1dfd63b5fab631b8b9966164ed647adf"},{"url":"https://cna.openjsf.org/security-advisories.html"},{"url":"https://github.com/expressjs/multer/releases/tag/v2.5.0"},{"url":"https://github.com/advisories/GHSA-q7qp-rjg7-q26m"},{"url":"https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-113872.json"},{"url":"https://access.redhat.com/security/cve/CVE-2026-113872"},{"url":"https://bugzilla.redhat.com/show_bug.cgi?id=2559046"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-113872"}],"tags":["ghsa","npm","exploit-available","csaf","vex","red-hat","cve.org"],"epss":0.00442,"epssPercentile":0.38188,"exploits":{"github":1,"githubRepos":["https://github.com/santihabib/multer-CVE-2026-113872"],"checkedAt":"2026-10-27T16:58:00.981Z"},"exploitAvailable":true,"ssvc":{"exploitation":"none","automatable":"yes","technicalImpact":"partial","timestamp":"2026-10-22T18:26:56.734787Z"},"ingestedAt":"2026-10-22T22:00:50.375Z","slug":"CVE-2026-113872","body":"## Overview\n\n### Impact\n\nWhen `multer` is configured with an asynchronous `fileFilter`, a single request can crash the Node.js process. If a request is aborted (for example when one file is rejected) while another file's async `fileFilter` is still pending, the pending callback later resumes a parsing stream that multer has already torn down. busboy then emits an error on a stream that no longer has an error listener, which Node raises as an unhandled `'error'` event, and the process exits. A single unauthenticated request is enough, so any application using `multer` with an asynchronous `fileFilter` is affected, regardless of storage engine. Uploads using a synchronous `fileFilter` are not affected.\n\n### Patches\n\nUsers should upgrade to `multer` `2.5.0` or later.\n\n### Workarounds\n\nUse a synchronous `fileFilter`.\n\n## Affected packages\n\n- `multer >= 2.0.0, < 2.5.0`\n\n## Remediation\n\nUpgrade to a patched release:\n\n- `multer 2.5.0`\n\n## Vendor advisories\n\n- **Red Hat VEX** · Important · affected: Red Hat 3scale API Management Platform 2, Red Hat Developer Hub, Self-service automation portal 2 · no fix planned: Red Hat 3scale API Management Platform 2, Red Hat Developer Hub, Self-service automation portal 2 · updated 2026-10-22 · [vex](https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-113872.json)","depth":"midnight","depthScore":53,"depthScoreParts":{"impact":41.3,"likelihood":0.1,"exploitation":12,"ransomware":0},"changes":[{"seq":228251,"id":"CVE-2026-113872","ts":1792758250206,"field":"exploit_available","old":"false","new":"true"}]}