Executive brief
conflibot is a GitHub Actions workflow tool that automatically detects merge conflicts in pull requests. Versions before 1.2.1 construct git commands by concatenating user-controlled pull request branch names into shell commands without sanitization. An attacker can open a pull request with a malicious branch name containing shell metacharacters to execute arbitrary commands on the runner, potentially exfiltrating repository secrets and write-scoped tokens or pushing malicious code to the repository.
Technical details
conflibot is vulnerable to OS command injection (CWE-78) in git command construction. The action builds git commands via string interpolation of pull request branch names (head.ref) and executes them through a shell, allowing shell metacharacters (backticks, $(), ;, |, &) in branch names to be interpreted as command syntax. Under the recommended pull_request_target event workflow, the job runs with write-scoped GITHUB_TOKEN and repository secrets in the environment, making the attack highly impactful. Exploitation requires only opening a pull request with a crafted branch name—no special privileges or user interaction is needed. The fix (v1.2.1 and v2.0.0) eliminates the shell by using execFile/spawn with argument arrays, ensuring branch names are treated as literal data. v2.0.0 additionally references pull requests by number through refs/pull/<n>/head instead of branch names.
Affected products
- wktk conflibot < 1.2.1
Timeline
- 2026-06-10: disclosed: Published to GitHub Advisory Database as GHSA-2qvg-qr73-mqxp
- 2026-06-11: patched: Fixed in v1.2.1 and v2.0.0; commits 59e255c and 0107ac6
References
- https://github.com/wktk/conflibot/security/advisories/GHSA-2qvg-qr73-mqxp
- https://github.com/wktk/conflibot/commit/0107ac6
- https://github.com/wktk/conflibot/commit/59e255c
- https://github.com/wktk/conflibot/releases/tag/v1.2.1
- https://github.com/wktk/conflibot/releases/tag/v2.0.0
- https://api.github.com/repos/wktk/conflibot/security-advisories/GHSA-2qvg-qr73-mqxp