CVE-2026-100692: Hugo before v0.166.0 Path Traversal via Symlinked Mount Roots

Published Sep 26, 2026
·
Updated

Hugo is a static site generator. In versions after v0.123.0 and before v0.166.0, Hugo's symlink confinement checks stopped at the mount root itself, so a theme or module checked into themes/ (or a vendored module) could contain a symlink at a mount root (for example themes/mytheme/assets -> /some/dir/outside). Files behind such a symlink were readable during a site build through resources.Get, resources.Match and similar functions, and could be published to public/ via static mounts, bypassing the rule that theme and module mount sources must be local paths. Modules fetched via Go modules are not affected because Go module zips cannot contain symlinks, and this is not an escalation for the main project, which may already mount absolute paths by configuration. Fixed in v0.166.0, where symlinked mount roots and symlinked directories between the mount root and the module directory are treated as non-existent for all modules. As a workaround, inspect themes/ and vendored modules for symlinks at mount roots before building, or replace symlinks with explicit mounts.

Affected Software

1 affected component
Hugo Hugo>0.123.0<0.166.0

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade Hugo to a version that resolves this vulnerability.

    Fixed in 0.166.0
  2. Compensating control

    Before building, inspect themes/ and vendored modules for symlinks at mount roots, or replace those symlinks with explicit mounts.

Event History

Sep 26, 2026
CVE Published
via MITRE·01:23 PM
Data Sourced
via MITRE·01:23 PM
DescriptionSeverityWeakness
Data Sourced
via NVD·02:16 PM
DescriptionSeverityWeakness

Frequently Asked Questions

1

Which Hugo installations are exposed to this issue?

Hugo versions after v0.123.0 and before v0.166.0 are affected when a theme under themes/ or a vendored module contains a symlink at a mount root, or a relevant symlinked directory lies between the mount root and module directory. Modules fetched through Go modules are not affected because Go module ZIP files cannot contain symlinks.

2

What must an attacker control to exploit this during a build?

They need to introduce a malicious symlinked mount root in a checked-in theme or vendored module. During the build, Hugo resource functions such as resources.Get or resources.Match can read files behind that symlink, and static mounts can publish those files into public/.

3

Does this allow access beyond paths explicitly mounted by the main project?

This is not an escalation for the main project itself, since the project can already configure absolute-path mounts. The issue bypasses the locality restriction intended for theme and module mount sources.

4

What can be done if upgrading to v0.166.0 is not immediately possible?

Inspect themes/ and vendored modules for symlinks at mount roots before building. Replace any such symlinks with explicit mounts.

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