
Cloud Vulnerability DB
A community-led vulnerabilities database
CVE-2026-41690 is a prototype pollution vulnerability in i18next-http-middleware, a Node.js middleware used with web frameworks such as Express and Fastify. Versions prior to 3.9.3 allow an unauthenticated HTTP client to pollute Object.prototype in the hosting Node.js process via two unvalidated entry points: getResourcesHandler and missingKeyHandler. The vulnerability was published on May 8, 2026, with the security advisory authored by the i18next maintainer. It carries a CVSS v3.1 base score of 8.6 (High) (GitHub Advisory).
The root cause is classified as CWE-1321 (Improperly Controlled Modification of Object Prototype Attributes — Prototype Pollution) and CWE-22 (Path Traversal). In getResourcesHandler, the lng and ns query parameters are read without validation and passed to utils.setPath(resources, [lng, ns], value), which walks the key path without guarding against __proto__, constructor, or prototype keys — allowing a crafted GET request such as GET /locales/resources.json?lng=__proto__&ns=isAdmin to write directly into Object.prototype. In missingKeyHandler, a for...in loop iterates over the incoming JSON request body, meaning a POST body like {"__proto__": {"isAdmin": true}} is forwarded into i18next.services.backendConnector.saveMissing, achieving the same pollution via a different vector. No authentication or special privileges are required, and no user interaction is needed (GitHub Advisory).
After a single unauthenticated request, every subsequently created {} object in the Node.js process inherits the polluted prototype property, with process-wide and persistent effect until the server restarts. The most immediate impact is authorization bypass — for example, if (user.isAdmin) evaluates to true for all users, effectively granting any unauthenticated user administrative privileges. Additionally, type-confusion denial of service can be triggered in downstream code that reads unexpected prototype-chain properties, and depending on how the application uses polluted objects, the vulnerability can be chained into remote code execution (GitHub Advisory, The Hacker Wire).
As of the time of publication, there is no public proof-of-concept exploit and no confirmed in-the-wild exploitation (GitHub Advisory). The EPSS score is approximately 0.075%, indicating a currently low probability of exploitation in the near term. The vulnerability is not listed in the CISA Known Exploited Vulnerabilities (KEV) catalog. However, the low attack complexity — requiring no authentication, no user interaction, and only a single HTTP request — makes it straightforward to exploit if a PoC is released.
i18next-http-middleware versions prior to 3.9.3 by inspecting HTTP response headers, JavaScript bundle references, or package manifests (e.g., package.json exposed via misconfiguration).__proto__ as the language parameter and the desired property as the namespace: GET /locales/resources.json?lng=__proto__&ns=isAdmin__proto__ key to the missing key handler endpoint: POST /locales/add/en/translation with body {"__proto__": {"isAdmin": true}}Object.prototype.isAdmin is now true by observing application behavior — e.g., accessing admin-only endpoints without credentials.child_process calls, or serialization libraries susceptible to prototype pollution gadgets) (GitHub Advisory)./locales/resources.json (or equivalent resource endpoint) with lng=__proto__, lng=constructor, or lng=prototype in query parameters; POST requests to missing key handler endpoints with JSON bodies containing __proto__, constructor, or prototype keys.__proto__ or constructor in query string parameters or URL-encoded equivalents (%5F%5Fproto%5F%5F); repeated requests to i18next resource or missing-key endpoints from a single IP.true for all users; application crashes or type errors in downstream code following unusual HTTP requests.The primary remediation is to upgrade i18next-http-middleware to version 3.9.3 or later, which patches both vulnerable entry points: utils.setPath now blocks __proto__, constructor, and prototype keys, and missingKeyHandler replaces for...in iteration with Object.keys() plus an explicit dangerous-key guard. No complete workaround exists short of upgrading; however, as a partial mitigation, a WAF rule can be deployed to reject requests containing __proto__, constructor, or prototype in lng/ns query parameters or JSON body keys. Input validation and sanitization of all user-supplied parameters should also be implemented as a defense-in-depth measure (GitHub Advisory).
The Hacker Wire published a write-up highlighting the RCE potential of the vulnerability, drawing attention to the prototype pollution chain (The Hacker Wire). The advisory was noted on Bluesky via the CVE tracking account shortly after publication. Overall community reaction has been moderate, consistent with a library-level vulnerability that requires downstream code conditions to reach its most severe impact.
Source: This report was generated using AI
Free Vulnerability Assessment
Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.
Get a personalized demo
"Best User Experience I have ever seen, provides full visibility to cloud workloads."
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
"We know that if Wiz identifies something as critical, it actually is."