Summary
Infracost: Terraform Cloud and registry token disclosure via unvalidated hostname
Advisory details
Impact
Sensitive information exposure in the Infracost Terraform Cloud/Enterprise integration. Several code paths attached a configured secret token to a request whose host was taken straight from the scanned Terraform, with no check that the host was the trusted endpoint.
The condition that matters is whether a Terraform Cloud/Enterprise (or registry) token is present in the run: if one is, the injected hostname can disclose it. Impact therefore depends on the trigger. Under on: pull_request (the only configuration in Infracost's documentation) fork pull requests run without secrets, so no token is present. It only reaches token disclosure under pull_request_target, a same-repository pull request, or another CI setup that provides the token alongside untrusted Terraform, and exploiting an untrusted fork pull request also typically needs a maintainer to approve the workflow run. The patch scopes the token to the trusted host regardless of trigger.
Patches
Fixed in v0.10.45 (#3590) by attaching a token only when the destination host matches the configured trusted host; otherwise Infracost refuses to send it and skips remote variable loading
- Installed via the official script, a package manager, or the
latestDocker tag: upgrade tov0.10.45(or later) to receive the fix. - Pinned to a specific version or image digest: bump to
v0.10.45.
Workarounds
No full fix without upgrading. To limit exposure: use on: pull_request rather than pull_request_target, pin organization, workspace, and host in Infracost config so the .tf hostname is ignored, and keep Terraform Cloud and registry tokens out of runs that process untrusted pull request content.
References
- https://github.com/advisories/GHSA-6x6c-w9w9-hv4h
- https://github.com/infracost/infracost/security/advisories/GHSA-6x6c-w9w9-hv4h
- https://nvd.nist.gov/vuln/detail/CVE-2026-71494
- https://github.com/infracost/infracost/pull/3590
- https://github.com/infracost/infracost/commit/3d24c757f5e4e60c7259f1b89ad7ceaabcfca86f
- https://github.com/infracost/infracost/releases/tag/v0.10.45
Related vulnerabilities
All Supply chain →- MEDIUMCVE-2026-91982
Vikunja: TOTP secret is readable after enrollment, no step-up auth
- MEDIUMCVE-2026-107399
Mechanize sends credential headers to another origin after a meta refresh
- MEDIUMCVE-2026-107715
Mechanize sends credential headers to another host after an HTTP redirect
- MEDIUMCVE-2026-107285
AsyncHttpClient: WebSocket proxy credentials sent to the origin server over a CONNECT tunnel
- CRITICALCVE-2026-107282
AsyncHttpClient: Replay to a different host sends the original host request and credentials to the new host
- HIGHCVE-2026-107231
AsyncHttpClient: Digest challenge without a usable nonce downgrades to Basic and sends the password in cleartext