What's the vulnerability?
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 child_process 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.
Business impact & how R4IM helps
This advisory is on our active-exploitation watchlist. Attackers are using it for initial access, privilege escalation or lateral movement in real-world intrusions. R4IM's offensive security and SOC teams already have detections, exploit replicas and remediation playbooks for this issue.
Targeted vulnerability assessment to confirm which of your assets are actually exploitable — not just theoretically affected.
Our pentesters chain this CVE into realistic attack paths so you see business impact, not just a scan finding.
If the affected product is internet-facing, our AppSec team will harden it against this and related OWASP-class issues.
Continuous monitoring with custom detections for this CVE deployed across your endpoints, identity and cloud.
Recommended remediation
- Inventory all assets running the affected vendor and product, including shadow IT and third-party hosted instances.
- Apply the vendor patch or mitigation referenced in the advisories below. Where no patch exists, isolate the asset or restrict network exposure.
- Hunt for indicators of prior compromise — exploitation of this class of bug often predates public disclosure.
- Deploy detections for the exploit primitives (network signature, EDR rule, WAF rule) and re-test after remediation.
Need help executing these steps? Our team typically completes validation and remediation within a single patch cycle. Request remediation support →
Vendor & research references
- https://github.com/gohugoio/hugo · disclosure@vulncheck.com
- https://github.com/gohugoio/hugo/blob/v0.164.0/common/hexec/exec.go#L292-L295 · disclosure@vulncheck.com
- https://github.com/gohugoio/hugo/blob/v0.164.0/config/security/securityConfig.go#L72-L79 · disclosure@vulncheck.com
- https://github.com/gohugoio/hugo/commit/8a55df7af2e6da31297245cc54fa2e3b521d93e8 · disclosure@vulncheck.com
- https://github.com/gohugoio/hugo/issues/15178 · disclosure@vulncheck.com
- https://www.vulncheck.com/advisories/hugo-to-x-node-permission-model-bypass-via-default-tailwindcss-child-process-grant · disclosure@vulncheck.com
