Skip to main content

Hugo CVE-2026-100692

| EUVDEUVD-2026-87665 HIGH
Improper Link Resolution Before File Access (CWE-59)
2026-09-26 VulnCheck GHSA-m29q-9cm9-wcf6
8.7
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Publish malicious theme/module with symlinked mount root
  2. Delivery
    Victim vendors theme into themes/
  3. Exploit
    Victim runs Hugo build
  4. Execution
    Symlink confinement check bypassed at mount root
  5. Persist
    Files behind symlink read via resources.Get/Match
  6. Impact
    Sensitive host files published to public/

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling Symlink resolution safety
Exploitation Conditions

Requires that the site being built includes an attacker-controlled theme placed under themes/ or a vendored (non-Go-modules) module that contains a symlink AT a mount root (e.g. themes/mytheme/assets -> /some/dir/outside), and that the operator runs a Hugo build (versions after v0.123.0 and before v0.166.0). Key limiting factors: modules fetched via Go modules are NOT affected because Go module zips cannot contain symlinks; this is NOT an escalation for the main project, which may already legitimately mount absolute paths by configuration; and exploitation depends on the operator adopting/vendoring an untrusted theme or module and executing a build - it is not exploitable against a running site or default first-party project. Impact is limited to disclosure (reading/publishing files behind the symlink); no integrity or availability impact is described.

Impact

The vendor CVSS 4.0 vector (CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N, 8.7 High) presents this as a remote, unauthenticated, no-interaction confidentiality breach, but the description contradicts the UI:N/PR:N framing: exploitation requires a site operator to check a malicious theme into themes/ or add a vendored (non-Go-modules) module containing a symlink at a mount root, then run a Hugo build. That is a supply-chain / build-time trust decision, not a network attack against a running service - so the effective attack requires operator interaction (adding an untrusted theme/module) and the impact is confined to files readable by the build process, which are then published to public/. Signals: no EPSS score, no CISA KEV listing, and no public PoC are provided, so this is 'no public exploit identified at time of analysis' rather than active exploitation. The description also explicitly notes this is NOT an escalation for the main project (which may already mount absolute paths by configuration) and that Go-module-fetched dependencies are immune. Net: the raw 8.7 overstates real-world urgency - the confidentiality impact is real (local build-host file disclosure) but is strongly gated by the requirement to build with an attacker-controlled non-Go-module theme, making this a moderate, conditionally-exploitable issue rather than a drop-everything priority.

Exploit ScenarioDerived

An attacker publishes an attractive Hugo theme (or a vendored module) to a public repository with a symlink placed at a mount root, e.g. themes/mytheme/assets -> /etc or -> a directory holding secrets on the build host. A developer clones the theme into themes/ and runs hugo; files behind the symlink are read via resources.Get/resources.Match and published into public/, leaking build-host files into the deployed site. No public PoC is referenced.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.4% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Sep 26, 2026

Symlink-following flaws in Hugo's theme and module mount confinement allow files outside a project's mount roots to be read during a site build and, via static mounts, published into the public/ output directory. The flaw affects Hugo builds after v0.123.0 and before v0.166.0 for any project that adopts an untrusted theme checked into themes/ or a vendored (non-Go-modules) module containing a symlink at a mount root and then runs a build; the vendor scores this 8.7 (High) under CVSS 4.0, while independent analysis models it as CVSS 3.1 AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:N/A:N because the site operator must first adopt the malicious theme and execute the build. No public exploit code identified at time of analysis and no KEV listing; a vendor-released patch exists in v0.166.0.

RemediationAI

Vendor-released patch: Hugo v0.166.0, where symlinked mount roots and symlinked directories between the mount root and the module directory are treated as non-existent for all modules - upgrading is the only complete fix and should be applied to any build pipeline running a version after v0.123.0 and before v0.166.0. If an immediate upgrade is not possible, the vendor workaround is to inspect themes/ and vendored (non-Go-modules) modules for symlinks located at mount roots before every build and remove or replace them, substituting an explicit mount entry in the site configuration; the trade-off is that legitimate symlink-based layouts must be rewritten and the check must be repeated whenever themes or vendored modules change, since it is manual and not enforced by the tool. A stronger structural alternative is to deliver themes as Go modules, whose zips cannot carry symlinks and are therefore unaffected, at the cost of repackaging the theme. Because exploitation derives from building an untrusted theme, running builds in a sandbox or container without access to sensitive host paths reduces what can be disclosed, and reviewing the generated public/ tree for unexpected files can detect a successful traversal, though neither compensates for patching and the sandbox route can break builds that legitimately need host resources. Consult the vendor advisory at https://github.com/gohugoio/hugo/security/advisories/GHSA-797m-7j5g-3rpr and the VulnCheck advisory at https://www.vulncheck.com/advisories/hugo-before-0.166.0-path-traversal-via-symlinked-mount-roots for the authoritative fixed version and workaround detail.

