Description
Hugo's security.http.urls allowlist is the only control on outbound fetches made by resources.GetRemote, and it inspects the URL text alone. CheckAllowedHTTPURL in config/security/securityConfig.go applies the configured pattern list and then re-checks a canonicalised form of an integer, hex or octal IPv4 host, but it never resolves the hostname and never inspects the address the HTTP client actually connects to. The client constructed in resources/resource_factories/create/create.go installs no dial-time hook, so no check occurs at connection time either. A hostname that resolves to a loopback, private or cloud-metadata address therefore satisfies the policy, and the response body is embedded in the generated site. An attacker who can supply a URL through content, for example a front-matter field or a CMS field, can make the build fetch an internal endpoint and publish the response in the static output, so the build artifact itself carries the data out.
Published: 2026-08-24
Score: 8.3 High
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

Hugo’s security.http.urls allowlist is the sole gatekeeper for outbound fetches performed by resources.GetRemote, and its validation examines only the textual form of the URL. The code checks the URL against a list of patterns and then inspects a canonicalized integer, hex or octal IPv4 representation, but it never performs DNS resolution or verifies the actual address the HTTP client will reach. Consequently, a hostname that resolves to a loopback, private or cloud‑metadata address passes the allowlist check. An attacker who can supply a URL through content elements, such as a front‑matter field or a CMS entry, can instruct the Hugo build to fetch data from an internal service and embed that response body directly into the generated static site. The build artifact itself then leaks sensitive internal data to anyone who can download the output, representing a significant confidentiality breach.

Affected Systems

The flaw is present in Hugo versions 0.91.0 through 0.165.0, the only affected product listed by the CNA. Users relying on these releases for site generation are susceptible.

Risk and Exploitability

The CVSS score of 8.3 classifies this vulnerability as high severity. The EPSS score is unavailable and the vulnerability is not currently listed in CISA’s KEV catalog, but the lack of destination address validation makes exploitation likely in environments where content authors can inject URLs. Attackers need only control the build content to trigger the remote request; no additional privileges are required. The potential impact is the unauthorized disclosure of internal endpoints or metadata via the static build output.

Generated by OpenCVE AI on August 24, 2026 at 11:21 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade Hugo to the most recent release that includes a fixed destination address validation for security.http.urls.
  • If an upgrade is not feasible, restrict or sanitize the content that may contain remote URLs, and consider disabling resources.GetRemote usage during the build process.
  • Configure site build scripts or deployment tools to reject URLs that resolve to loopback, private or cloud‑metadata IP ranges by adding an explicit deny‑list or by enabling DNS resolution checks before the fetch occurs.

Generated by OpenCVE AI on August 24, 2026 at 11:21 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Mon, 24 Aug 2026 11:30:00 +0000

Type Values Removed Values Added
First Time appeared Gohugo
Gohugo hugo
CPEs cpe:2.3:a:gohugo:hugo:*:*:*:*:*:*:*:*
Vendors & Products Gohugo
Gohugo hugo

Mon, 24 Aug 2026 10:45:00 +0000

Type Values Removed Values Added
Description Hugo's security.http.urls allowlist is the only control on outbound fetches made by resources.GetRemote, and it inspects the URL text alone. CheckAllowedHTTPURL in config/security/securityConfig.go applies the configured pattern list and then re-checks a canonicalised form of an integer, hex or octal IPv4 host, but it never resolves the hostname and never inspects the address the HTTP client actually connects to. The client constructed in resources/resource_factories/create/create.go installs no dial-time hook, so no check occurs at connection time either. A hostname that resolves to a loopback, private or cloud-metadata address therefore satisfies the policy, and the response body is embedded in the generated site. An attacker who can supply a URL through content, for example a front-matter field or a CMS field, can make the build fetch an internal endpoint and publish the response in the static output, so the build artifact itself carries the data out.
Title Hugo 0.91.0 through 0.165.0 Server-Side Request Forgery via security.http.urls Lacking Destination Address Validation
Weaknesses CWE-918
References
Metrics cvssV3_1

{'score': 7.4, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:N/A:N'}

cvssV4_0

{'score': 8.3, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:H/VI:N/VA:N/SC:H/SI:N/SA:N'}


cve-icon MITRE

Status: PUBLISHED

Assigner: VulnCheck

Published:

Updated: 2026-08-24T11:13:11.477Z

Reserved: 2026-06-01T18:07:48.223Z

Link: CVE-2026-10582

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-08-24T11:16:38.233

Modified: 2026-08-24T11:16:38.233

Link: CVE-2026-10582

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-24T11:30:03Z

Weaknesses
  • CWE-918

    Server-Side Request Forgery (SSRF)