Cloudanix VulnDB

CVE-2025-8959

None

CVSS

—

EPSS

0.6%

Published

Aug 15, 2025

CISA due date

—

Cloudanix analysis

Next patch cycle SSVC: Track

A common download library can be tricked into reading files outside its intended folder, which may expose secrets on machines that pull modules or packages.

Exploitation
Remote Unauthenticated
Attacker needs
None
Complexity
Low
Impact
Data Exposure
Component
Library
Class
Path Traversal
Remediation
Upgrade
Effort
Low
Patch risk
Low

What it actually does

HashiCorp go-getter’s subdirectory download path does not adequately constrain symbolic-link resolution. When fetching a subdirectory from a Git repository, HTTP archive, or similar source, crafted symlinks inside that tree can be followed, causing the client to read files outside the designated destination directory and resulting in unauthorized local file disclosure on the host performing the download.

Why it matters to the business

Build agents, developer workstations, and CI/CD jobs that pull modules or artifacts through go-getter (including downstream HashiCorp tooling such as Terraform and Packer) may leak secrets, credentials, private keys, or configuration from the host into working directories, logs, or published artifacts. The issue is information disclosure rather than remote code execution. It is not listed in CISA KEV, no public exploit is known, and EPSS remains low (~0.57% with a modest +5% 30-day rise). Residual risk is driven by how widely go-getter is vendored, not by active campaigns.

How an attack unfolds

An attacker publishes or compromises a remote source that victims fetch with go-getter. The source contains a subdirectory whose contents include symbolic links pointing outside the extracted tree (for example toward credential files or host configuration). When a user or automation job uses the subdirectory download feature against that source, the library follows the links and copies or exposes host files beyond the intended directory. The attacker then obtains the leaked material if the download output is committed, logged, packaged, or otherwise returned. No named threat actors or ransomware campaigns are associated with this CVE, and exploit maturity is none.

How to fix it

Upgrade hashicorp/go-getter to 1.7.9 or later, which includes the fix at commit e70221100018573cdc74411c95c19b2a372f6728. Rebuild and redeploy every binary that vendors or module-pins go-getter. Update go.mod/go.sum (and any lockfiles or vendor directories) so no pre-1.7.9 copy remains. Restrict go-getter sources to trusted origins and treat untrusted subdirectory downloads as high risk until all dependents are upgraded.

How to confirm the fix worked

Confirm go-getter is at 1.7.9 or newer in module files, vendor trees, container images, and compiled binaries (for example via go version -m). Run software composition analysis across repositories and release artifacts. After upgrade, verify that subdirectory fetches from archives or repositories containing outbound symlinks no longer copy files outside the destination directory, and that CI jobs using Terraform, Packer, or custom go-getter callers pick up the rebuilt binaries.

Typical attack path

  1. Attacker prepares a Git repository or archive whose subdirectory contains outbound symbolic links.
  2. Victim process (application, Terraform/Packer-style workflow, or CI job) invokes go-getter subdirectory download against that source.
  3. go-getter follows the links and reads files outside the designated destination.
  4. Sensitive content is written into the working tree, cache, logs, or build artifacts.
  5. Attacker recovers the disclosed files from a subsequent artifact, repository, or error output.

How to detect it

No in-the-wild exploitation is reported and exploit maturity is none, so hunting is retrospective and low-signal. Review CI and local logs for go-getter, Terraform, or Packer fetches of subdirectories from untrusted Git or HTTP sources, especially around and after 2025-08-15. Inspect destination and cache directories for unexpected symbolic links whose targets resolve outside the download root, and for host files (credentials, keys, configuration) that appeared in module or artifact trees after a get. Correlate process file-access during get operations with reads of sensitive paths. Absence of those artifacts does not prove the host was never exposed.

What your security team should do

  • Inventory all first-party and third-party binaries that import hashicorp/go-getter and identify versions below 1.7.9.
  • Prioritize upgrades of CI runners, module caches, and developer tooling that fetch remote subdirectories.
  • Pin and rebuild to go-getter 1.7.9 (commit e70221100018573cdc74411c95c19b2a372f6728) and block pre-fix versions in dependency policy.
  • Limit go-getter to allowlisted, trusted remotes until upgrades are complete.
  • Because EPSS is low, KEV is false, and no public exploit exists, treat this as a standard dependency-hygiene item rather than an emergency incident, but do not leave long-lived unpatched images in production.
  • Review recent download working trees for unexpected files that may indicate prior symlink follow.

