---
id: CVE-2026-93981
title: >-
  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
  roo…
summary: >-
  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
  roo…
severity: medium
cvss: 4.7
cvssVector: 'CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:L/I:L/A:N'
cwe:
  - CWE-79
vendor: honojs
product: hono
affected:
  - hono < 4.13.7
published: '2026-09-19'
updated: '2026-09-21'
sourceUpdated: '2026-09-21T21:17:20.740'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2026-93981'
references:
  - url: 'https://github.com/honojs/hono/security/advisories/GHSA-hxh3-vqpv-xpqv'
    label: disclosure@vulncheck.com
  - url: >-
      https://www.vulncheck.com/advisories/hono-jsx-before-4.13.7-cross-site-scripting-via-unescaped-strings
    label: disclosure@vulncheck.com
  - url: >-
      https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-93981.json
  - url: 'https://access.redhat.com/security/cve/CVE-2026-93981'
  - url: 'https://bugzilla.redhat.com/show_bug.cgi?id=2538284'
  - url: 'https://www.cve.org/CVERecord?id=CVE-2026-93981'
  - url: 'https://nvd.nist.gov/vuln/detail/CVE-2026-93981'
  - url: 'https://access.redhat.com/errata/RHSA-2026:71906'
tags:
  - nvd
  - cve.org
  - csaf
  - vex
  - red-hat
ssvc:
  exploitation: none
  automatable: 'no'
  technicalImpact: partial
  timestamp: '2026-09-21T16:22:56.367930Z'
epss: 0.00227
epssPercentile: 0.12074
ingestedAt: '2026-09-19T12:02:33.564Z'
patched:
  - hardened_images
---

## Overview

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.

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.

## Vendor advisories

- **RHSA-2026:71906** · Red Hat · fixed in: Red Hat Hardened Images · released 2026-09-25 · [advisory](https://access.redhat.com/errata/RHSA-2026:71906)
- **Red Hat VEX** · Moderate · affected: Migration Toolkit for Applications 8, Red Hat Ansible Automation Platform 2, Red Hat Enterprise Linux 10, Red Hat Hardened Images, Red Hat OpenShift AI (RHOAI), Red Hat OpenShift Dev Spaces · no fix planned: Migration Toolkit for Applications 8, Red Hat Ansible Automation Platform 2, Red Hat Enterprise Linux 10, Red Hat OpenShift AI (RHOAI), … · updated 2026-09-25 · [vex](https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-93981.json)
