Terragrunt catalog predictable temp symlink clobber
CVSS score
—
EPSS probability
—
Risk score
—
Published
10 h ago
Resmî kaynaklarda yeterli kanıt bulunamadı. Bu sonuç “yama yok” anlamına gelmez.
Impact on My Inventory
Only the personal products you have added to your account are assessed; an organisation's inventory does not appear here.
Checking session…
Vulnerability description
CVE AI research
DayBreach AI Explanation
Verified against sourcesSources read
1
Source agreement
Tam uyum
Evidence confidence
%55
Short explanation
Terragrunt's terragrunt catalog command uses a deterministic clone path under the shared system temporary directory. A local attacker can plant a symlink to cause Terragrunt to delete and re-clone a directory outside the intended temporary root.
This vulnerability allows local users on shared servers or joint CI runners to manipulate directory deletions and re-cloning operations.
What should be done?
- Upgrade to Terragrunt version v1.1.1 or later
- Ensure untrusted parties cannot control TMPDIR, TMP, and TEMP variables
- Follow vendor security advisories
Chain of evidence and sources
Terragrunt catalog komutu, paylaşılan sistem geçici dizini altında tahmin edilebilir bir klon yolu kullanır.
Bu zafiyet, paylaşılan sunucularda veya ortak CI çalıştırıcılarında yerel bir saldırgan tarafından istismar edilebilir.
Show the technical text from the sources
### Summary Terragrunt's `terragrunt catalog` command clones each repository referenced in your catalog configuration into a temporary working directory. In affected versions, the clone path it derived was deterministic and sat under the shared system temporary directory, in the form `<tmp>/catalog-<base64 sha1 of the repo URL>`. Because that path was predictable and Terragrunt followed a symlink already present there instead of rejecting it, a local attacker could plant a symlink at that path and cause Terragrunt to delete a directory and re-clone into it outside the intended temporary root. ### Impact This affected users who ran `terragrunt catalog` on a host they shared with other local users or processes they did not fully trust, such as a multi-user server or a shared CI runner. The attack required a local attacker: a separate local user or process able to write to the shared system temporary directory. It was not remotely exploitable, and the victim had to run `terragrunt catalog` while the attacker's symlink was already in place. Because the predictable path depended only on the repository URL being cataloged and the location of the system temporary directory, the attacker could compute it in advance and plant a symlink there before the victim ran the command. When the victim ran `terragrunt catalog`, Terragrunt followed the symlink out of the intended temporary root, deleted an existing `<repoName>` directory under the attacker-chosen parent, and repopulated that path with the cloned repository contents. All of this happened in the security context of the user running Terragrunt. The attacker controlled the parent directory the symlink pointed to, but not the leaf name: the leaf was fixed to `<repoName>`, derived from the repository URL the victim cataloged. The primitive was deletion of an existing `<repoName>` directory outside the temporary root, followed by a re-clone into that same path. On a single-user machine with no hostile local processes, exposure was minimal. ### Affected Versions - Terragrunt `< v1.1.1` ### Patches This vulnerability has been resolved in Terragrunt version `v1.1.1`. All users are strongly advised to upgrade. ### Workarounds If you cannot upgrade immediately, ensure that you do not allow untrusted parties to control the values of `TMPDIR`, `TMP`, and `TEMP` in environments where you run `terragrunt catalog`. ### Technical Details When you run `terragrunt catalog`, the catalog service iterates over the repositories in your configuration and prepares a local clone of each one. In affected versions, for a given repository URL it built a clone path by hashing the URL and joining the result under the shared system temporary directory: ``` <tmp>/catalog-<base64 sha1 of the repo URL> ``` This path was fully determined by the repository URL and the location of the system temporary directory, so anyone else on the machine who knew which repository a victim would catalog could compute it in advance. The catalog service passed this path into its clone preparation step. As a result, an attacker who placed a symlink at `<tmp>/catalog-<hash>` pointing at a directory of their choosing caused both the removal and the re-clone to operate through that symlink. Both landed at `<attacker-chosen-parent>/<repoName>`, outside the intended temporary root. Terragrunt `v1.1.1` no longer derives a predictable clone path, so an attacker can no longer position a symlink at a location known in advance. ## Credit We would like to thank ([@br0x2](https://github.com/br0x2)) for discovering and responsibly disclosing this vulnerability.
CWE: CWE-59, CWE-377
Explanation produced with the local gemini-flash-lite-latest model. Numerical metrics and the KEV, patch and exploit statuses are not determined by AI.
IMPACT: Affected Products and Software
Affected Products
The following products are affected by CVE-2026-64672 vulnerability. Where our threat engine knows the exact affected versions, they are listed below.
| ID | VENDOR | PRODUCT | ACTION |
|---|---|---|---|
| 1 | go | github.com/gruntwork-io/terragrunt | View |
RED HAT CSAF/VEX: Product Impact Check
SCORING: CVSS from Multiple Sources
CVSS Scores
The Common Vulnerability Scoring System is a standardised framework for assessing the severity of vulnerabilities in software and systems. We collect and display CVSS scores from several sources for each CVE.
| SCORE | VERSION | SEVERITY | VECTOR | SOURCE |
|---|---|---|---|---|
| 4.4 | CVSS 4.0 | — | Vector not published | GitHub Advisory |
Patch and Remediation Guide
Solution & Remediation Advisory
İncelenen resmî kaynaklarda yama durumu doğrulanamadı. Bu sonuç “yama yok” anlamına gelmez.
Public exploit and active exploitation status
Verified exploit intelligence
No verified public PoC, exploit repository or Metasploit module has been found for this CVE yet.
Weakness Classification and Attack Patterns (CWE & CAPEC)
CWE - Common Weakness Enumeration
While CVE identifies specific instances of vulnerabilities, CWE categorises the common flaws or weaknesses that can lead to vulnerabilities. CVE-2026-64672 is associated with the following CWEs:
Common Attack Pattern Enumeration and Classification (CAPEC)
Common Attack Pattern Enumeration and Classification (CAPEC) stores attack patterns, which are descriptions of the common attributes and approaches employed by adversaries to exploit the CVE-2026-64672 weaknesses.
Official Sources and Advisories
Similar Vulnerabilities
Code injection in Gitea
CVE-2026-76819
Identrail Cross-tenant IDOR: Client-supplied GitHub App installation_id is bound to the caller's workspace without ownership verification
Joker linter executed project-local .jokerd/linter.* files during linting
kin-openapi: Incomplete Fix for GHSA-p6wj-qrr4-pgh5: Three Unpatched nil-Items Panic Paths in openapi3filter
kin-openapi: Uncontrolled Recursion on Circular allOf/anyOf/oneOf Schemas Causes Fatal Process Crash
Get this vulnerability through the API
Affected products, version ranges, exploitation status and patch information in a single request, with a free key.
curl -H "x-api-key: $DAYBREACH_API_KEY" \ "https://api.daybreach.dev/api/v1/intel/cves/CVE-2026-64672"