ZeroHour

CVE-2026-89259

moderate

Hugo sandbox bypass via TailwindCSS lets build-time Node tools read/write outside project

CVSS 4.0
9.3 critical
EPSS
Published
()
Modified
AI analysis

Starting in Hugo v0.161.0, Node tools executed during builds run under Node's permission model, but the default security.exec.allow list includes tailwindcss, which requires a highly permissive configuration (--allow-addons, --allow-child-process, --allow-worker). This allows the restrictions introduced by the fix for GHSA-x597-9fr4-5857 to be bypassed, so a Node tool invoked during a build can read and write files outside the project's working directory. An attacker who can influence a build (for example, through untrusted content processed by TailwindCSS or a compromised Node tool/dependency) gains unauthorized read and write access to files beyond the project directory on the build machine. Hugo versions after v0.43 but before v0.165.0 are affected, and users who do not use TailwindCSS or who only build trusted sites are not affected. No public proof-of-concept or confirmed in-the-wild exploitation has been reported, and the issue is not in CISA KEV.

What to do: Upgrade to Hugo v0.165.0 or later, which removes tailwindcss from the default security.exec.allow list; as a workaround, define a restrictive security.exec.allow list in hugo.toml. Operators should check whether any build pipelines on v0.161.0 or later invoke TailwindCSS or other Node tools on untrusted input, noting that sites that do not use TailwindCSS or only build trusted content are not affected.

Affected
gohugo.io (Hugo project) Hugo static site generatorversions after v0.43 and before v0.165.0 (the Node permission-model behavior is introduced in v0.161.0); fixed in v0.165.0
Estimated exposure
moderatelikely tens of thousands of Hugo sites/builds (order of magnitude 10,000-100,000) — Public web-technology surveys count Hugo among the most widely deployed static site generators with hundreds of thousands of live sites, but only the minority subset running Hugo v0.161.0 or later and invoking TailwindCSS under the default…

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

Hugo is a static site generator. From v0.161.0, Hugo executes Node tools under Node's permission model, but TailwindCSS — included in the default security.exec.allow list — requires a highly permissive configuration (--allow-addons, --allow-child-process, --allow-worker). As a result, the restrictions intended by the fix for GHSA-x597-9fr4-5857 could still be bypassed, allowing a Node tool invoked during a build to read and write files outside the project's working directory. Affected versions are those after v0.43; the issue was fixed in v0.165.0 by removing tailwindcss from the default security.exec.allow list. Users who do not use TailwindCSS, or who only build trusted sites, are not affected. As a workaround, users can define a restrictive security.exec.allow list in hugo.toml.

Weakness
CWE-250
Vector
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/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

In the news

No ingested article mentions this CVE yet.