multer vulnerable to Denial of Service via a pending asynchronous fileFilter after request teardown
multer is a middleware for Node.js that handles multipart/form-data file uploads. In versions from 2.0.0 before 2.5.0, when multer is configured with an asynchronous fileFilter, a single request can crash the Node.js process. If the request is aborted while one file's asynchronous fileFilter is still pending, the pending callback later resumes a parsing stream that multer has already torn down, and the underlying parser emits an error on a stream that no longer has an error listener, which Node raises as an unhandled error event so the process exits. Any application using multer with an asynchronous fileFilter is affected regardless of storage engine, while uploads using a synchronous fileFilter are not affected. The issue is fixed in multer 2.5.0, and users should upgrade to 2.5.0 or later. As a workaround, use a synchronous fileFilter.
- Products
- Not specified
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2026-113872
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 2 Nov 2026, 20:21 UTC · Revision 1
Source evidence
multer vulnerable to Denial of Service via a pending asynchronous fileFilter after request teardown
core-osv · Original sourcePublished 22 Oct 2026, 14:20 UTC
multer is a middleware for Node.js that handles multipart/form-data file uploads. In versions from 2.0.0 before 2.5.0, when multer is configured with an asynchronous fileFilter, a single request can crash the Node.js process. If the request is aborted while one file's asynchronous fileFilter is still pending, the pending callback later resumes a parsing stream that multer has already torn down, and the underlying parser emits an error on a stream that no longer has an error listener, which Node raises as an unhandled error event so the process exits. Any application using multer with an asynchronous fileFilter is affected regardless of storage engine, while uploads using a synchronous fileFilter are not affected. The issue is fixed in multer 2.5.0, and users should upgrade to 2.5.0 or later. As a workaround, use a synchronous fileFilter.
osv:CVE-2026-113872
Complete source record
{
"id": "3625803897e9674bd64d63776cdaedef1ae08f97d3e04cef22130b8be09e0605",
"url": "https://osv.dev/vulnerability/CVE-2026-113872",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "multer vulnerable to Denial of Service via a pending asynchronous fileFilter after request teardown",
"summary": "multer is a middleware for Node.js that handles multipart/form-data file uploads. In versions from 2.0.0 before 2.5.0, when multer is configured with an asynchronous fileFilter, a single request can crash the Node.js process. If the request is aborted while one file's asynchronous fileFilter is still pending, the pending callback later resumes a parsing stream that multer has already torn down, and the underlying parser emits an error on a stream that no longer has an error listener, which Node raises as an unhandled error event so the process exits. Any application using multer with an asynchronous fileFilter is affected regardless of storage engine, while uploads using a synchronous fileFilter are not affected. The issue is fixed in multer 2.5.0, and users should upgrade to 2.5.0 or later. As a workaround, use a synchronous fileFilter.",
"evidence": "osv:CVE-2026-113872",
"products": [],
"severity": "high",
"structured": {
"id": "CVE-2026-113872",
"aliases": [
"CVE-2026-113872",
"GHSA-q7qp-rjg7-q26m"
],
"metrics": [
{
"type": "CVSS_V3",
"score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://github.com/expressjs/multer",
"type": "GIT",
"events": [
{
"introduced": "2c8505f207d923dd8de13a9f93a4563e59933665"
},
{
"fixed": "2c380d06cdaacc68bbef8b36244493a3d33d6b88"
}
],
"database_specific": {
"extracted_events": [
{
"range": [
{
"introduced": "2.0.0"
},
{
"fixed": "2.5.0"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StandardRange"
},
{
"range": [
{
"introduced": "2.0.0"
},
{
"fixed": "2.5.0"
}
],
"source": "DESCRIPTION"
}
]
}
}
],
"versions": [
"v2.4.0",
"v2.3.0",
"v2.2.0",
"v2.1.1",
"v2.1.0",
"v2.0.2",
"v2.0.1",
"v2.0.0"
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-113872.json"
}
}
],
"modified": "2026-10-28T02:30:23.362122049Z",
"provider": "osv",
"references": [
"https://cna.openjsf.org/security-advisories.html",
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/113xxx/CVE-2026-113872.json",
"https://github.com/expressjs/multer/security/advisories/GHSA-q7qp-rjg7-q26m",
"https://nvd.nist.gov/vuln/detail/CVE-2026-113872"
],
"provider_metadata": {
"cwe_ids": [
"CWE-248",
"CWE-404"
],
"cna_assigner": "openjs",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/113xxx/CVE-2026-113872.json"
}
},
"related_cves": [
{
"value": "CVE-2026-113872",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 489792,
"published_at": "2026-10-22T14:20:18.363+00:00"
}