Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1359 CNY

100%

CVE-2026-123370— compose-lint: `fix --apply` can delete a line the user did not select, including a security setting

Quick assessment

Affected
tmatens compose-lint
Exploitation
No confirmed in-the-wild exploitation; assess based on exposure
Recommended action
Check the vendor advisory and references for a fixed version. If immediate upgrade is impossible, restrict exposure and increase monitoring.

compose-lint 是一款用于 Docker Compose 的安全检查工具,能够在部署前识别危险配置。在 0.9.0 至 0.18.0 版本中,compose-lint 的 YAML 解析器将单独的 carriage return(\r)、以及 Unicode 行分隔符 U+0085、U+2028 和 U+2029 均识别为换行符;然而,其修复位置的转换逻辑仅统计换行符(\n)。攻击者可通过拉取请求(pull request)在引号包裹的值中插入上述某种分隔符,导致执行 时,后续所有编辑发生偏移,并删除目标

CVSS 5.1 · Medium

Affected Version Matrix 1

VendorProduct Version RangeStatus
tmatens compose-lint >= 0.9.0, < 0.18.0 affected
Get alerts for future matching vulnerabilities Log in to subscribe

I. Basic Information for CVE-2026-123370

Vulnerability Information

Have questions about the vulnerability? See if Shenlong's analysis helps!
View Shenlong Deep Dive ↗

Although we use advanced large model technology, its output may still contain inaccurate or outdated information.Shenlong tries to ensure data accuracy, but please verify and judge based on the actual situation.

Vulnerability Title
compose-lint: `fix --apply` can delete a line the user did not select, including a security setting
Source: CVE Program / CVE List V5
Vulnerability 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.
Source: CVE Program / CVE List V5
CVSS Information
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
Source: CVE Program / CVE List V5
Vulnerability Type
Off-by-one错误
Source: CVE Program / CVE List V5

Affected Products

Vendor Product Affected Versions CPE Subscribe
tmatens compose-lint >= 0.9.0, < 0.18.0 -

II. Public POCs for CVE-2026-123370

# POC Description Source Link Shenlong Link
AI-Generated POC Premium

No public POC found.

Login to generate AI POC

III. Intelligence Information for CVE-2026-123370

请登录查看更多情报信息。

Other References for CVE-2026-123370 (6)

Same Patch Batch · tmatens · 2026-11-09 · 7 CVEs total

CVE-2026-123369 5.3 MEDIUM compose-lint: Compose file text can issue GitHub Actions workflow commands through the com
CVE-2026-123368 2.3 LOW compose-lint: .env read through a symlink outside the project can expose the CI job's envi
CVE-2026-123371 2.3 LOW compose-lint: A `.compose-lint.yml` symlinked outside the project is read, and a parse err
CVE-2026-123372 2.3 LOW compose-lint: A pull request can make compose-lint quote a secret from a CI-generated `.en
CVE-2026-123373 2.3 LOW compose-lint: A committed symlink makes compose-lint quote a file from outside the project
CVE-2026-123796 2.3 LOW compose-lint: Incomplete fix for GHSA-jf3h-8jvx-vcrg: a run stopped at the finding limit q

IV. Related Vulnerabilities