GHSA-xcf7-88g6-7xr8: compose-lint: Workflow command injection through SARIF-directory errors triggered by pull request symlinks

Published Nov 10, 2026
·
Updated

Impact

In Action tags v0.30.0 and v0.31.0, when sarif-file: names a file in a subdirectory that can't be created, the Action prints the directory's resolved path in an error message. In v0.31.0 that message is outside the window in which the Action turns command processing off, and v0.30.0 has no such window. A pull request can commit a symlink on that path to a directory whose name contains a newline followed by a command.

A pull request can therefore create annotations, fold or hide parts of the job log, or issue other commands the runner accepts, when CI runs compose-lint over it, before anyone reviews it. The pass/fail result is not changed.

Only the Action is affected, and only when sarif-file: points into a subdirectory. The documented setup, sarif-file: results.sarif at the repository root, is not affected. The compose-lint package, the pre-commit hook and the Docker image do not print this message.

Found during an internal pre-1.0 security review. It was first published as part of GHSA-r7j4-crjv-h467, together with four other gaps in the same fix. Each gap now has its own advisory.

Patches

Fixed in 0.32.0. The SARIF-directory error names the sarif-file: input as written.

Workarounds

- Upgrade to 0.32.0 or later. - Keep sarif-file at the workspace root, for example sarif-file: results.sarif.

Reproduction

On a GitHub-hosted runner (runner 2.337.0), the Action at v0.31.0 with sarif-file: out/reports/results.sarif, where out is a committed symlink to a directory named d\n::warning::X that contains a regular file reports, creates an annotation. With sarif-file at the repository root it creates none.

Affected Software

2 affected componentsFixes available
actions/tmatens/compose-lint>=0.30.0<=0.31.0
0.32.0
actions/tmatens/compose-lint>=0.30.0<0.32.0
0.32.0

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade actions/tmatens/compose-lint to a version that resolves this vulnerability.

    Fixed in 0.32.0
  2. Upgrade

    Upgrade compose-lint GitHub Action to a version that resolves this vulnerability.

    Fixed in 0.32.0
  3. Configuration

    Keep sarif-file at the workspace root, for example sarif-file: results.sarif.

    compose-lint GitHub Action sarif-file = results.sarif

Event History

Nov 10, 2026
Advisory Published
via GitHub·09:50 PM
Data Sourced
via GitHub·09:50 PM
DescriptionWeaknessAffected Software
Data Sourced
via OSV·09:50 PM
DescriptionSeverityWeaknessAffected Software

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203