Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSend POST request with __proto__ key in form body
-
DeliveryparseBody with dot:true deserializes __proto__ as nested object key
-
ExploitApplication performs unsafe deep-merge of parsed output
-
ExecutionObject.prototype polluted with attacker-controlled properties
-
PersistAll plain objects globally inherit injected properties
-
ImpactAuthorization or logic checks bypassed
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V3 - Web Frontend Security Prototype pollution prevention
MITRE ATT&CK
2 techniques across 2 tactics: Execution, Initial Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Three concurrent conditions must be present for exploitation: (1) the target Hono route must call parseBody with the 'dot' option explicitly set to true - this is a non-default setting that must be deliberately opted into by the developer; (2) the application must pass the parsed body result into a plain JavaScript object merge using an unsafe pattern such as recursive Object.assign, lodash _.merge, or an equivalent custom deep-merge function that does not filter '__proto__'; and (3) the attacker must be able to send HTTP requests with attacker-controlled form body content to that endpoint (Content-Type: application/x-www-form-urlencoded or multipart/form-data). Exploitation is not possible against Hono routes that use the default parseBody configuration (dot:false), against endpoints that validate or sanitize parsed keys before merging, or against applications using prototype-safe merge patterns. The CVSS 4.0 AT:P metric confirms the presence of a specific attack prerequisite beyond mere network access. |
| Impact | The CVSS 4.0 vector (AV:N/AC:H/AT:P/PR:N/UI:N/VC:L/VI:L/VA:N) accurately encodes the dual constraints limiting real-world exploitability: high attack complexity and a specific attack prerequisite (AT:P) requiring both the non-default dot:true parseBody configuration AND an unsafe downstream merge pattern in application code. Neither condition is present in default Hono deployments, making the actual attack surface narrower than the network-accessible delivery vector might suggest. Impact is bounded at VC:L/VI:L - prototype pollution in JavaScript server contexts can enable logic bypasses and subtle data leakage but direct code execution is uncommon without a specific gadget chain. No EPSS score is provided in the input data; given the absence of KEV listing or public POC, opportunistic mass exploitation is unlikely. SSVC factors are not explicitly provided, but automatability is constrained by the AT:P prerequisite, reducing spray-and-pray viability. This is a meaningful vulnerability for Hono applications using dot:true with unsafe merge patterns, but not a broadly exploitable critical issue across all Hono deployments. |
| Exploit ScenarioDerived | An attacker submits an HTTP POST request with Content-Type application/x-www-form-urlencoded to a Hono endpoint that calls parseBody with { dot: true }, encoding a field such as '__proto__[isAdmin]=true' in the body. Hono deserializes this into a nested object with a __proto__ property, and when the application merges the result using an unsafe deep merge, Object.prototype.isAdmin becomes true for all plain objects in the process - causing downstream authorization checks like 'if (user.isAdmin)' to pass for any user. No public POC exploit code has been identified at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jul 11, 2026
Prototype pollution in Hono before 4.12.7 enables unauthenticated remote attackers to inject properties into JavaScript's Object.prototype by submitting crafted form field names containing '__proto__' keys when the 'dot' option is enabled in parseBody. Exploitation is conditional - it further requires that application code merges parsed body output into plain JavaScript objects using unsafe merge patterns - but when both conditions are present, attackers can silently alter inherited object behavior across the entire runtime, potentially bypassing authorization checks or leaking sensitive data. No public exploit code or CISA KEV listing exists at time of analysis; the CVSS 4.0 score of 6.3 reflects limited impact and the attack prerequisite of the non-default dot option being enabled.
RemediationAI
Upgrade Hono to version 4.12.7 or later, which patches '__proto__' key handling in the parseBody function per the vendor advisory at https://github.com/honojs/hono/security/advisories/GHSA-v8w9-8mx6-g223. If an immediate upgrade is not feasible, disable the 'dot' option in all parseBody invocations - omit it entirely or explicitly pass { dot: false }, since false is the default; note this will change how nested form fields are interpreted and may require application logic adjustments. As a complementary control, audit all code paths that merge parseBody output into plain objects and replace unsafe merge patterns (recursive Object.assign, lodash _.merge) with prototype-safe alternatives such as sanitizing keys against a blocklist including '__proto__', 'constructor', and 'prototype' before merging, or using JSON.parse(JSON.stringify(obj)) to strip non-enumerable prototype keys prior to any merge operation.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in npm
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Hono (CPE: cpe:2.3:a:hono:hono:*:*:*:*:*:*:*:*) is a fast, lightweight web framework targeting JavaScript runtimes including Cloudflare Workers, Deno, Bun, and Node.js. The root cause is CWE-1321 (Improperly Controlled Modification of Object Prototype Attributes), located in the parseBody utility function. When the 'dot' option is enabled, Hono interprets dot-notation form field keys (e.g., 'a.b.c') as nested object paths. Because the parser does not block '__proto__' as a reserved key, a crafted field name such as '__proto__[isAdmin]=true' or '__proto__.polluted=1' passes through deserialization unfiltered. If the resulting parsed object is then merged into an application-managed plain object using an unsafe operation - recursive Object.assign, lodash _.merge, or custom deep-merge - the injected '__proto__' properties propagate up the JavaScript prototype chain and become globally inherited by all plain objects in the process. This is the classic prototype pollution sink pattern described in CWE-1321.
Know when Hono gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N
Network delivery via HTTP form body, but high complexity due to non-default dot:true config and unsafe merge precondition both required; no authentication or user interaction needed; limited C and I impact, no availability impact.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
1DescriptionCVE.org
Hono before 4.12.7 allows __proto__ key in parseBody with dot option enabled, permitting specially crafted form field names to create objects with __proto__ properties. When parsed results are merged into regular JavaScript objects using unsafe merge patterns, attackers can exploit this to achieve prototype pollution and modify object behavior.
Blast Radius
ecosystem impact- 79 npm packages depend on hono (65 direct, 14 indirect)
Ecosystem-wide dependent count for version 4.12.7.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Improper authorization in Hono's JWT Auth Middleware (hono/jwt in the npm package 'hono', versions 1.1.0 through 4.10.1)
The adapter @hono/node-server allows you to run your Hono application on Node.js. Rated high severity (CVSS 7.5), this v
Hono, a web framework, prior to version 4.6.5 is vulnerable to bypass of cross-site request forgery (CSRF) middleware by
Quadratic-complexity denial of service in Hono's `languageDetector` middleware (versions 4.12.0-4.12.33) allows unauthen
Path prefix stripping in Hono's app.mount() API exposes mounted sub-applications to incorrect routing due to a raw-vs-de
Hono is a Web application framework that provides support for any JavaScript runtime. Rated medium severity (CVSS 5.3),
@hono/node-server is an adapter that allows users to run Hono applications on Node.js. Rated medium severity (CVSS 5.3),
Hono is a Web application framework that provides support for any JavaScript runtime. Rated medium severity (CVSS 5.0),
Cross-user HTML disclosure in Hono's server-side rendering affects all applications using hono/jsx with memo()-wrapped c
Hono is a web framework written in TypeScript. Rated medium severity (CVSS 4.3), this vulnerability is remotely exploita
Hono is a Web application framework that provides support for any JavaScript runtime. [CVSS 8.2 HIGH]
Hono versions before 4.11.4 allow JWT algorithm confusion attacks through improper algorithm validation in the JWK/JWKS
EUVD-2026-43173
GHSA-3wcj-gjvf-fvch
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB