hono before 4.13.7 fails to HTML-escape plain strings rendered by hono/jsx as a child or fallback of Suspense, as a string child of ErrorBoundary alongside an asynchronous sibling, as the single child of a Context.Provider, or as the root value passed to renderToString() or renderToReadableStream() from hono/jsx/dom/server. These paths stringify their input and treat the result as already-escaped markup, so an attacker who controls such a string during server-side rendering can inject arbitrary HTML and execute script under the application's origin.
https://github.com/honojs/hono/security/advisories/GHSA-hxh3-vqpv-xpqv
Published: 2026-09-19
Updated: 2026-09-19
Base Score: 4
Vector: CVSS2#AV:N/AC:H/Au:N/C:P/I:P/A:N
Severity: Medium
Base Score: 4.7
Vector: CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:L/I:L/A:N
Severity: Medium
Base Score: 2.3
Vector: CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:P/VC:L/VI:L/VA:N/SC:L/SI:L/SA:N
Severity: Low