The record

HashiCorp's go-getter library subdirectory download feature is vulnerable to symlink attacks leading to unauthorized read access beyond the designated directory boundaries. This vulnerability, identified as CVE-2025-8959, is fixed in go-getter 1.7.9.

Affected packages

Ecosystem Package Introduced Fixed
Go github.com/hashicorp/go-getter 0 1.7.9
Chainguard chainctl 0 0.2.126-r0
Chainguard cloudbeat 0 9.1.2-r2
Chainguard cloudbeat-fips 0 9.1.2-r2
Chainguard conftest 0 0.62.0-r3
Chainguard conftest-fips 0 0.62.0-r3
Chainguard docker-credential-cgr 0 0.2.126-r0
Chainguard grype 0 0.98.0-r1
Chainguard grype-db 0 0.38.0-r1
Chainguard grype-db-manager 0 0.38.0-r1
Chainguard grype-fips 0 0.98.0-r1
Chainguard k9s 0 0.50.9-r6
Chainguard k9s-fips 0 0.50.9-r5
Chainguard kots 0 1.126.0-r1
Chainguard kots-compat 0 1.126.0-r1
Chainguard kots-symlink-compat 0 1.126.0-r1
Chainguard kubescape 0 3.0.38-r1
Chainguard opentofu-1.10 0 1.10.5-r2
Chainguard opentofu-1.10-compat 0 1.10.5-r2
Chainguard opentofu-1.10-local-provider-config 0 1.10.5-r2
Chainguard opentofu-1.7 0 1.7.10-r2
Chainguard opentofu-1.7-compat 0 1.7.10-r2
Chainguard opentofu-1.7-local-provider-config 0 1.7.10-r2
Chainguard opentofu-1.8 0 1.8.11-r2
Chainguard opentofu-1.8-compat 0 1.8.11-r2
Chainguard opentofu-1.8-local-provider-config 0 1.8.11-r2
Chainguard opentofu-1.9 0 1.9.3-r2
Chainguard opentofu-1.9-compat 0 1.9.3-r2
Chainguard opentofu-1.9-local-provider-config 0 1.9.3-r2
Chainguard opentofu-fips-1.10 0 1.10.5-r2
Chainguard opentofu-fips-1.7 0 1.7.10-r2
Chainguard opentofu-fips-1.9 0 1.9.3-r2
Chainguard rancher-fleet 0 0.13.0-r3
Chainguard rancher-fleet-agent 0 0.13.0-r3
Chainguard rancher-fleet-agent-fips 0 0.13.0-r3
Chainguard rancher-fleet-cli 0 0.13.0-r3
Chainguard rancher-fleet-cli-fips 0 0.13.0-r3
Chainguard rancher-fleet-controller 0 0.13.0-r3
Chainguard rancher-fleet-controller-fips 0 0.13.0-r3
Chainguard rancher-fleet-fips 0 0.13.0-r3
Chainguard rancher-fleet-fips-agent 0 0.13.0-r3
Chainguard rancher-fleet-termination-log 0 0.13.0-r3
Chainguard snyk-cli 0 1.1298.3-r1
Chainguard steampipe 0 2.1.0-r4
Chainguard syft 0 1.31.0-r1
Chainguard syft-fips 0 1.31.0-r1
Chainguard terraform-1.10 0 1.10.5-r12
Chainguard terraform-1.10-compat 0 1.10.5-r12
Chainguard terraform-1.10-local-provider-config 0 1.10.5-r12
Chainguard terraform-1.11 0 1.11.4-r7
Chainguard terraform-1.11-compat 0 1.11.4-r7
Chainguard terraform-1.11-local-provider-config 0 1.11.4-r7
Chainguard terraform-1.12 0 1.12.2-r4
Chainguard terraform-1.12-compat 0 1.12.2-r4
Chainguard terraform-1.12-local-provider-config 0 1.12.2-r4
Chainguard terraform-1.9 0 1.9.8-r17
Chainguard terraform-1.9-compat 0 1.9.8-r17
Chainguard terraform-1.9-local-provider-config 0 1.9.8-r17
Chainguard terraform-compat 0 1.5.7-r34
Chainguard terraform-fips-1.10 0 1.10.5-r13
Chainguard terraform-fips-1.10-compat 0 1.10.5-r13
Chainguard terraform-fips-1.10-local-provider-config 0 1.10.5-r13
Chainguard terraform-fips-1.11 0 1.11.4-r7
Chainguard terraform-fips-1.11-compat 0 1.11.4-r7
Chainguard terraform-fips-1.11-local-provider-config 0 1.11.4-r7
Chainguard terraform-fips-1.12 0 1.12.2-r3
Chainguard terraform-fips-1.12-compat 0 1.12.2-r3
Chainguard terraform-fips-1.12-local-provider-config 0 1.12.2-r3
Chainguard terraform-fips-1.9 0 1.9.8-r17
Chainguard terraform-fips-1.9-compat 0 1.9.8-r17
Chainguard terraform-fips-1.9-local-provider-config 0 1.9.8-r17
Chainguard terraform-local-provider-config 0 1.5.7-r34
Chainguard terragrunt 0 0.85.0-r1
Chainguard terragrunt-docs 0 0.85.0-r1
Chainguard tflint 0 0.58.1-r3
Chainguard tflint-compat 0 0.58.1-r3
Chainguard tfsec 0 1.28.14-r5
Chainguard trivy 0 0.65.0-r3
Chainguard trivy-fips 0 0.65.0-r3
Chainguard trivy-operator 0 0.28.0-r1
Chainguard trivy-operator-fips 0 0.28.0-r3
Chainguard wolfictl 0 0.38.11-r1
Chainguard xeol 0 0.10.8-r12
Chainguard xeol-compat 0 0.10.8-r12
Chainguard xeol-fips 0 0.10.8-r12
Chainguard zarf 0 0.60.0-r2
Chainguard zot 0 2.1.7-r3
Debian:11 golang-github-hashicorp-go-getter 0 No fix
Debian:12 golang-github-hashicorp-go-getter 0 No fix
Wolfi conftest 0 0.62.0-r3
Wolfi grype 0 0.98.0-r1
Wolfi k9s 0 0.50.9-r6
Wolfi kots 0 1.126.0-r1
Wolfi kots-compat 0 1.126.0-r1
Wolfi kots-symlink-compat 0 1.126.0-r1
Wolfi kubescape 0 3.0.38-r1
Wolfi opentofu-1.10 0 1.10.5-r2
Wolfi opentofu-1.10-compat 0 1.10.5-r2
Wolfi opentofu-1.10-local-provider-config 0 1.10.5-r2
Wolfi opentofu-1.7 0 1.7.10-r2
Wolfi opentofu-1.7-compat 0 1.7.10-r2
Wolfi opentofu-1.7-local-provider-config 0 1.7.10-r2
Wolfi opentofu-1.8 0 1.8.11-r2
Wolfi opentofu-1.8-compat 0 1.8.11-r2
Wolfi opentofu-1.8-local-provider-config 0 1.8.11-r2
Wolfi opentofu-1.9 0 1.9.3-r2
Wolfi opentofu-1.9-compat 0 1.9.3-r2
Wolfi opentofu-1.9-local-provider-config 0 1.9.3-r2
Wolfi rancher-fleet 0 0.13.0-r3
Wolfi rancher-fleet-agent 0 0.13.0-r3
Wolfi rancher-fleet-cli 0 0.13.0-r3
Wolfi rancher-fleet-controller 0 0.13.0-r3
Wolfi rancher-fleet-termination-log 0 0.13.0-r3
Wolfi snyk-cli 0 1.1298.3-r1
Wolfi steampipe 0 2.1.0-r4
Wolfi syft 0 1.31.0-r1
Wolfi terraform-compat 0 1.5.7-r34
Wolfi terraform-local-provider-config 0 1.5.7-r34
Wolfi terragrunt 0 0.85.0-r1
Wolfi terragrunt-docs 0 0.85.0-r1
Wolfi tflint 0 0.58.1-r3
Wolfi tflint-compat 0 0.58.1-r3
Wolfi tfsec 0 1.28.14-r5
Wolfi trivy 0 0.65.0-r3
Wolfi trivy-operator 0 0.28.0-r1
Wolfi wolfictl 0 0.38.11-r1
Wolfi xeol 0 0.10.8-r12
Wolfi xeol-compat 0 0.10.8-r12
Wolfi zarf 0 0.60.0-r2
Wolfi zot 0 2.1.7-r3
openSUSE:Tumbleweed terragrunt 0 0.85.1-1.1

Related vulnerabilities