CVE-2026-89259: Hugo before v0.165.0 Insufficient Permission Restriction via TailwindCSS
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.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
Hugoto a version that resolves this vulnerability.Fixed in v0.165.0Patch GHSA-x597-9fr4-5857 - Configuration
In hugo.toml, define a restrictive security.exec.allow list (via the hugo.toml setting security.exec.allow) as a workaround for versions affected prior to v0.165.0; ensure required Node tools are explicitly allowed and unnecessary tools (notably TailwindCSS) are not included.
Hugo security.exec.allow (in hugo.toml) = Define a restrictive security.exec.allow list that does not include tailwindcss (or other Node tools not required) to prevent bypass of exec restrictions.
Event History
Frequently Asked Questions
Which deployments are exposed to this issue?
Hugo versions after v0.43 and before v0.165.0 are affected when they use TailwindCSS and build untrusted sites. Users who do not use TailwindCSS, or who build only trusted sites, are not affected.
What does an attacker need to exploit the issue?
An attacker needs a Node tool to be invoked through TailwindCSS during a build of an untrusted site. The permissive Node permissions required by TailwindCSS can then allow reads and writes outside the project working directory.
Are default Hugo settings affected?
Yes. TailwindCSS was included in the default security.exec.allow list, and its required Node permissions were sufficiently broad to bypass the intended restrictions.
What can be done if upgrading to v0.165.0 is not immediately possible?
Define a restrictive security.exec.allow list in hugo.toml. This prevents relying on the default allow list that includes TailwindCSS.