Atlantis: OS command injection through PR-controlled Terraform workspace enables RCE during plan
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.
- Products
- atlantis
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2026-116676
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 31 Oct 2026, 14:34 UTC · Revision 1
Source evidence
Atlantis: OS command injection through PR-controlled Terraform workspace enables RCE during plan
core-cve · Original sourcePublished 27 Oct 2026, 17:11 UTC
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.
cve:CVE-2026-116676
atlantis
Fixed versions: Not specified
Complete source record
{
"id": "6ad12fdea9fa3abff954b30e81a9d19cd776712ad307733c1114d322b5c6cdbe",
"url": "https://www.cve.org/CVERecord?id=CVE-2026-116676",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "Atlantis: OS command injection through PR-controlled Terraform workspace enables RCE during plan",
"summary": "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.",
"evidence": "cve:CVE-2026-116676",
"products": [
{
"name": {
"value": "atlantis",
"evidence": "/containers/cna/affected/0/product"
},
"prerequisites": [],
"fixed_versions": [],
"affected_versions": []
}
],
"severity": "high",
"structured": {
"id": "CVE-2026-116676",
"aliases": [
"CVE-2026-116676"
],
"metrics": [
{
"cvssV3_1": {
"scope": "UNCHANGED",
"version": "3.1",
"baseScore": 8.8,
"attackVector": "NETWORK",
"baseSeverity": "HIGH",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
"integrityImpact": "HIGH",
"userInteraction": "NONE",
"attackComplexity": "LOW",
"availabilityImpact": "HIGH",
"privilegesRequired": "LOW",
"confidentialityImpact": "HIGH"
}
}
],
"affected": [
{
"vendor": "runatlantis",
"product": "atlantis",
"versions": [
{
"status": "affected",
"version": ">= 0.4.0, < 0.47.1"
}
]
}
],
"modified": "2026-10-27T17:11:12.744Z",
"provider": "cve",
"references": [
"https://github.com/runatlantis/atlantis/security/advisories/GHSA-rjh2-4xgw-p2hj",
"https://github.com/runatlantis/atlantis/pull/6792",
"https://github.com/runatlantis/atlantis/commit/8dd22b4d0a9d7c129fdbf6a3398dd1c4cf8c3a59",
"https://github.com/runatlantis/atlantis/commit/f04df0d53f0544d9eb6f5026dd8b74fbefd82ac8",
"https://github.com/runatlantis/atlantis/releases/tag/v0.47.1"
],
"provider_metadata": {
"cna": {
"orgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"shortName": "GitHub_M",
"dateUpdated": "2026-10-27T17:11:12.744Z"
}
}
},
"related_cves": [
{
"value": "CVE-2026-116676",
"evidence": "/cveMetadata/cveId"
}
],
"security_relevant": true,
"severity_evidence": "/containers/cna/metrics"
},
"source_id": "core-cve",
"document_id": 394483,
"published_at": "2026-10-27T17:11:12.744+00:00"
}