Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify runtime forwarding raw `#` to Hono server
-
DeliverySend request with `#?param=<payload>` to cached route
-
ExploitHono query helper reads fragment-as-query parameter
-
ExecutionCache Middleware stores response under fragment-stripped key
-
PersistSubsequent users receive poisoned response
-
ImpactXSS payload executes in victim browser
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V4 - API and Web Service HTTP request consistency
|
| Exploitation Conditions | Exploitation requires all three of the following conditions to be true simultaneously: (1) the Hono application runs on a runtime and behind intermediaries that forward the literal |
| Impact | The provided CVSS 5.9 (AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N) captures the cache-poisoning primitive accurately but understates the worst-case impact path: when the application reflects fragment-readable parameters into cached HTML without escaping, the result is stored XSS, which crosses a scope boundary into the victim's browser and enables confidentiality impact via session or credential theft. Accounting for stored XSS raises the effective severity. However, AC:H is well-justified and significantly limits practical risk: the attack requires a runtime and network path that forward the literal |
| Exploit ScenarioDerived | An attacker targeting a Node.js-hosted Hono application with the Cache Middleware enabled sends a GET request to a cached HTML route with a URL such as |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 01, 2026
Cache poisoning and stored XSS in Hono (all versions before 4.13.5) stem from the framework's query helpers treating a literal #? sequence as a query string, creating a parser discrepancy between the application and every other layer - browsers, reverse proxies, WAFs, access logs, and validation middleware - that correctly ignores fragments. The Cache Middleware compounded this by stripping fragments when building cache keys, so a response shaped by fragment-injected parameters gets stored and served to subsequent users under a key that omits those parameters entirely. No public exploit code has been identified at time of analysis, and exploitation is gated by the requirement that the runtime and intermediary pass raw # characters through to the application.
RemediationAI
Upgrade to Hono 4.13.5, available at https://github.com/honojs/hono/releases/tag/v4.13.5, which patches both the URL parsing helpers and the Cache Middleware cache-key logic. The fix commit is 9c28d724c5a7fb086ebaa812fdc1ad6e957c63bc. If immediate upgrade is not possible, two compensating controls apply: first, disable the Cache Middleware (cache()) on any route where query parameters are reflected into HTML responses - this eliminates the cache-poisoning amplification, though the parameter-smuggling discrepancy remains; second, deploy behind an intermediary (e.g., Cloudflare, or an nginx proxy_pass configuration that normalizes URLs) that strips fragment components before forwarding, which eliminates the attack vector entirely. The intermediary-based control is effective but should not substitute for patching, as it relies on infrastructure configuration remaining stable. Regardless of upgrade status, audit all routes that call c.req.query() and reflect values into HTML output for missing output escaping.
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:honojs:hono:*:*:*:*:*:*:*:*) is a lightweight TypeScript/JavaScript web framework targeting Cloudflare Workers, Bun, Deno, and Node.js. The root cause (CWE-444, Inconsistent Interpretation of HTTP Requests) is in src/utils/url.ts: the legacy getQueryStrings, getQueryParam, and getQueryParams helpers tokenized URLs using only the ? character as a delimiter, without first truncating at #. RFC 3986 mandates that fragments are never transmitted by compliant clients or intermediaries, but certain runtimes and proxies forward the raw # byte. When they do, a URL like http://example.com/#?name=payload caused Hono to parse ?name=payload as a real query string. Simultaneously, the Cache Middleware's createCacheKey in src/middleware/cache/index.ts called .split('#', 1)[0] on the cache key, stripping the fragment - so the poisoned response was stored under the clean URL and served to all users hitting that cache entry. The fix (commit 9c28d724c5a7fb086ebaa812fdc1ad6e957c63bc) adds a pre-truncation step in the URL helpers and removes the fragment-stripping split in cache key construction.
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
AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N
AC:H for runtime prerequisite; stored XSS crosses scope (S:C, UI:R); C:L for session exfiltration potential; I:H for full cache-response substitution.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
Hono is a Web application framework that provides support for any JavaScript runtime. Prior to 4.13.5, Hono's query helpers treat a question mark after a literal hash fragment as the start of a query string, so the application can read request parameters that browsers, new URL(), reverse proxies, filtering rules, parameter allow and deny lists, access logging, request validation, and other middleware do not observe. The Cache Middleware removes the fragment when building its cache key, allowing a response influenced by parameters inside the fragment to be stored under a key that omits those parameters and later served to other users. This can bypass filtering and auditing, poison cached responses, and enable stored cross-site scripting when an affected parameter is reflected into cached HTML without escaping. Exploitation requires a runtime and intermediary path that passes a literal hash character through to the request URL; Cloudflare Workers and intermediaries that strip fragments are not affected. This issue is fixed in version 4.13.5.
Blast Radius
ecosystem impact- 143 npm packages depend on hono (77 direct, 69 indirect)
Ecosystem-wide dependent count for version 4.13.5.
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
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
HTTP request smuggling exploits inconsistencies in how front-end and back-end servers parse HTTP message boundaries.
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-69610
GHSA-crvj-82cr-hjcx
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB