CVE-2026-75926: Hugo 0.162.0 to 0.164.x - Node Permission Model Bypass via Default TailwindCSS Child-Process Grant

Published Aug 18, 2026
·
Updated

Hugo 0.161.0 placed the Node asset pipelines behind the Node.js permission model so that code running through PostCSS, Babel, or TailwindCSS could not reach the file system outside the project directory. Hugo 0.162.0 added tailwindcss to the AllowChildProcess default in config/security/securityConfig.go, which makes nodePermissionArgs in common/hexec/exec.go append --allow-child-process whenever the tool being launched is named tailwindcss. TailwindCSS loads the site's tailwind.config.js through require at startup, so top-level code in that file executes inside the permitted Node process and can call childprocess to spawn a shell. The spawned process is not a Node process and inherits none of the permission flags, so it runs with the full privileges of the account performing the build. Building a site whose theme, module, or starter template supplies the Tailwind configuration therefore yields arbitrary command execution rather than the confined file access the permission model was introduced to enforce. Hugo 0.165.0 removes tailwindcss from the default security.exec.allow list, so the tool is no longer launched under the default configuration.

Affected Software

1 affected component
Hugo Hugo>=0.162.0<=0.164.x

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade Hugo to a version that resolves this vulnerability.

    Fixed in 0.165.0
  2. Configuration

    Update Hugo to at least 0.165.0, where tailwindcss is removed from the default security.exec.allow list so it is no longer launched with the default TailwindCSS child-process grant.

    Hugo securityConfig.go (Node permission model allow list) security.exec.allow (default) = Remove tailwindcss from the default security.exec.allow list

Event History

Aug 18, 2026
CVE Published
via MITRE·03:47 PM
Data Sourced
via MITRE·03:47 PM
DescriptionSeverityWeakness

Frequently Asked Questions

1

Which build environments are realistically exposed?

Builds using Hugo 0.162.0 through 0.164.x are exposed when they invoke TailwindCSS and load a Tailwind configuration supplied by a site, theme, module, or starter template. The resulting command execution runs with the privileges of the account performing the build.

2

What must an attacker control to exploit this?

An attacker needs to introduce JavaScript into a tailwind.config.js file that is loaded during the build, such as through a malicious or untrusted theme, module, or starter template. A user must then build the affected site with TailwindCSS.

3

Is the default configuration affected?

Yes. In the affected releases, tailwindcss is included in the default security.exec.allow list, causing Hugo to grant the Node child-process permission when launching it. Hugo 0.165.0 removes tailwindcss from that default list.

4

What can be done before an upgrade is available?

Upgrade to Hugo 0.165.0. If upgrading is not immediately possible, ensure tailwindcss is not present in the effective security.exec.allow configuration, and avoid building projects that use untrusted Tailwind configurations.

5

How can I assess whether my environment is at risk or may have been affected?

Check the Hugo version, the effective security.exec.allow list, and whether builds load tailwind.config.js files from themes, modules, or templates. The available information does not provide host-level indicators that would confirm whether a prior build was exploited.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203