CVE-2026-93981
hono/jsx before 4.13.7 Cross-Site Scripting via Unescaped Strings
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.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- High
- Privileges needed
- None
- User interaction
- Passive
What an attacker can affect
- Confidentiality
- Low
- Integrity
- Low
- Availability
- None
Exploit likelihood
What each source reports
CVE List Score used
2.3
hono/jsx before 4.13.7 Cross-Site Scripting via Unescaped Strings
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.
- Record
CVE-2026-93981- CVSS 4.0
- 2.3 Low
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 - CVSS 3.1
- 4.7 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:L/I:L/A:N - Weakness
- CWE-79
- Updated
- 2026-11-02
EUVDEUVD-2026-83586
2.3
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.
- Record
EUVD-2026-83586- CVSS 4.0
- 2.3 Low
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 - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-6623-4q32-82v8
2.3
Duplicate Advisory: hono/jsx renders plain strings unescaped in boundary components, leading to XSS
Duplicate Advisory
This advisory has been withdrawn because it is a duplicate of GHSA-hxh3-vqpv-xpqv. This link is maintained to preserve external references.
Original Description
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.
- Record
GHSA-6623-4q32-82v8- CVSS 4.0
- 2.3 Low
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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - CVSS 3.1
- 4.7 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:L/I:L/A:N - Weakness
- CWE-79
- Updated
- 2026-11-02
GitHub AdvisoriesGHSA-hxh3-vqpv-xpqv
4.7
hono/jsx renders plain strings unescaped in boundary components, leading to XSS
Summary
hono/jsx does not HTML-escape a plain string placed directly as a child or fallback of Suspense or ErrorBoundary, as the only child of a Context.Provider, or as the root value of renderToString() / renderToReadableStream() from hono/jsx/dom/server. Such a string is emitted as markup instead of text.
Details
These paths stringify their input and treat the result as already-escaped HTML, so a plain string passes through unchanged. Notable cases:
Suspense: a string child, or a stringfallbackwhile a child suspends. With streaming, the fallback reaches the browser in the initial chunk.ErrorBoundary: a string child alongside an asynchronous sibling. The all-synchronous case was fixed in 4.11.7 (GHSA-9r54-q6cx-xmh5).Context.Provider: a single string child. Multiple children are escaped.hono/jsx/dom/server: a string, or an array containing strings, passed as the root.
A lone {children} forwarded by a wrapper component is enough to reach these paths. Strings wrapped in an element, values from raw() or the html helper, and client-side rendering with hono/jsx/dom are not affected.
Impact
An attacker who controls a string rendered in an affected position can inject arbitrary HTML into the server-rendered page, leading to cross-site scripting under the application's origin.
This issue affects applications that render untrusted strings directly in one of the positions above during server-side rendering.
- Record
GHSA-hxh3-vqpv-xpqv- CVSS 3.1
- 4.7 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:L/I:L/A:N - Weakness
- CWE-79
- Updated
- 2026-11-02
NVD
2.3
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.
- Record
CVE-2026-93981- CVSS 4.0
- 2.3 Low
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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - CVSS 3.1
- 4.7 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:L/I:L/A:N - Weakness
- CWE-79
- Updated
- 2026-11-02
OSV
2.3
hono/jsx before 4.13.7 Cross-Site Scripting via Unescaped Strings
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.
- Record
CVE-2026-93981- CVSS 4.0
- 2.3 Low
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 - Weakness
- CWE-79
- Updated
- 2026-11-02
Show 7 moreShow less
OSVGHSA-6623-4q32-82v8
2.3
Duplicate Advisory: hono/jsx renders plain strings unescaped in boundary components, leading to XSS
Duplicate Advisory
This advisory has been withdrawn because it is a duplicate of GHSA-hxh3-vqpv-xpqv. This link is maintained to preserve external references.
Original Description
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.
- Record
GHSA-6623-4q32-82v8- CVSS 4.0
- 2.3 Low
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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - CVSS 3.1
- 4.7 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:L/I:L/A:N - Weakness
- CWE-79
- Updated
- 2026-11-02
OSVGHSA-hxh3-vqpv-xpqv
4.7
hono/jsx renders plain strings unescaped in boundary components, leading to XSS
Summary
hono/jsx does not HTML-escape a plain string placed directly as a child or fallback of Suspense or ErrorBoundary, as the only child of a Context.Provider, or as the root value of renderToString() / renderToReadableStream() from hono/jsx/dom/server. Such a string is emitted as markup instead of text.
Details
These paths stringify their input and treat the result as already-escaped HTML, so a plain string passes through unchanged. Notable cases:
Suspense: a string child, or a stringfallbackwhile a child suspends. With streaming, the fallback reaches the browser in the initial chunk.ErrorBoundary: a string child alongside an asynchronous sibling. The all-synchronous case was fixed in 4.11.7 (GHSA-9r54-q6cx-xmh5).Context.Provider: a single string child. Multiple children are escaped.hono/jsx/dom/server: a string, or an array containing strings, passed as the root.
A lone {children} forwarded by a wrapper component is enough to reach these paths. Strings wrapped in an element, values from raw() or the html helper, and client-side rendering with hono/jsx/dom are not affected.
Impact
An attacker who controls a string rendered in an affected position can inject arbitrary HTML into the server-rendered page, leading to cross-site scripting under the application's origin.
This issue affects applications that render untrusted strings directly in one of the positions above during server-side rendering.
- Record
GHSA-hxh3-vqpv-xpqv- CVSS 3.1
- 4.7 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:L/I:L/A:N - Weakness
- CWE-79
- Updated
- 2026-11-02
OSVRHSA-2026:71906
7.5
Red Hat Security Advisory: Red Hat Hardened Images RPMs Security Update
- Record
RHSA-2026:71906- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVRHSA-2026:73654
4.7
Red Hat Security Advisory: Red Hat Hardened Images RPMs Security Update
- Record
RHSA-2026:73654- CVSS 3.1
- 4.7 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:L/I:L/A:N - Updated
- 2026-11-02
OSVRHSA-2026:73655
7.3
Red Hat Security Advisory: Red Hat Hardened Images RPMs Security Update
- Record
RHSA-2026:73655- CVSS 3.1
- 7.3 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L - Updated
- 2026-11-02
OSVRHSA-2026:74869
8.2
Red Hat Security Advisory: Red Hat Hardened Images RPMs Security Update
- Record
RHSA-2026:74869- CVSS 3.1
- 8.2 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H - Updated
- 2026-11-02
OSVCLSA-2026-1790854808 No score
TuxCare security update for hono (2 CVEs)
TuxCare rebuilt hono to address 2 CVEs. Fixed in 3.12.12-tuxcare.3.
- Record
CLSA-2026-1790854808- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
hononpm |
before 4.13.7 | 4.13.7 |
honoTuxCare:npm From an advisory covering 2 CVEs |
3.12.12-tuxcare.0 up to 3.12.12-tuxcare.3, plus listed versions 3.12.123.12.12-tuxcare.13.12.12-tuxcare.2 |
3.12.12-tuxcare.3 |
grafana13.2Red Hat:hummingbird:1 From an advisory covering 4 CVEs |
before 0:13.2.1-0.7.hum1 | 0:13.2.1-0.7.hum1 |
grafana12.4Red Hat:hummingbird:1 |
before 0:12.4.10-0.10.hum1 | 0:12.4.10-0.10.hum1 |
grafana13.1Red Hat:hummingbird:1 From an advisory covering 3 CVEs |
before 0:13.1.6-0.5.hum1 | 0:13.1.6-0.5.hum1 |
grafana13.1Red Hat:hummingbird:1 From an advisory covering 12 CVEs |
before 0:13.1.6-0.6.hum1 | 0:13.1.6-0.6.hum1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, facts | ||
| affected | ||
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-93981 is a low vulnerability (CVSS 2.3) in Honojs Hono, published September 19, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.23%, the 13th percentile. Fixed in hono 4.13.7.
References
github.com/honojs/hono/security/advisories/GHSA-hxh3-vqpv-xpqv
vulncheck.com/advisories/hono-jsx-before-4.13.7-cross-site-scripting-via-unescaped-strings
nvd.nist.gov/vuln/detail/CVE-2026-93981
github.com/advisories/GHSA-6623-4q32-82v8
github.com/honojs/hono/commit/2b8ed402cdab6dfc5e829b480806dcd8db94161e
github.com/honojs/hono/releases/tag/v4.13.7
Show 107 moreShow less
github.com/advisories/GHSA-hxh3-vqpv-xpqv
github.com/CVEProject/cvelistV5/tree/main/cves/2026/93xxx/CVE-2026-93981.json
github.com/honojs/hono
access.redhat.com/errata/RHSA-2026:71906
access.redhat.com/security/cve/CVE-2026-75838
access.redhat.com/security/cve/CVE-2026-86472
access.redhat.com/security/cve/CVE-2026-93450
access.redhat.com/security/cve/CVE-2026-93981
access.redhat.com/security/updates/classification
images.redhat.com
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_71906.json
bugzilla.redhat.com/show_bug.cgi?id=2517772
cve.org/CVERecord?id=CVE-2026-75838
nvd.nist.gov/vuln/detail/CVE-2026-75838
github.com/cure53/DOMPurify/security/advisories/GHSA-55q2-fjhq-7xh7
vulncheck.com/advisories/dompurify-before-cross-site-scripting-via-in-place-hook
bugzilla.redhat.com/show_bug.cgi?id=2533679
cve.org/CVERecord?id=CVE-2026-86472
nvd.nist.gov/vuln/detail/CVE-2026-86472
cna.openjsf.org/security-advisories.html
github.com/fastify/fast-uri/security/advisories/GHSA-hrr3-gc8f-f4qj
bugzilla.redhat.com/show_bug.cgi?id=2538979
cve.org/CVERecord?id=CVE-2026-93450
nvd.nist.gov/vuln/detail/CVE-2026-93450
github.com/go-openapi/swag
github.com/go-openapi/swag/blob/v0.27.0/jsonutils/adapters/stdlib/json/adapter.go
github.com/go-openapi/swag/blob/v0.27.0/jsonutils/adapters/stdlib/json/ordered_map.go
github.com/go-openapi/swag/commit/0c24346ced59a25811e8694a915e7131d25ccb0e
github.com/go-openapi/swag/security/advisories/GHSA-xh24-9qpg-8w28
vulncheck.com/advisories/go-openapi-swag-jsonutils-before-0.27.1-uncontrolled-recursion-in-ordered-json-marshal-and-unmarshal
bugzilla.redhat.com/show_bug.cgi?id=2538284
cve.org/CVERecord?id=CVE-2026-93981
access.redhat.com/errata/RHSA-2026:73654
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_73654.json
access.redhat.com/errata/RHSA-2026:73655
access.redhat.com/security/cve/CVE-2026-81842
access.redhat.com/security/cve/CVE-2026-76154
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_73655.json
bugzilla.redhat.com/show_bug.cgi?id=2528028
cve.org/CVERecord?id=CVE-2026-76154
nvd.nist.gov/vuln/detail/CVE-2026-76154
bugzilla.redhat.com/show_bug.cgi?id=2543653
cve.org/CVERecord?id=CVE-2026-81842
nvd.nist.gov/vuln/detail/CVE-2026-81842
grafana.com/security/security-advisories/cve-2026-81842
access.redhat.com/errata/RHSA-2026:74869
access.redhat.com/security/cve/CVE-2026-101903
access.redhat.com/security/cve/CVE-2026-101906
access.redhat.com/security/cve/CVE-2026-101898
access.redhat.com/security/cve/CVE-2026-101907
access.redhat.com/security/cve/CVE-2026-101909
access.redhat.com/security/cve/CVE-2026-101908
access.redhat.com/security/cve/CVE-2026-101900
access.redhat.com/security/cve/CVE-2026-101905
access.redhat.com/security/cve/CVE-2026-101902
access.redhat.com/security/cve/CVE-2026-101901
access.redhat.com/security/cve/CVE-2026-101904
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_74869.json
bugzilla.redhat.com/show_bug.cgi?id=2542571
cve.org/CVERecord?id=CVE-2026-101898
nvd.nist.gov/vuln/detail/CVE-2026-101898
github.com/axios/axios/commit/d19040bda7a8be2f82c3c6e1a5bc03917daee39a
github.com/axios/axios/pull/11141
github.com/axios/axios/releases/tag/v1.20.0
github.com/axios/axios/security/advisories/GHSA-3pq3-5fj3-cg6v
bugzilla.redhat.com/show_bug.cgi?id=2542576
cve.org/CVERecord?id=CVE-2026-101900
nvd.nist.gov/vuln/detail/CVE-2026-101900
github.com/axios/axios/security/advisories/GHSA-4hqw-qxg8-jxx2
bugzilla.redhat.com/show_bug.cgi?id=2542577
cve.org/CVERecord?id=CVE-2026-101901
nvd.nist.gov/vuln/detail/CVE-2026-101901
github.com/axios/axios/security/advisories/GHSA-542g-h47m-68v8
bugzilla.redhat.com/show_bug.cgi?id=2542575
cve.org/CVERecord?id=CVE-2026-101902
nvd.nist.gov/vuln/detail/CVE-2026-101902
github.com/axios/axios/releases/tag/v0.34.0
github.com/axios/axios/security/advisories/GHSA-9fr6-4gfg-395g
bugzilla.redhat.com/show_bug.cgi?id=2542580
cve.org/CVERecord?id=CVE-2026-101903
nvd.nist.gov/vuln/detail/CVE-2026-101903
github.com/axios/axios/security/advisories/GHSA-c29m-xwm3-cm6r
bugzilla.redhat.com/show_bug.cgi?id=2542579
cve.org/CVERecord?id=CVE-2026-101904
nvd.nist.gov/vuln/detail/CVE-2026-101904
github.com/axios/axios/security/advisories/GHSA-j8rh-479h-cp32
bugzilla.redhat.com/show_bug.cgi?id=2542584
cve.org/CVERecord?id=CVE-2026-101905
nvd.nist.gov/vuln/detail/CVE-2026-101905
github.com/axios/axios/security/advisories/GHSA-m8m8-qj5v-23w3
bugzilla.redhat.com/show_bug.cgi?id=2542583
cve.org/CVERecord?id=CVE-2026-101906
nvd.nist.gov/vuln/detail/CVE-2026-101906
github.com/axios/axios/security/advisories/GHSA-mghh-pgcx-3jjj
bugzilla.redhat.com/show_bug.cgi?id=2542586
cve.org/CVERecord?id=CVE-2026-101907
nvd.nist.gov/vuln/detail/CVE-2026-101907
github.com/axios/axios/security/advisories/GHSA-r4gj-5m52-g5wh
bugzilla.redhat.com/show_bug.cgi?id=2542592
cve.org/CVERecord?id=CVE-2026-101908
nvd.nist.gov/vuln/detail/CVE-2026-101908
github.com/axios/axios/security/advisories/GHSA-vh66-26gq-q6x8
bugzilla.redhat.com/show_bug.cgi?id=2542593
cve.org/CVERecord?id=CVE-2026-101909
nvd.nist.gov/vuln/detail/CVE-2026-101909
github.com/axios/axios/commit/d29be181f85f6fe93397a07b1f69606d9622637b
github.com/axios/axios/security/advisories/GHSA-x97p-jq2g-jp4f