Description
compose-lint is a Docker Compose security linter that identifies dangerous misconfigurations before deployment. From 0.9.0 until 0.18.0, compose-lint's YAML parser recognizes lone carriage returns and Unicode line separators U+0085, U+2028, and U+2029 as line breaks while fix position conversion counts only newline characters. A pull request can place one of these separators in a quoted value so fix --apply shifts each later edit and deletes the line after the selected target, including an unselected network or other security setting. The resulting Compose file can remain valid, post-edit checks can pass, and the command can report a successful fix even though the dry-run diff was the only place showing the extra deletion. This issue is fixed in version 0.18.0.
Published: 2026-11-09
Score: 5.1 Medium
EPSS: n/a
KEV: No
Impact: Unintended Removal of Security Settings
Action: Apply Patch
AI Analysis

Impact

compose‑lint is a Docker Compose security linter that identifies misconfigurations before deployment. From versions 0.9.0 to 0.18.0 the YAML parser interprets lone carriage returns and Unicode line separators as line breaks, but the fix –apply command counts only newline characters. When a pull request places such a separator inside a quoted value, the fix command shifts subsequent edits and inadvertently deletes the line after the selected target, including unselected network or other security settings. This bug can strip essential security configuration from the Compose file, potentially allowing insecure deployments. The weakness is an improper encoding error (CWE‑193).

Affected Systems

Affected products are the open‑source compose‑lint tool produced by tmatens. Versions from 0.9.0 up to but not including 0.18.0 are vulnerable. The issue is resolved in release 0.18.0, so any deployment or CI pipeline that relies on earlier versions is at risk.

Risk and Exploitability

The CVSS score is 5.1, indicating moderate severity. EPSS data are not available, and the vulnerability is not listed in the CISA KEV catalog, suggesting that large‑scale exploitation is not yet documented. The likely attack vector is local or continuous‑integration usage of compose‑lint, where an attacker can craft or modify a compose file to insert a carriage return or Unicode separator within a quoted value. Running fix –apply on that file will then remove a non‑selected line, potentially degrading security. Because the flaw does not provide remote code execution or privilege escalation, the overall risk remains moderate, but the inadvertent removal of security settings can create downstream vulnerabilities.

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

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade compose‑lint to version 0.18.0 or later.
  • Remove carriage return and Unicode line separator characters from any quoted values in Compose files before running the fix command in automated pipelines.
  • If upgrading immediately is not possible, switch to a different linter that does not use this parsing logic, or run fix –dry‑run and manually compare the resulting file against the original to ensure no unintended deletions occurred.

Generated by OpenCVE AI on November 9, 2026 at 18:21 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.9.0 until 0.18.0, compose-lint's YAML parser recognizes lone carriage returns and Unicode line separators U+0085, U+2028, and U+2029 as line breaks while fix position conversion counts only newline characters. A pull request can place one of these separators in a quoted value so fix --apply shifts each later edit and deletes the line after the selected target, including an unselected network or other security setting. The resulting Compose file can remain valid, post-edit checks can pass, and the command can report a successful fix even though the dry-run diff was the only place showing the extra deletion. This issue is fixed in version 0.18.0.
Title compose-lint: `fix --apply` can delete a line the user did not select, including a security setting
Weaknesses CWE-193
References
Metrics cvssV4_0

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


Subscriptions

No data.

cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-11-09T17:34:24.026Z

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

Link: CVE-2026-123370

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

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

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

Link: CVE-2026-123370

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

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

Weaknesses