CVE-2026-89259
Wolfi vulnerability analysis and mitigation

Overview

CVE-2026-89259 is a privilege escalation and file system escape vulnerability in the Hugo static site generator, classified as an incomplete fix for a prior security advisory (GHSA-x597-9fr4-5857). Starting from Hugo v0.161.0, Hugo executes Node tools under Node's permission model; however, TailwindCSS — included in the default security.exec.allow list — requires highly permissive Node flags (--allow-addons, --allow-child-process, --allow-worker), effectively nullifying the intended sandboxing. This allows a Node tool invoked during a Hugo build to read and write files outside the project's working directory. All Hugo versions after v0.43 and before v0.165.0 are affected. The vulnerability carries a CVSS v3.1 score of 9.8 (Critical) and a CVSS v4.0 score of 9.3 (Critical) (GitHub Advisory, Hugo Advisory).

Technical details

The root cause is CWE-250 (Execution with Unnecessary Privileges): Hugo's Node permission model, introduced in v0.161.0 as a security hardening measure, is undermined because TailwindCSS was retained in the default security.exec.allow list despite requiring the highly permissive Node flags --allow-addons, --allow-child-process, and --allow-worker. These flags grant the Node process broad access to the host file system, child process spawning, and worker threads — capabilities that directly bypass the directory isolation intended by the prior fix for GHSA-x597-9fr4-5857. An attacker who can supply or influence a Hugo site's build configuration (e.g., via a malicious theme or repository) can leverage TailwindCSS's elevated permissions to escape the project working directory. The vulnerability was reported by security researcher mtholmquist (Hugo Advisory, GitHub Advisory).

Impact

Successful exploitation allows an attacker to read sensitive files anywhere on the host file system accessible to the build process, and to write arbitrary files outside the project's working directory, potentially enabling persistent backdoors or overwriting critical system or application files. The confidentiality, integrity, and availability of the build host are all at high risk. In CI/CD environments where Hugo builds are automated, this could lead to supply chain compromise, credential theft (e.g., reading secrets or SSH keys), or injection of malicious content into the generated site (GitHub Advisory, Hugo Advisory).

Exploitability

As of the disclosure date (September 11, 2026), there is no public proof-of-concept exploit and no evidence of in-the-wild exploitation (GitHub Advisory). The vulnerability is not listed in the CISA Known Exploited Vulnerabilities (KEV) catalog. NVD's SSVC assessment rates it as automatable with total technical impact, reflecting the low barrier to exploitation in environments that build untrusted Hugo sites using TailwindCSS. No threat actor attribution has been reported.

Exploitation steps

  1. Identify a target: Find a Hugo-based build pipeline (e.g., CI/CD system, static site hosting service) running Hugo versions > v0.43 and < v0.165.0 that uses TailwindCSS and builds content from untrusted or attacker-influenced sources.
  2. Introduce a malicious build artifact: Supply a malicious Hugo theme, content file, or configuration that triggers TailwindCSS execution during the build process — for example, by contributing to an open-source Hugo site or submitting a pull request with a crafted theme.
  3. Leverage TailwindCSS's elevated Node permissions: Because TailwindCSS is in the default security.exec.allow list and runs with --allow-addons, --allow-child-process, and --allow-worker, craft a Node addon or child process payload that is invoked by TailwindCSS during CSS processing.
  4. Escape the project directory: Use the elevated Node permissions to read sensitive files outside the project working directory (e.g., ~/.ssh/id_rsa, environment files with secrets, or CI/CD credential stores) or write malicious files to arbitrary locations on the host.
  5. Exfiltrate or persist: Exfiltrate stolen credentials or secrets via an outbound network call, or write a backdoor/web shell to a location that persists beyond the build process (Hugo Advisory, GitHub Advisory).

Indicators of compromise

  • File System: Unexpected files created or modified outside the Hugo project working directory during or after a build; new or modified files in ~/.ssh/, /tmp/, or application credential directories attributable to the Hugo build process.
  • Process: Node.js child processes spawned with flags --allow-addons, --allow-child-process, or --allow-worker during a Hugo build; unexpected child processes (e.g., curl, wget, shell scripts) spawned from the Node.js process during TailwindCSS execution.
  • Logs: Build logs showing TailwindCSS or Node invocations accessing paths outside the project directory; unexpected file I/O errors or access-denied messages in build output referencing paths outside the project root.
  • Network: Outbound network connections from the build host to unknown external IPs or domains initiated by Node.js processes during a Hugo build.

Mitigation and workarounds

Upgrade Hugo to v0.165.0 or later, which removes tailwindcss from the default security.exec.allow list, eliminating the overpermissive Node execution context (Hugo Advisory). As an immediate workaround for users who cannot upgrade, define a restrictive security.exec.allow list in hugo.toml that explicitly excludes tailwindcss and any other Node tools requiring elevated permissions — for example:

[security.exec]
allow = ['^(go|npx|babel|node|git)$']

Users who do not use TailwindCSS in their builds, or who only build from fully trusted sources, are not affected and require no immediate action (GitHub Advisory).

Community reactions

The vulnerability was reported to the Hugo project by security researcher mtholmquist and disclosed via GitHub Security Advisories on August 27, 2026, with the CVE published on September 11, 2026 (Hugo Advisory). Social media activity was observed on Mastodon and Bluesky shortly after disclosure, with automated CVE tracking accounts amplifying the advisory. No major security vendor blog posts or in-depth technical write-ups have been published as of the disclosure date.

Additional resources

Linux Distribution fix status

Fix availability across major Linux distributions and their releases.

Debian

Fixed

bookworm

hugo

Affected

sid

hugo: 0.165.0-1

Fixed

trixie

hugo

Affected

SourceThis report was generated using AI

Related Wolfi vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-89259CRITICAL9.3
  • Wolfi logoWolfi
  • hugo
NoYesSep 11, 2026
CVE-2026-89258CRITICAL9.3
  • Wolfi logoWolfi
  • hugo
NoYesSep 11, 2026
CVE-2026-54174HIGH8.3
  • Wolfi logoWolfi
  • tw
NoYesSep 11, 2026
CVE-2026-49838MEDIUM5.9
  • Wolfi logoWolfi
  • cilium-cli
NoYesSep 10, 2026
CVE-2026-89092MEDIUM4.2
  • Wolfi logoWolfi
  • glibc
NoYesSep 11, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management