form-data-objectizer Prototype Pollution Vulnerability (CVE-2026-46510)
The form-data-objectizer npm package version 1.0.0 is vulnerable to prototype pollution (CVE-2026-46510) via crafted form keys, allowing an attacker to modify Object.prototype and potentially cause denial-of-service, bypass security checks, or inject unintended values.
The form-data-objectizer npm package, version 1.0.0, is susceptible to prototype pollution. This vulnerability arises because the library processes bracket-notation form keys (e.g., name[sub]) without properly sanitizing special property names like __proto__, constructor, or prototype. By crafting a specific HTTP form field with a name starting with __proto__[...], an attacker can modify the Object.prototype. This can lead to a range of security issues. This vulnerability was reported on May 18, 2026, and affects Node.js applications using the form-data-objectizer.toObject() function to parse incoming form data. The injected properties persist across requests handled by the same process, magnifying the impact.
Attack Chain
- An attacker crafts a malicious HTTP form request containing a field with a key starting with
__proto__, for example,__proto__[polluted]=yes. - The Node.js application receives the HTTP request and uses the
form-data-objectizerlibrary to parse the form data. - The
toObject()function inform-data-objectizercalls thetreatInitialfunction to process the form data. - The
treatInitialfunction identifies the__proto__property and retrieves the corresponding value, which isObject.prototype. - The
treatSecondfunction is then called recursively with the remaining part of the key, such aspolluted. - The
treatSecondfunction directly assigns the attacker-controlled value toObject.prototype[polluted], polluting the prototype. - All subsequently created objects in the Node.js process inherit the polluted property.
- The attacker achieves their objective by modifying application behavior or causing a denial-of-service by exploiting the polluted prototype.
Impact
Successful exploitation of this vulnerability allows an attacker to pollute the prototype of all objects in the Node.js process. This can lead to various consequences, including bypassing if (obj.isAdmin) style checks, injecting unintended config values into objects merged with user input, breaking template rendering, and crashing the worker process due to modifications of properties used by other libraries. The vulnerability affects any application using form-data-objectizer to parse form data, potentially impacting a wide range of Node.js applications. An unauthenticated attacker can trigger this with a single HTTP request.
Recommendation
- Apply the suggested patch provided in the advisory to reject any form key segment equal to
__proto__,constructor, orprototypeinform-data-objectizerto mitigate CVE-2026-46510. - Deploy the Sigma rule “Detect Prototype Pollution via form-data-objectizer” to identify exploitation attempts in web server logs.
- Monitor web server logs for suspicious POST requests containing form fields with names starting with
__proto__,constructor, orprototype. - Consider using
Object.create(null)for the result object as a preventative measure, but ensure to also guard against direct writes to__proto__as described in the advisory.
Detection coverage 2
Detect Prototype Pollution via form-data-objectizer
highDetects CVE-2026-46510 exploitation — Prototype pollution attempt via form-data-objectizer by detecting '__proto__' in cs-uri-query.
Detect Prototype Pollution via constructor.prototype
highDetects CVE-2026-46510 exploitation — Prototype pollution attempt via form-data-objectizer by detecting 'constructor[prototype]' in cs-uri-query.
Detection queries are available on the platform. Get full rules →