CVE-2026-3304 is a denial-of-service vulnerability in Multer, a Node.js middleware used to process multipart/form-data requests. Versions prior to 2.1.0 are affected. The flaw can be triggered by sending malformed multipart requests that cause improper resource handling and resulting resource exhaustion. Available classification data associates the issue with CWE-459, indicating incomplete cleanup of resources. Successful exploitation can cause the application process to consume excessive resources and become unavailable.
Mallory correlates every CVE against your assets, your vendors, and active adversary campaigns. Know which vulnerabilities matter for you, not just which ones are loud.
What it means. What to do now. Patch path, mitigations, and the assume-compromise checklist.
What an attacker gets, and what they’ve been doing with it.
If you can’t patch tonight, do this now.
Patch, then assume compromise.
1 valid exploit after Mallory filtered fakes, detection scripts, and README-only repos.
Repository purpose: a self-contained lab to reproduce and demonstrate CVE-2026-3304 (Multer < 2.1.0) orphaned temporary file cleanup bug leading to disk-exhaustion DoS. High-level behavior: - The vulnerable Express app (`app/server.js`) uses Multer with `dest: /tmp/uploads` and an intentionally *async* `fileFilter` implemented via `setImmediate`. This matches the vulnerable timing window described in the README. - The exploit sends a crafted `multipart/form-data` request containing: 1) a valid file part with `name="file"` to ensure Multer opens/writes a temp file; 2) a second file part missing the required `name` attribute, causing Multer to error (typically 500 “Field name missing”). - In vulnerable Multer versions, the error path fails to clean up the already-created temp file, leaving an orphaned file on disk. Repetition accumulates files and consumes storage, producing DoS. Repository structure (9 files): - Containerization/lab setup: - `Dockerfile`: builds vulnerable Node 20 Alpine image, installs dependencies from `app/package.json`, exposes 3000. - `Dockerfile.patched`: same but forces `multer@2.1.0` to demonstrate the fix. - `docker-compose.yml`: runs two services: - `vulnerable-app` mapped to host `3000:3000`, tmpfs `/tmp/uploads` limited to 50MB. - `patched-app` mapped to host `3001:3000`, same tmpfs limit. - Vulnerable application: - `app/package.json`: depends on `express` and `multer` pinned to `2.0.2` (vulnerable). - `app/server.js`: implements endpoints: - `POST /upload` (vulnerable path) using `upload.single('file')`. - `GET /status` returns JSON with `orphaned_files` and `total_size_*` for monitoring. - `DELETE /reset` deletes files in `/tmp/uploads` (lab convenience). - Exploit tooling: - `exploit/exploit.py`: operational DoS script using `requests`; parameters: `--target`, `--count`, `--delay`, `--size`, `--no-verify`. Crafts raw multipart body and repeatedly POSTs to `/upload`, periodically polling `/status`. - `exploit/curl_poc.sh`: single-request PoC using raw multipart body piped to curl; shows `/status` before/after. - `exploit/monitor.sh`: loops and prints time-series of `/status` values (orphaned file count and disk used). Exploit capabilities: - Remote, unauthenticated network DoS against a reachable upload endpoint using vulnerable Multer configuration. - Disk consumption is controllable via request count and per-request payload size. - Includes monitoring and reset helpers (lab-specific) to observe and reproduce the impact. Notable observables/fingerprintable targets: - HTTP endpoints: `/upload`, `/status`, `/reset` (default base `http://localhost:3000`, patched comparison on `http://localhost:3001`). - File system target: `/tmp/uploads` where orphaned temp files accumulate. Overall assessment: - This is a real PoC/operational DoS reproducer (not just detection). It does not provide RCE or data exfiltration; the primary impact is resource exhaustion via orphaned temp files in Multer < 2.1.0 under async `fileFilter` timing.
Products and vendors Mallory has correlated with this vulnerability. Open in Mallory to drill down to specific CPE configurations and version ranges.
Vendor-confirmed product mapping. Mallory continuously reconciles this list against your asset inventory.
12 sources tracked across advisories, community write-ups, and news. New activity surfaces here as Mallory finds it.
The supplied CVSS vectors describe a remotely exploitable vulnerability requiring no privileges or user interaction, with high availability impact and no confidentiality or integrity impact. Exploits and a patch are available. The affected product and underlying flaw are not identified in the content.
A previously disclosed multer denial-of-service vulnerability caused by incomplete cleanup of resources, leaving orphaned memory or file descriptors.
A denial-of-service vulnerability in the Multer Node.js middleware (pre-2.1.0) where malformed multipart/form-data requests can cause resource exhaustion.
Query your assets running an affected version, and investigate the blast radius.
Every observed campaign linking this CVE to a named adversary.
Malware families riding this exploit, with evidence and IOCs.
YARA, Sigma, Snort, and vendor rules, auto-deployed to your SIEM.
Cross-references every affected SKU, including bundled OEM variants.
Community discussion across Reddit, Mastodon, and other social sources.