Description
compose-lint is a Docker Compose security linter that identifies dangerous misconfigurations before deployment. From 0.22.0 until 0.31.0, compose-lint follows a sibling .env symbolic link outside the project without applying its normal containment check. From 0.28.0, the same gap also affects an include project_directory link outside the project. A pull request can reference a variable from the linked file, causing substitution to place runner file or process-environment data into finding messages written to logs, JSON, SARIF artifacts, and Code Scanning alerts. Reading /proc/self/environ can expose the remainder of the linter process environment because NUL-separated entries are treated as one value, although disclosure requires a workflow that processes untrusted changes with useful environment data and GitHub normally withholds secrets from fork pull requests. The pass or fail result is not changed. This issue is fixed in version 0.31.0.
Published: 2026-11-09
Score: 2.3 Low
EPSS: n/a
KEV: No
Impact: Information Disclosure
Action: Apply Patch
AI Analysis

Impact

Compose‑Lint, a Docker Compose security linter, is vulnerable in releases 0.22.0 through 0.31.0 because it follows a sibling .env symbolic link that points outside the project directory without applying its usual containment check. When a pull request references a variable defined in the linked file, the linter substitutes that value into logs, JSON, SARIF, and Code Scanning alerts, potentially leaking the CI job’s environment data. Additionally, reading /proc/self/environ allows the entire linter process environment to be exposed, although this requires an attacker‑controlled workflow that processes untrusted changes with useful environment data; GitHub normally redacts secrets from fork PRs. The vulnerability does not alter the pass/fail status of the linter.

Affected Systems

The flaw affects the tmatens Compose‑Lint tool. Versions 0.22.0 up to and including 0.30.x are affected; the issue is fixed in 0.31.0 and later releases. No other vendors or components are directly impacted.

Risk and Exploitability

The CVSS score of 2.3 classifies the vulnerability as low severity. EPSS information is not available and the issue is not listed in the CISA KEV catalogue. Exploitation requires an attacker to submit a pull request that includes a symbolic link to a .env file outside the target repository or modify an include project_directory link, and rely on CI processing of that PR. Because GitHub typically withholds secrets in forked PRs, the practical risk is limited, but the vulnerability can still expose non‑secret configuration or environment data to the log and artifact outputs.

Generated by OpenCVE AI on November 9, 2026 at 18:22 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade Compose‑Lint to version 0.31.0 or newer.
  • If an upgrade is not possible, configure Compose‑Lint to reject or ignore symbolic links that point outside the project directory, or manually audit and remove external .env links.
  • Restrict unauthenticated or untrusted pull requests from affecting CI workflows by requiring review or disabling processing of external files in CI configuration.

Generated by OpenCVE AI on November 9, 2026 at 18:22 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Mon, 09 Nov 2026 17:45:00 +0000

Type Values Removed Values Added
Description compose-lint is a Docker Compose security linter that identifies dangerous misconfigurations before deployment. From 0.22.0 until 0.31.0, compose-lint follows a sibling .env symbolic link outside the project without applying its normal containment check. From 0.28.0, the same gap also affects an include project_directory link outside the project. A pull request can reference a variable from the linked file, causing substitution to place runner file or process-environment data into finding messages written to logs, JSON, SARIF artifacts, and Code Scanning alerts. Reading /proc/self/environ can expose the remainder of the linter process environment because NUL-separated entries are treated as one value, although disclosure requires a workflow that processes untrusted changes with useful environment data and GitHub normally withholds secrets from fork pull requests. The pass or fail result is not changed. This issue is fixed in version 0.31.0.
Title compose-lint: .env read through a symlink outside the project can expose the CI job's environment
Weaknesses CWE-22
CWE-59
References
Metrics cvssV4_0

{'score': 2.3, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N'}


Subscriptions

No data.

cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-11-09T17:25:15.559Z

Reserved: 2026-11-05T20:43:10.420Z

Link: CVE-2026-123368

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-11-09T18:17:25.683

Modified: 2026-11-09T18:17:25.683

Link: CVE-2026-123368

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-11-09T18:30:13Z

Weaknesses
  • CWE-22

    Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')

  • CWE-59

    Improper Link Resolution Before File Access ('Link Following')