{"schemaVersion":3,"id":"CVE-2026-45099","aliases":["GHSA-8394-6f8r-whxg","GO-2026-6241"],"status":"published","duplicateOf":null,"title":null,"description":"Terragrunt is a flexible orchestration tool that allows Infrastructure as Code written in OpenTofu or Terraform to scale. Prior to 1.0.4, Terragrunt trusts paths decoded from a downloaded module's .terragrunt-module-manifest during fileManifest.Clean() in internal/util/file.go. A malicious or compromised external module can place absolute or traversal paths in the manifest, causing cleanup to delete files outside the module cache that are accessible to the Terragrunt process before OpenTofu or Terraform executes. This deletion-only primitive can remove local source code or configuration and disrupt CI/CD pipelines. This issue is fixed in version 1.0.4.","dates":{"published":"2026-08-21T20:07:33.195Z","modified":"2026-08-25T14:23:16.006Z","reserved":null,"kevAdded":[],"kevDue":[]},"cvss":{"headline":{"score":6.9,"severity":"medium","version":"4.0","versionLabel":"v4.0","source":"CVE.org","vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N","computed":false,"selection":"backend-summary"},"metrics":[{"version":"4.0","versionLabel":"v4.0","source":"CVE.org","score":6.9,"severity":"medium","vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N","exploitability":null,"impact":null,"computed":false},{"version":"4.0","versionLabel":"v4.0","source":"OSV · Go","score":6.9,"severity":"medium","vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N","exploitability":null,"impact":null,"computed":true},{"version":"4.0","versionLabel":"v4.0","source":"NVD","score":6.9,"severity":"medium","vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","exploitability":null,"impact":null,"computed":false}]},"epss":{"probability":0.0054,"percentile":0.44587,"severity":"low","asOf":"2026-10-21T00:00:00.000Z","change":{"pp":0.117,"baselineDate":"2026-09-21T00:00:00.000Z","baselineScore":0.00423},"history":[{"date":"2026-09-14T00:00:00.000Z","score":0.00423,"percentile":null},{"date":"2026-09-15T00:00:00.000Z","score":0.00423,"percentile":null},{"date":"2026-09-16T00:00:00.000Z","score":0.00423,"percentile":null},{"date":"2026-09-17T00:00:00.000Z","score":0.00423,"percentile":null},{"date":"2026-09-18T00:00:00.000Z","score":0.00423,"percentile":null},{"date":"2026-09-19T00:00:00.000Z","score":0.00423,"percentile":null},{"date":"2026-09-20T00:00:00.000Z","score":0.00423,"percentile":null},{"date":"2026-09-21T00:00:00.000Z","score":0.00423,"percentile":null},{"date":"2026-09-22T00:00:00.000Z","score":0.00423,"percentile":null},{"date":"2026-09-23T00:00:00.000Z","score":0.00423,"percentile":null},{"date":"2026-09-24T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-09-25T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-09-26T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-09-27T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-09-28T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-09-29T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-09-30T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-10-01T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-10-02T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-10-03T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-10-04T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-10-05T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-10-06T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-10-07T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-10-08T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-10-09T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-10-10T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-10-11T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-10-12T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-10-13T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-10-14T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-10-15T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-10-19T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-10-20T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-10-21T00:00:00.000Z","score":0.0054,"percentile":0.44587}],"last30":[{"date":"2026-09-21T00:00:00.000Z","score":0.00423,"percentile":null},{"date":"2026-09-22T00:00:00.000Z","score":0.00423,"percentile":null},{"date":"2026-09-23T00:00:00.000Z","score":0.00423,"percentile":null},{"date":"2026-09-24T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-09-25T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-09-26T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-09-27T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-09-28T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-09-29T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-09-30T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-10-01T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-10-02T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-10-03T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-10-04T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-10-05T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-10-06T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-10-07T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-10-08T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-10-09T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-10-10T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-10-11T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-10-12T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-10-13T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-10-14T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-10-15T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-10-19T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-10-20T00:00:00.000Z","score":0.0054,"percentile":null},{"date":"2026-10-21T00:00:00.000Z","score":0.0054,"percentile":0.44587}]},"kev":{"state":"not-listed","entries":[],"listedCount":0,"totalCatalogs":3,"catalogs":[{"source":"cisa","label":"CISA","listed":false,"entry":null},{"source":"enisa","label":"ENISA","listed":false,"entry":null},{"source":"circl","label":"CIRCL","listed":false,"entry":null}]},"ransomware":{"state":"none-recorded","sources":[]},"exploits":[],"exploitCount":0,"weaknesses":[{"id":"CWE-22","name":"Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')","description":"The product uses external input to construct a pathname that is intended to identify a file or directory that is located underneath a restricted parent directory, but the product does not properly neutralize special elements within the pathname that can cause the pathname to resolve to a location that is outside of the restricted directory.","type":"weakness","status":"Stable","abstraction":"Base","likelihoodOfExploit":"High","url":"https://cwe.mitre.org/data/definitions/22.html"}],"affected":[{"vendor":"github.com/gruntwork-io","product":"terragrunt","name":"github.com/gruntwork-io/terragrunt","label":"terragrunt","ecosystem":"Go","cpePart":null,"purl":"pkg:golang/github.com/gruntwork-io/terragrunt","purlType":"golang","versions":[{"text":"< 1.0.4","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 1.0.4","eol":null,"hubHref":null},{"vendor":"gruntwork-io","product":"terragrunt","name":"terragrunt","label":"terragrunt","ecosystem":null,"cpePart":"a","purl":null,"purlType":null,"versions":[{"text":"< 1.0.4","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 1.0.4","eol":null,"hubHref":"/vendor/gruntwork-io/terragrunt"}],"affectedCount":2,"eol":{"hasEol":false,"count":0},"references":[{"url":"https://github.com/gruntwork-io/terragrunt/security/advisories/GHSA-8394-6f8r-whxg","label":"github.com/gruntwork-io/terragrunt/security/advisories/GHSA-8394-6f8r-whxg","hostname":"github.com","tags":["X Refsource CONFIRM","WEB","Advisory"]},{"url":"https://github.com/gruntwork-io/terragrunt/pull/6032","label":"github.com/gruntwork-io/terragrunt/pull/6032","hostname":"github.com","tags":["X Refsource MISC"]},{"url":"https://github.com/gruntwork-io/terragrunt/commit/3d6f10d6bccc851c6506a307a0b8675e0346e65e","label":"github.com/gruntwork-io/terragrunt/commit/3d6f10d6bccc851c6506a307a0b8675e0346e65e","hostname":"github.com","tags":["X Refsource MISC"]},{"url":"https://github.com/gruntwork-io/terragrunt/releases/tag/v1.0.4","label":"github.com/gruntwork-io/terragrunt/releases/tag/v1.0.4","hostname":"github.com","tags":["X Refsource MISC","WEB"]},{"url":"https://github.com/gruntwork-io/terragrunt","label":"github.com/gruntwork-io/terragrunt","hostname":"github.com","tags":["PACKAGE"]}],"lineage":{"upstream":[],"downstream":["OPENSUSE-SU-2026:21761-1","SUSE-SU-2026:23625-1"],"duplicates":[],"related":["OPENSUSE-SU-2026:21761-1","SUSE-SU-2026:23625-1"]},"timeline":[{"kind":"published","date":"2026-08-21T20:07:33.195Z","label":"Published","detail":"Vulnerability first disclosed.","source":null},{"kind":"modified","date":"2026-08-25T14:23:16.006Z","label":"Last modified","detail":"Vulnerability information updated.","source":null}],"risk":{"score":28,"level":"medium","profile":"Default","thresholds":{"critical":75,"high":50,"medium":25,"low":10}},"meta":{"dataAsOf":"2026-10-22T13:49:01.731Z","stale":false,"partial":false}}