Affected VersionsENISA

hugo 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-59 (Improper Link Resolution Before File Access, commonly 'link following'): Hugo's module mount confinement validated mount sources but stopped checking at the mount root itself, so a symlink placed at the mount root - e.g. themes/mytheme/assets -> /some/dir/outside - was traversed rather than rejected. Files behind such a symlink could be read during a build through resources.Get, resources.Match and similar resource functions, and could be written into public/ through static mounts, defeating the rule that theme and module mount sources must be local paths. Two structural limits constrain reach: modules fetched via Go modules are not affected because Go module zips cannot encode symlinks, and this is not an escalation for the main project, which may already legitimately mount absolute paths by configuration. Exploitation further depends on the operator adopting or vendoring a hostile theme/module and then running a build, so it is not exploitable against a running site or a default first-party project, and the impact described is disclosure only (no integrity or availability impact per the vendor vector, and confidential-only scope in the independent assessment's S:C/C:H/I:N/A:N). The fix in v0.166.0 treats symlinked mount roots and symlinked directories between the mount root and the module directory as non-existent for all modules. CPE cpe:2.3:a:gohugoio:hugo:*:*:*:*:*:*:*:* identifies the product, and ENISA EUVD-2026-87665 lists the affected range as 'hugo 0 <0.166.0'. Some feeds tag this issue 'Authentication Bypass', but the actual mechanism is host-file disclosure via symlink traversal at a trusted mount root, not an authentication bypass.

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 8.7 HIGH
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N
vuln.today AI 7.4 HIGH

Attacker delivers a malicious theme (AV:N) but the operator must vendor it and run a build (UI:R); reading files outside Hugo's mount confinement crosses a trust boundary (S:C) with confidentiality-only impact (C:H, I/A:N).

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

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

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

Lifecycle Timeline

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

DescriptionCVE.org

Hugo is a static site generator. In versions after v0.123.0 and before v0.166.0, Hugo's symlink confinement checks stopped at the mount root itself, so a theme or module checked into themes/ (or a vendored module) could contain a symlink at a mount root (for example themes/mytheme/assets -> /some/dir/outside). Files behind such a symlink were readable during a site build through resources.Get, resources.Match and similar functions, and could be published to public/ via static mounts, bypassing the rule that theme and module mount sources must be local paths. Modules fetched via Go modules are not affected because Go module zips cannot contain symlinks, and this is not an escalation for the main project, which may already mount absolute paths by configuration. Fixed in v0.166.0, where symlinked mount roots and symlinked directories between the mount root and the module directory are treated as non-existent for all modules. As a workaround, inspect themes/ and vendored modules for symlinks at mount roots before building, or replace symlinks with explicit mounts.

Technical POC Analysis

Evidence note: the supplied material is the GitHub advisory text plus CVE metadata.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

Organizations using Hugo static site generator versions after 0.123.0 and before 0.166.0 with untrusted third-party themes or vendored modules are at risk of exposing sensitive files outside the project directory in their published websites. This could lead to unintended disclosure of configuration data or internal documents, potentially damaging customer trust and regulatory compliance. While no public exploit has been identified at time of analysis, leadership should prioritize patching to v0.166.0 to mitigate potential data leakage.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.4%
Top 64% exploitable
Prevalence
High
Hugo is one of the most widely used static site generators among developers
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 HIGH
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.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
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact
High
Technical Impact
Partial

Priority Score

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

Attack Technique

Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.

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-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

CVE-2026-58402 MEDIUM
5.1 Jul 06

Stored XSS in Hugo's default code-block renderer allows an attacker with Markdown contribution rights to inject arbitrar

Vendor StatusVendor

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