Shell Hell in Super-Linter: CVE-2026-25761
Vulnerability ID: CVE-2026-25761
CVSS Score: 8.8
Published: 2026-02-09
Super-linter, the popular 'one-linter-to-rule-them-all' GitHub Action, contained a critical Command Injection vulnerability (CVE-2026-25761) in versions prior to 8.3.1. The flaw resided in the orchestration scripts responsible for discovering changed files in a Pull Request. By crafting a malicious filename containing shell metacharacters—specifically command substitutions like $(...)—an attacker could trick the runner into executing arbitrary code. This allows for exfiltration of secrets, modification of the repository, or lateral movement within the CI/CD pipeline.
TL;DR
A critical OS Command Injection vulnerability in Super-linter allows attackers to execute code via malicious filenames in Pull Requests. Upgrading to version 8.3.1 is mandatory.
⚠️ Exploit Status: POC
Technical Details
- CWE ID: CWE-77 (Improper Neutralization of Special Elements used in a Command)
- Attack Vector: Network (via Pull Request)
- CVSS Score: 8.8 (High)
- Impact: Remote Code Execution (RCE) / Secret Exfiltration
- Exploit Status: PoC Available (Trivial to construct)
- Affected Versions: >= 6.0.0, < 8.3.1
Affected Systems
- GitHub Actions Runners
- Super-linter container environment
-
super-linter/super-linter: >= 6.0.0, < 8.3.1 (Fixed in:
8.3.1)
Code Analysis
Commit: d29d0d4
Fix command injection by replacing eval/xargs with sed/mapfile
- DIFF_GIT_VALIDATE_ALL_CODEBASE="git ... | xargs ... eval ..."
+ LIST_OF_FILES_IN_REPO=$(git ... | sed ...)
+ mapfile -t RAW_FILE_ARRAY <<<"${LIST_OF_FILES_IN_REPO}"
Exploit Details
- Theoretical PoC: Creating a file named '$(command).ext' triggers execution during file discovery.
Mitigation Strategies
- Input Sanitization: Treat filenames as untrusted input.
- Avoid eval: Replace eval/xargs constructs with native Bash arrays and loops.
- Privilege Reduction: Ensure CI tokens have the minimum required permissions (read-only where possible).
Remediation Steps:
- Update the GitHub Action version to
v8.3.1or newer in all workflow YAML files. - Audit previous workflow runs for unexpected failure logs or network connections.
- Rotate any secrets (GITHUB_TOKEN, AWS keys) that were exposed to the runner environment if a breach is suspected.
References
Read the full report for CVE-2026-25761 on our website for more details including interactive diagrams and full exploit analysis.
Top comments (0)