Skip to main content

Hugo EUVDEUVD-2026-87667

| CVE-2026-100694 MEDIUM
Cross-site Scripting (XSS) (CWE-79)
2026-09-26 VulnCheck GHSA-98xc-jpvp-56pj
5.1
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Obtain content-authoring/adapter influence
  2. Delivery
    Author .org file with @@html:@@ or Org export block
  3. Exploit
    Hugo renders text/org unescaped into published page
  4. Execution
    Malicious script served in site HTML
  5. Impact
    Script executes in visitor browsers

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Execution

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires that the affected page's source file or content-adapter output declares the text/org media type (Org Mode content) - Org export blocks and @@html:...@@ snippets are the specific injection vectors. The attacker must be able to supply or influence a content file under /content or the output of a content adapter, i.e. at least author/contributor-level control over content sources. Limiting factors: sites that fully trust all their content sources are explicitly not impacted (single-author or fully-vetted-content sites); a visitor must load the poisoned page (UI:A/UI:R); and after v0.166.0 the security.allowContent allowlist denies text/org by default, so patched sites are unaffected unless they explicitly opt back in with [security] allowContent = ['.*']. Non-Org sites are not exposed at all.

Impact

This is a genuine but modest-priority stored XSS in Hugo's Org Mode rendering path. All exploitation-probability signals are quiet: no CISA KEV listing, no EPSS score supplied, and no public POC - so per available data this is 'no public exploit identified at time of analysis,' not active exploitation. The vendor CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:A/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N, score 5.1) is internally consistent with a client-side XSS: no impact to the vulnerable system itself (VC/VI/VA:N) but Low confidentiality/integrity impact to the subsequent system (SC:L/SI:L) - the visitor's browser - and required user interaction (UI:A, a visitor loading the page). The one signal worth contesting is PR:N: exploitation requires the attacker to supply or influence a /content file or content-adapter output, which is effectively author/contributor-level write access to the site source, so a PR:L framing is more defensible (reflected in my assessed vectors). The medium CVSS is not inflated - but it is not urgent either: impact is confined to script execution in visitors' browsers, gated on a non-default content type (text/org) and an untrusted-content authoring model. Overall a real defense-in-depth fix rather than a fire-drill; prioritize on sites that ingest Org Mode content from partially-trusted contributors or content adapters.

Exploit ScenarioDerived

A multi-author Hugo site (or one using a content adapter pulling from an external source) accepts an Org Mode (.org / text/org) content file from a partially-trusted contributor. The attacker embeds an Org export block or an @@html:<script>...@@ snippet, which Hugo renders unescaped into the published HTML, so the script executes in the browser of every visitor to that page (session/cookie theft, defacement, drive-by actions). No public exploit code is identified, but the injection technique is trivial and documented in the advisory.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Sep 26, 2026

Stored cross-site scripting in Hugo's Org Mode rendering path affects the static site generator from v0.56.0 through v0.165.x: content files (or content-adapter output) declared as the text/org media type are rendered with raw HTML passed through unescaped, so Org export blocks and @@html:...@@ snippets are emitted verbatim into the generated site. An attacker with the ability to supply or influence a content file under /content - at least author/contributor-level content privileges per the assessed vector (CVSS:3.1 PR:L) - can plant script that executes in the browsers of visitors who load the affected page (UI:R). Only Org-declared pages are exposed; sites that fully trust all content sources are explicitly not impacted, and this is not confirmed actively exploited (not in CISA KEV) with no public exploit identified at time of analysis, making it a genuine but modest-priority issue rather than a mass-exploitation risk. Version v0.166.0 resolves it by denying text/org by default through a new security.allowContent allowlist.

RemediationAI

Vendor-released patch: 0.166.0 - upgrade Hugo to v0.166.0 or later, which fixes the issue by adding a security.allowContent allowlist that denies the text/org media type by default, so existing Org-typed content no longer renders raw HTML through export blocks or @@html:...@@ snippets. If the site intentionally authors Org Mode content, note that the documented opt-in, [security] allowContent = ['.*'] in the site configuration, restores the previous permissive behavior and re-exposes the XSS vector in full, so it should only be used where every content source and every content adapter output is fully trusted and write access to /content is restricted to vetted contributors. Where upgrading immediately is not possible, the practical compensating controls are to stop publishing text/org-typed content (convert Org sources to Markdown or HTML output that Hugo escapes), block or sanitize Org raw-HTML constructs (#+begin_export html and @@html:...@@) in any pre-build pipeline before Hugo renders them - accepting the trade-off that this breaks legitimate Org export usage - and tighten repository and CI/CD permissions so that untrusted parties cannot land content files or content adapters in the build. Additional detail is in the vendor advisory at https://github.com/gohugoio/hugo/security/advisories/GHSA-pq74-mj4h-cjq2 and the VulnCheck advisory at https://www.vulncheck.com/advisories/hugo-before-0.166.0-cross-site-scripting-via-text-org.

Affected VersionsENISA

hugo 0.56.0 <0.166.0

Affected Packages

euvd hugo fix: 0.166.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The root cause is CWE-79 (improper neutralization of input during web page generation). Hugo maps source files and content-adapter output to media types and dispatches them to the matching renderer; anything declaring text/org goes through the Org Mode renderer, which honors Org's native escape hatches for raw HTML - export blocks (e.g. #+begin_export html) and inline @@html:...@@ snippets. Those constructs are, by design, passthrough mechanisms, and Hugo applied no sanitization or escaping before writing the rendered result into the static output, so attacker-influenced markup becomes stored script on the generated page and runs under the site's origin for every visitor. Because Hugo is a build-time generator, the injected payload is baked into the published HTML rather than executed in a runtime template engine, which is why the exposure is bounded to builds that actually contain text/org content and why the fix is a content-type allowlist rather than an output filter. CPE tracking is cpe:2.3:a:gohugoio:hugo:*:*:*:*:*:*:*:*, EUVD lists the range as hugo 0.56.0 <0.166.0, and tags (XSS, Hugo, Gohugoio) align with the CWE-79 classification. Note the vendor-published CVSS 4.0 vector (5.1, PR:N) and our assessed CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N) differ on privileges required; the exploitation conditions - a contributing author must control or influence the Org-typed content - support the assessed PR:L premise.

