Atmos is a local command-line tool. The operator controls its inputs. These are configuration files on disk, command-line arguments, and flags. Atmos runs no daemon. Three optional features bind a local listener when the operator enables them, and all three are off by default. Atmos sends usage telemetry, which the operator can disable. This threat model governs the list below.
Malformed or invalid configuration (CWE-20). Atmos validates configuration against a published JSON schema. The "atmos validate schema" and "atmos validate stacks" commands do this check. Atmos rejects an invalid configuration before it uses the values.
A tampered or substituted download. Atmos downloads tool binaries. Mitigation: Atmos verifies the checksum and the cosign signature of each tool, and it checks the Rekor transparency log. A lockfile pins each tool version. See pkg/toolchain/verification/.
Path traversal in archive extraction (CWE-22). Atmos extracts archives during vendoring and tool installation. A malicious archive can write files outside the target directory. Mitigation: CodeQL includes the go/zipslip rule. Atmos found such a defect and corrected it.
Secret disclosure in logs and output (CWE-532). Atmos handles cloud credentials and secret values. Mitigation: Atmos masks secret values in its output automatically. TruffleHog scans the full history for verified secrets and blocks the pull request. CodeQL includes the go/clear-text-logging rule.
Command injection through subprocesses (CWE-78). Atmos starts Terraform, OpenTofu, and Helmfile. Mitigation: Atmos runs only the commands that the operator declares in the validated configuration. Semgrep and CodeQL scan for unsafe subprocess patterns.
An unauthenticated local listener (CWE-306). The Terraform registry mirror is an optional feature. When the operator enables it, it accepts no inbound authentication. Mitigation: the feature is off by default. It binds only to the loopback address on an ephemeral port. It runs for one invocation, and it leaves no daemon behind.
A downgraded transport (CWE-319). Atmos contacts cloud providers and identity endpoints. Mitigation: Atmos rejects a token or OIDC endpoint that does not use the https scheme, and it returns an error. The code contains no InsecureSkipVerify.
Unintended disclosure of data through telemetry (CWE-359). Atmos sends usage telemetry to PostHog. The payload contains the command name, the Atmos version, the operating system, the processor architecture, an error flag, a CI flag, the CI provider name, a container flag, and, for Atmos Pro users, the workspace identifier. Mitigation: Atmos does not send configuration files, stack manifests, secrets, or repository content. The operator can disable telemetry, or send it to a private PostHog instance. See https://atmos.tools/cli/telemetry
Data races in concurrent code (CWE-362). Atmos processes stacks and components in parallel. A data race can corrupt output or stop the program. Mitigation: the "atmos test race" configuration runs the race detector. The docs/fixes/ directory records the defects that this configuration found.
Weak cryptographic functions (CWE-327). Mitigation: CodeQL includes the go/weak-sensitive-data-hashing rule. MD5 and SHA-1 appear only where an external protocol requires them, and each use records the reason.
Vulnerable or compromised dependencies (CWE-1395). Mitigation: Dependabot, dependency review, and govulncheck. govulncheck analyses the call graph, and it reports only the vulnerabilities that this binary can reach. Go validates module paths against the public checksum database.