Skip to main content

Hugo CVE-2026-50134

| EUVDEUVD-2026-41916 MEDIUM
Server-Side Request Forgery (SSRF) (CWE-918)
2026-06-16 https://github.com/gohugoio/hugo GHSA-vxgm-5rmg-5w8g
6.3
CVSS 4.0 · Vendor: https://github.com/gohugoio/hugo
Share

Severity by source

Vendor (https://github.com/gohugoio/hugo) PRIMARY
6.3 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:N/SC:L/SI:N/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
vuln.today AI
6.8 MEDIUM

Network-exploitable via build-time HTTP; AC:H because attacker must control an allow-listed host or its DNS; scope change to internal hosts drives C:H with no integrity or availability impact.

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

Primary rating from Vendor (https://github.com/gohugoio/hugo).

CVSS VectorVendor: https://github.com/gohugoio/hugo

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
X

Lifecycle Timeline

3
CVSS changed
Jul 06, 2026 - 20:22 NVD
6.3 (MEDIUM)
Source Code Evidence Fetched
Jun 16, 2026 - 20:01 vuln.today
Analysis Generated
Jun 16, 2026 - 20:01 vuln.today

DescriptionCVE.org

Commit: 86fbb0f7a8 - _security: Validate redirects against security.http.urls_ Affected versions: v0.91.0 (when security.http.urls was introduced) through v0.161.1. Fixed in: v0.162.0. Severity: Only relevant for sites that rely on security.http.urls as a trust boundary - e.g. CI builds that fetch remote resources but want to constrain which hosts can be reached. Not an issue if you fully trust every URL passed to resources.GetRemote.

Description. resources.GetRemote enforces security.http.urls on the URL it is called with, but until v0.162.0 it did not re-validate intermediate URLs on HTTP 3xx redirects. An allowed server (or an attacker controlling its DNS or response) could therefore redirect the request to a host that the policy was meant to forbid - for example, http://localhost/ or an internal IP - and Hugo would fetch from the redirected target. The same bypass also lifted any host-shape restriction the operator had put in place.

Mitigation. v0.162.0 installs a CheckRedirect on the HTTP client used by resources.GetRemote that re-runs security.http.urls on every redirect target and caps the redirect chain at 10 hops. No configuration change is required.

AnalysisAI

HTTP redirect validation bypass in Hugo v0.91.0-v0.161.1 allows the resources.GetRemote build-time HTTP client to follow 3xx redirects to hosts explicitly forbidden by the security.http.urls allow-list, enabling server-side request forgery (SSRF) against internal network targets. Build pipelines that rely on security.http.urls as a trust boundary - for example, CI systems that fetch from semi-trusted external hosts while restricting access to internal metadata services or private IP ranges - are the primary risk population. No public exploit has been identified at time of analysis, and exploitation requires an attacker to control or manipulate an already-permitted external host.

Technical ContextAI

Hugo is a Go-based static site generator (pkg:go/github.com/gohugoio/hugo). The resources.GetRemote function issues build-time HTTP requests using Go's standard net/http client. Since v0.91.0, Hugo exposes a security.http.urls configuration key - a regex allow-list in hugo.toml - to constrain which remote hosts resources.GetRemote may contact; this is especially useful in CI/CD pipelines fetching third-party assets. The root cause (CWE-918: Server-Side Request Forgery) is that the original implementation validated only the *initial* request URL against the allow-list. No CheckRedirect hook was installed on the HTTP client, so any HTTP 3xx response issued by an allowed host could silently redirect the client to a denied target (e.g., http://localhost/, http://169.254.169.254/) without triggering a policy check. The fix in commit 86fbb0f7a8bbb93e2e916390de9e5a4f24bf9f50 installs a CheckRedirect callback that re-invokes CheckAllowedHTTPURL on every intermediate redirect URL and enforces a hard cap of 10 redirect hops.

RemediationAI

Upgrade Hugo to v0.162.0 or later, which installs a CheckRedirect hook on the resources.GetRemote HTTP client that re-validates every redirect target URL against security.http.urls and caps redirect chains at 10 hops. No configuration change is required alongside the upgrade. The release is available at https://github.com/gohugoio/hugo/releases/tag/v0.162.0 and the fix commit is 86fbb0f7a8bbb93e2e916390de9e5a4f24bf9f50. If an immediate upgrade is not feasible, a compensating control is to configure the Hugo HTTP client to disable redirect following at the network perimeter (e.g., via a forward proxy that blocks 3xx pass-through to internal RFC-1918 or link-local ranges); note this may break legitimate redirect-dependent resources and requires proxy infrastructure. Alternatively, auditing every URL passed to resources.GetRemote in templates and confirming none resolve to externally controlled hosts reduces the attack surface, but does not eliminate the underlying bypass.

Vendor StatusVendor

SUSE

Severity: Moderate

Share

CVE-2026-50134 vulnerability details – vuln.today

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