Know when Hugo 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

Vendor (VulnCheck) PRIMARY 5.1 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N
vuln.today AI 5.4 MEDIUM

PR:L because the attacker needs content-authoring/adapter influence; S:C and C:L/I:L because injected script executes in the visitor's browser (separate security scope); A:N as availability is unaffected.

3.1 AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:A/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N
Red Hat 6.1 MEDIUM

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
Active
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
Low
Subsequent system: Integrity
Low
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Sep 26, 2026 - 14:02 EUVD
CVE Published
Sep 26, 2026 - 13:23 cve.org
MEDIUM 5.1

DescriptionCVE.org

Hugo is a static site generator. In versions from v0.56.0 through v0.165.x, content files mapped to the text/org media type are rendered without escaping raw HTML: Org export blocks and @@html:...@@ snippets pass HTML through unescaped, resulting in cross-site scripting (XSS) in the generated site. An attacker who can supply or influence a content file under /content or the output of a content adapter can inject scripts that execute in the browsers of visitors to the affected pages. Only pages whose source file or content-adapter output declares the text/org media type are affected, and sites that fully trust all content sources are not impacted. Version v0.166.0 fixes the issue by introducing a security.allowContent allowlist that denies text/org by default; sites that intentionally author Org Mode content can opt back in with [security] allowContent = ['.*'].

Threat Intelligence Overview

EPSS Score
0.2%
Top 92% exploitable
Prevalence
High
Hugo is a dominant, widely-deployed Go static-site generator
Data Quality
7 sources
Confidence: High
EUVD 🇯🇵JVN NVD CVE.org EPSS Vulnrichment Vendor GitHub VulDB

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

26
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +26
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

More in Hugo

View all
CVE-2020-26284 HIGH POC
8.5 Dec 21

Hugo is a fast and Flexible Static Site Generator built in Go. Rated high severity (CVSS 8.5), this vulnerability is rem

CVE-2026-89259 CRITICAL
9.3 Sep 11

Sandbox/permission-restriction bypass in the Hugo static site generator (versions after v0.43, fixed in v0.165.0) lets a

CVE-2026-75926 CRITICAL
9.3 Aug 18

Arbitrary command execution in Hugo 0.162.0 through 0.164.x occurs when the static site generator builds a project whose

CVE-2026-89258 CRITICAL
9.3 Sep 11

Arbitrary file disclosure in the Hugo static site generator (versions after v0.123.0 and before v0.165.0) lets an attack

CVE-2026-100692 HIGH
8.7 Sep 26

Symlink-following flaws in Hugo's theme and module mount confinement allow files outside a project's mount roots to be r

CVE-2026-100690 HIGH
8.7 Sep 26

Arbitrary file read in Hugo v0.161.0 through v0.165.0 allows an attacker who can contribute content to a Hugo project -

CVE-2026-100693 HIGH
8.6 Sep 26

Case-sensitivity bypass in Hugo's security.http.urls IP-literal deny rule lets builds running v0.162.0 through v0.165.x

CVE-2026-10582 HIGH
8.3 Aug 24

Server-side request forgery in Hugo static site generator (versions 0.91.0 through 0.165.0) allows an attacker who can s

CVE-2026-109596 MEDIUM
6.7 Oct 12

Local file disclosure in Hugo v0.162.0 through v0.166.x allows an attacker-controlled theme or module to place a symlink

CVE-2026-109595 MEDIUM
6.7 Oct 12

Path traversal in Hugo's asset pipeline lets a malicious theme or module bundle files from outside the project root into

CVE-2026-109574 MEDIUM
6.7 Oct 12

Path traversal in Hugo's css.Sass transpilation pipeline (all versions before v0.167.0) lets a malicious theme or module

CVE-2026-58403 MEDIUM
5.9 Jul 06

Symlink traversal in Hugo's virtual filesystem (v0.123.0-v0.163.0) allows a symlink planted inside a theme or local moun

Vendor StatusVendor

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy