Composer is vulnerable to Command Injection via Malicious Perforce Repository
Published Apr 15, 2026
7.8
HIGHCVSS 3.1
EPSS 1.00%
Description
Composer is a dependency manager for PHP. Versions 1.0 through 2.2.26 and 2.3 through 2.9.5 contain a command injection vulnerability in the Perforce::generateP4Command() method, which constructs shell commands by interpolating user-supplied Perforce connection parameters (port, user, client) without proper escaping. An attacker can inject arbitrary commands through these values in a malicious composer.json declaring a Perforce VCS repository, leading to command execution in the context of the user running Composer, even if Perforce is not installed. VCS repositories are only loaded from the root composer.json or the composer config directory, so this cannot be exploited through composer.json files of packages installed as dependencies. Users are at risk if they run Composer commands on untrusted projects with attacker-supplied composer.json files. This issue has been fixed in Composer 2.2.27 (2.2 LTS) and 2.9.6 (mainline).
Affected products
-
- Version >= 1.0, < 2.2.27StatusaffectedConstraints-
- Version >= 2.3, < 2.9.6StatusaffectedConstraints-
- Version
- ≥ 1.0.0 · ≤ 2.2.26
- ≥ 2.3.0 · ≤ 2.9.5
No data.
Red Hat Hardened Images
composer-main-2.9.7-1.hum1
Fixed · RHSA-2026:8165
| Product | Package | State | Advisory |
|---|---|---|---|
| Red Hat Hardened Images | composer-main-2.9.7-1.hum1 | Fixed | RHSA-2026:8165 |
No package ranges for this CVE.
Remediation
Red Hat statement
To exploit this vulnerability, a user needs to run Composer commands on untrusted projects with attacker-supplied composer.json files. VCS repositories are only loaded from the root composer.json or the composer config directory, so this issue cannot be exploited through composer.json files of packages installed as dependencies. This issue can cause arbitrary command execution but it is limited to the context of the user running Composer. Due to these reasons, this flaw has been rated with an important severity.
Red Hat mitigation
To mitigate this vulnerability, only run Composer commands on projects from trusted sources. Also, inspect composer.json files before running Composer commands on them, specifically checking that Perforce-related fields contain valid values.
References (10)
- https://access.redhat.com/errata/RHSA-2026:8165
- https://access.redhat.com/security/cve/CVE-2026-40176 Vendor Advisory
- https://bugzilla.redhat.com/show_bug.cgi?id=2458828 Issue Tracking
- https://github.com/FriendsOfPHP/security-advisories/blob/master/composer/composer/CVE-2026-40176.yaml
- https://github.com/advisories/GHSA-wg36-wvj6-r67p Advisory
- https://github.com/composer/composer/releases/tag/2.9.6 x_refsource_MISCRelease Notes
- https://github.com/composer/composer/security/advisories/GHSA-wg36-wvj6-r67p x_refsource_CONFIRMVendor Advisory
- https://nvd.nist.gov/vuln/detail/CVE-2026-40176
- https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-40176.json
- https://www.cve.org/CVERecord?id=CVE-2026-40176
Change history (0)
No recorded changes yet.