CVE-2026-10618 json
Hugo 0.93.0 through 0.165.0 Stored Cross-Site Scripting via Unescaped Code-Fence Attribute Values
published 2026-08-24 2 mo ago modified 2026-10-12 28 d ago also EUVD-2026-64776
- cvss
- 5.4
- version 3.1, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.3%
- EPSS 0.3% chance of exploitation in 30 days, percentile 23%
- public exploits
- 0
- none known
Summary
Hugo's default fenced-code-block renderer writes attribute values taken from the code-fence info string into the rendered HTML without escaping them. New in markup/internal/attributes/attributes.go converts every attribute value from a byte slice to a string as it is stored, deliberately dropping the escaping that used to happen there, and RenderAttributes in the same file escapes only values that are still byte slices, so its escaping branch is never reached and every value is written verbatim. The function's documentation states that it performs HTML escaping of string attributes, which it does not. A quote inside an attribute value in the info string therefore terminates the attribute and allows a further attribute, including an event handler, to be placed on the wrapper element, and the script runs for every visitor who loads the page. This path is reached under the default configuration, with code fences enabled and without goldmark's unsafe setting or any custom render hook. Attribute names beginning with on are filtered when the attributes are parsed, so injection is achieved through the value rather than the name.
Patch / fix
- gohugo hugo 0.165.0
- hugo Debian 14 0.166.0-1
debian advisories DEBIAN-CVE-2026-10618
- hugo hummingbird 1 0.166.0-0.1.hum1
red hat advisories RHSA-2026:66266
Vendor advisories
What the vendors themselves say about their products: affected, fixed or not affected, and what to do.
red hat product security vex CVE-2026-10618 updated cvss 5.4
github.com/gohugoio/hugo: Hugo: Stored Cross-Site Scripting via unescaped code-fence attribute values
-
Red Hat Enterprise Linux 10 grafana 12.4.3-2.el10 Red Hat OpenShift GitOps openshift-gitops-1/argocd-rhel8, openshift-gitops-1/argocd-rhel9 Red Hat OpenStack Platform 18.0 rhoso-operators/openstack-operator-bundleaffected: workaround, no fix available “Fix deferred”
-
Red Hat Hardened Images hugo 0.166.0-0.1.hum1fixed: vendor fix RHSA-2026:66266
-
Red Hat Hardened Images grafana12.4 12.4.9-0.2.hum1, grafana13.1 13.1.3-0.2.hum1, grafana13.2 13.2.0-0.1.1.hum1not affected: component not present
Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf
CISA SSVC
- Exploitation
- none
- Automatable
- no
- Technical impact
- partial
- Assessed
- 2 mo ago
Exploit prediction
0.30% chance of exploitation in the next 30 days, higher than 23% of all scored CVEs (FIRST EPSS, 2026-11-08).
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 4.0 | 4.8 | CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:A/VC:L/VI:L/VA:N/SC:L/SI:L/SA:N |
| CNA | 3.1 | 5.4 | CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N |
| CNA | 4.0 | 4.8 | CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:A/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 |
Affected products
- gohugoio hugo
Classification
- Weakness
-
- CWE-79 Improper Neutralization of Input During Web Page Generation
References
-
github.com
/gohugoio/hugo
product
-
github.com
/gohugoio/hugo/blob/v0.165.0/markup/internal/attributes/attributes.go
technical-description, product
-
github.com
/gohugoio/hugo/blob/v0.165.0/markup/goldmark/codeblocks/render.go
technical-description, product
-
github.com
/gohugoio/hugo/blob/v0.165.0/markup/highlight/highlight.go
technical-description, product
-
vulncheck.com
/advisories/hugo-through-stored-cross-site-scripting-via-unescaped-code-fence-attribute-values
third-party-advisory
Sources
- CVE List CVE-2026-10618
- NVD CVE-2026-10618
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.