Skip to main content

Hugo CVE-2026-100693

| EUVDEUVD-2026-87666 HIGH
Improper Handling of Case Sensitivity (CWE-178)
2026-09-26 VulnCheck GHSA-xpjr-56xg-vx6v
8.6
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Inject attacker-controlled URL into build input
  2. Delivery
    Use mixed-case scheme to evade deny rule
  3. Exploit
    resources.GetRemote fetches restricted localhost/internal IP
  4. Execution
    Internal response embedded in site output
  5. Impact
    Disclose internal data

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Case sensitivity handling
Exploitation Conditions

Requires that a Hugo build (v0.162.0-<v0.166.0) invokes resources.GetRemote with a URL an attacker can influence (untrusted content, data files, or shortcode/parameter input processed at build time), AND that the operator relies on a security.http.urls IP-literal deny rule as an SSRF mitigation. The bypass is triggered simply by supplying a mixed-case URL scheme (e.g. 'HTTP://' or 'Http://') so the case-sensitive deny match fails. Limiting factors: this is a build-time (local, AV:L) issue, not a live network service, so it is not exploitable against a served static site; it only matters where builds process untrusted input and depend on the deny rule. Sites that never call resources.GetRemote, or do not use the IP-literal deny rule, are unaffected.

Impact

This is a security-control bypass (CWE-178, improper case-sensitivity handling) that defeats Hugo's security.http.urls IP-literal deny rule, effectively re-enabling SSRF via resources.GetRemote. The vendor CVSS 4.0 score is 8.6 (HIGH), but several signals argue for a lower real-world priority. There is no EPSS score, no CISA KEV listing, and no public exploit provided in the input - exploitation status is unproven. The vendor's own vector is AV:L (local attack vector), which is consistent with Hugo being a build-time static-site generator rather than a running network service; this contradicts the 'network SSRF' mental model and means an attacker must first get influence over content/templates/data consumed by a build. The vendor also rated VI:H and VA:H (integrity and availability HIGH), which appears generous: resources.GetRemote performs an HTTP GET-style fetch, so the realistic technical impact is confidentiality/information disclosure (reading localhost or internal endpoints), not write or destruction. Net: a legitimately real bypass worth patching, but it is a defense-in-depth failure gated on untrusted content reaching a build AND an operator relying on the deny rule as their SSRF mitigation - not a wormable, internet-facing critical.

Exploit ScenarioDerived

A site operator configures security.http.urls with an IP-literal deny rule to stop templates from fetching internal/localhost URLs, then builds a site that includes attacker-influenced content (e.g. a community contribution, a data file, or a shortcode parameter) reaching resources.GetRemote. The attacker supplies a URL with a mixed-case scheme such as 'HTTP://127.0.0.1/...', which the case-sensitive deny check fails to match, so Hugo fetches the restricted internal resource and embeds/exposes its contents in the build. No public exploit code was identified at time of analysis; the technique itself (case-swapping the scheme) is trivial to reproduce.

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

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

Alert me

AnalysisAIv1 – Sep 26, 2026

Case-sensitivity bypass in Hugo's security.http.urls IP-literal deny rule lets builds running v0.162.0 through v0.165.x fetch URLs that the rule was configured to block - a mixed-case scheme such as 'HTTP://localhost/...' evades the deny match, re-enabling SSRF through resources.GetRemote. The issue is unauthenticated (PR:N) but local (AV:L): it only matters when a Hugo build processes attacker-influenced input and the operator depends on the IP-literal deny rule as the SSRF control, and it cannot be triggered against an already-served static site. No public exploit code has been identified and there is no confirmation of active exploitation, but a vendor patch is available in Hugo v0.166.0.

RemediationAI

Upgrade to Hugo v0.166.0 or later, the first release in the advisory range that carries the vendor fix (vendor-released patch: v0.166.0); confirm the resolved version with 'hugo version' after upgrading, since the fix is delivery-cycle dependent on how Hugo is installed (package manager, container base image, or CI toolchain). Where an immediate upgrade is not possible, the most reliable compensating control is to stop the build from making untrusted outbound requests at all: block build-host egress to loopback and internal RFC1918/link-local ranges at the network or container level, accepting the trade-off that any legitimate remote content fetch will also fail; alternatively, disable or constrain resources.GetRemote through Hugo's security configuration and avoid building content whose URLs come from untrusted data files, shortcodes, or parameters - this also breaks legitimate remote-fetch workflows. Note that relying on stricter security.http.urls entries is not a sufficient workaround, because the bypass stems from the matching logic itself, and case-normalizing URLs at the call site is fragile and easy to miss. See the vendor advisory GHSA-pmrv-x7gp-2rjw for details; no public exploit code and no confirmed active exploitation were identified at time of analysis.

Affected VersionsENISA

hugo 0.162.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

Hugo's resources.GetRemote template function performs outbound HTTP requests at build time - effectively curl from the build machine - and Hugo exposes a security.http.urls policy with IP-literal deny (and allow) rules intended to stop builds from reaching loopback and other restricted addresses. CVE-2026-100693 is CWE-178 (improper handling of case sensitivity): the deny-rule comparison is case-sensitive, so a URL whose scheme is written with mixed case (for example 'HTTP://' or 'Http://') fails to match the deny entry and is passed through to the remote fetch logic. The affected component is the Go-based gohugoio:hugo binary (CPE cpe:2.3:a:gohugoio:hugo:*:*:*:*:*:*:*:*) across the v0.162.0-<0.166.0 range; the independent assessment maps this to CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N - scope change with high confidentiality impact and no integrity or availability impact - because the successful fetch discloses content from an address the operator explicitly intended to keep unreachable. It is a build-time control bypass rather than a flaw in a live network service, so exposure is governed entirely by whether a build invokes resources.GetRemote with attacker-controllable URLs and relies on the IP-literal deny rule.

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

Build-time trigger (AV:L); bypass is trivial mixed-case (AC:L, PR:N, UI:N); reaching restricted internal resources crosses a security boundary (S:C); GET-fetch yields information disclosure only (C:H, I:N, A:N).

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

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Local
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
High
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.6

DescriptionCVE.org

Hugo versions from v0.162.0 before v0.166.0 contain a case-sensitive validation flaw in the security.http.urls IP-literal deny rule that allows attackers to bypass restrictions. Attackers can use mixed-case URL schemes in resources.GetRemote calls to fetch from restricted IP addresses like localhost.

Technical POC Analysis

Evidence note: the only supplied artifact is advisory GHSA-pmrv-x7gp-2rjw.

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

Hugo, the static site generator used across engineering documentation and web publishing pipelines, contains a URL deny-list bypass (CVE-2026-100693) in versions v0.162.0 through v0.165.x that can re-enable server-side request forgery during builds. The risk is confined to build environments - typically developer workstations and CI/CD runners - where Hugo processes content influenced by outside contributors and the IP-literal deny rule is the only SSRF safeguard; published static sites are not affected. Leadership should care because a compromised build runner can expose internal network endpoints and cloud metadata services, and remediation is a straightforward version upgrade.

Business Impact: Medium
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.1%
Top 98% exploitable
Prevalence
High
Hugo is among the most widely used static-site generators globally
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.1%
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
Defer
Exploitation
None
System Exposure· derived
Small
Automatable
No
Human Impact
Medium
Technical Impact
Total

Priority Score

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

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

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