# CVE-2026-116676: Atlantis: OS command injection through PR-controlled Terraform workspace enables RCE during plan

Status: published. Published: 2026-10-27. Updated: 2026-11-03.

Atlantis is a self-hosted golang application that listens for Terraform pull request events via webhooks. From version 0.4.0 until 0.47.1, Atlantis passes the pull-request-controlled workspace value from atlantis.yaml into Terraform command arguments that are joined with strings.Join(args, " ") and executed through sh -c. An authenticated contributor whose pull request is eligible for an Atlantis plan can include shell metacharacters in the workspace name, causing arbitrary commands to execute as the Atlantis service account without custom workflows, apply permission, or a malicious Terraform provider. External contributors can reach the flaw through fork pull requests only when --allow-fork-prs is enabled, while eligible same-repository branches do not require that option. The commands inherit the Atlantis process environment and can access cloud-provider, Terraform, and version-control credentials as well as files, state, and network resources available to the service. This issue is fixed in version 0.47.1.

## Remediation

- fix: github.com/runatlantis/atlantis (Go): OSV reports a fixed version 0.47.1. Check the advisory for supported release branches. (source: OSV GHSA-rjh2-4xgw-p2hj) — https://github.com/advisories/GHSA-rjh2-4xgw-p2hj

## Affected products and versions

- runatlantis / atlantis: >= 0.4.0, < 0.47.1 (affected). Source: CNA: GitHub_M
-  / github.com/runatlantis/atlantis (github.com/runatlantis/atlantis): ≥ 0.4.0; < 0.47.1 (affected, semver); OSV events: introduced 0.4.0; fixed 0.47.1. Source: OSV GHSA-rjh2-4xgw-p2hj

## Severity and prioritization

- CVSS 3.1: 8.8 (high); CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H; source: CNA: GitHub_M

- CISA KEV: No listing in collected sources

- EPSS: 0.47% as of 2026-11-02; percentile 40.35%

- SSVC: exploitation poc; automatable no; technical impact total; source ADP: CISA-ADP

- Weaknesses: CWE-78

## Exploit evidence

- exploit: https://github.com/runatlantis/atlantis/security/advisories/GHSA-rjh2-4xgw-p2hj (ADP: CISA-ADP)

## References

- https://github.com/runatlantis/atlantis/security/advisories/GHSA-rjh2-4xgw-p2hj (CNA: GitHub_M; x_refsource_CONFIRM)

- https://github.com/runatlantis/atlantis/pull/6792 (CNA: GitHub_M; x_refsource_MISC)

- https://github.com/runatlantis/atlantis/commit/8dd22b4d0a9d7c129fdbf6a3398dd1c4cf8c3a59 (CNA: GitHub_M; x_refsource_MISC)

- https://github.com/runatlantis/atlantis/commit/f04df0d53f0544d9eb6f5026dd8b74fbefd82ac8 (CNA: GitHub_M; x_refsource_MISC)

- https://github.com/runatlantis/atlantis/releases/tag/v0.47.1 (CNA: GitHub_M; x_refsource_MISC)

- https://github.com/runatlantis/atlantis/security/advisories/GHSA-rjh2-4xgw-p2hj (ADP: CISA-ADP; exploit)

- https://github.com/advisories/GHSA-rjh2-4xgw-p2hj (OSV / GitHub Security Advisories; advisory)

- https://osv.dev/vulnerability/GHSA-rjh2-4xgw-p2hj (OSV / GitHub Security Advisories; osv)

## Provenance

- CNA: GitHub_M: https://www.cve.org/CVERecord?id=CVE-2026-116676; retrieved 2026-11-03; source updated 2026-11-03

- OSV / GitHub Security Advisories: https://osv.dev/vulnerability/GHSA-rjh2-4xgw-p2hj; retrieved 2026-11-03; source updated 2026-10-27

- FIRST EPSS: https://api.first.org/data/v1/epss?cve=CVE-2026-116676; retrieved 2026-11-03; source updated Not reported

Revision: a4b025ab8c6ba679c7403aef1c85053a012577d0858065a102b84ddf1c1c7c64

Canonical: https://y2.dev/cve/CVE-2026-116676

## Agent and API access

Public CVE pages, Markdown, and JSON are free to read without an account or API key.

- Public catalog: https://y2.dev/cve/index.json. Follow nextCursor with the same search, filters, sort, and limit (1–100). A null cursor marks the end.

- WebMCP: search_cve_disclosures, get_cve_disclosure, get_cve_page_markdown, get_y2_cve_access. Available in compatible browsers.

- Cyber API: https://api.y2.dev/api/v2/cyber/cves and https://api.y2.dev/api/v2/cyber/cves/{cveId}.

- Y2 Pro or Elite: create a workspace API key with the intel:cyber scope and send Authorization: Bearer <Y2_API_KEY>. Setup: https://y2.dev/docs/api/create-key.

- x402: Pay per request without an account or API key. Omit Authorization, read the HTTP 402 PAYMENT-REQUIRED challenge, validate its current requirements, and retry with PAYMENT-SIGNATURE through an authorized payment client. These browser tools never make payments. Guide: https://y2.dev/docs/api/x402.

- OpenAPI: https://y2.dev/api/openapi.yaml. Agent access metadata: https://y2.dev/cve/agent.json.

Collected public records only. Check source status for coverage and freshness.