CVE-2026-40261
Composer has Command Injection via Malicious Perforce Reference
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::syncCodeBase() method, which appends the $sourceReference parameter to a shell command without proper escaping, and additionally in the Perforce::generateP4Command() method as in GHSA-wg36-wvj6-r67p / CVE-2026-40176, which interpolates user-supplied Perforce connection parameters (port, user, client) from the source url field without proper escaping. An attacker can inject arbitrary commands through crafted source reference or source url values containing shell metacharacters, even if Perforce is not installed. Unlike CVE-2026-40176, the source reference and url are provided as part of package metadata, meaning any compromised or malicious Composer repository can serve package metadata declaring perforce as a source type with malicious values. This vulnerability is exploitable when installing or updating dependencies from source, including the default behavior when installing dev-prefixed versions. This issue has been fixed in Composer 2.2.27 (2.2 LTS) and 2.9.6 (mainline). If developers are unable to immediately update, they can avoid installing dependencies from source by using --prefer-dist or the preferred-install: dist config setting, and only use trusted Composer repositories as a workaround.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- Required
What an attacker can affect
- Confidentiality
- High
- Integrity
- High
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
8.8
Composer has Command Injection via Malicious Perforce Reference
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::syncCodeBase() method, which appends the $sourceReference parameter to a shell command without proper escaping, and additionally in the Perforce::generateP4Command() method as in GHSA-wg36-wvj6-r67p / CVE-2026-40176, which interpolates user-supplied Perforce connection parameters (port, user, client) from the source url field without proper escaping. An attacker can inject arbitrary commands through crafted source reference or source url values containing shell metacharacters, even if Perforce is not installed. Unlike CVE-2026-40176, the source reference and url are provided as part of package metadata, meaning any compromised or malicious Composer repository can serve package metadata declaring perforce as a source type with malicious values. This vulnerability is exploitable when installing or updating dependencies from source, including the default behavior when installing dev-prefixed versions. This issue has been fixed in Composer 2.2.27 (2.2 LTS) and 2.9.6 (mainline). If developers are unable to immediately update, they can avoid installing dependencies from source by using --prefer-dist or the preferred-install: dist config setting, and only use trusted Composer repositories as a workaround.
- Record
CVE-2026-40261- CVSS 3.1
- 8.8 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H - Weakness
- CWE-78, CWE-20, CWE-78
- Updated
- 2026-11-02
EUVDEUVD-2026-23119
8.8
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::syncCodeBase() method, which appends the $sourceReference parameter to a shell command without proper escaping, and additionally in the Perforce::generateP4Command() method as in GHSA-wg36-wvj6-r67p / CVE-2026-40176, which interpolates user-supplied Perforce connection parameters (port, user, client) from the source url field without proper escaping. An attacker can inject arbitrary commands through crafted source reference or source url values containing shell metacharacters, even if Perforce is not installed. Unlike CVE-2026-40176, the source reference and url are provided as part of package metadata, meaning any compromised or malicious Composer repository can serve package metadata declaring perforce as a source type with malicious values. This vulnerability is exploitable when installing or updating dependencies from source, including the default behavior when installing dev-prefixed versions. This issue has been fixed in Composer 2.2.27 (2.2 LTS) and 2.9.6 (mainline). If developers are unable to immediately update, they can avoid installing dependencies from source by using --prefer-dist or the preferred-install: dist config setting, and only use trusted Composer repositories as a workaround.
- Record
EUVD-2026-23119- CVSS 3.1
- 8.8 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-gqw4-4w2p-838q
8.8
Composer has a command injection via malicious perforce reference
Impact
The Perforce::syncCodeBase() method appended the $sourceReference parameter to a shell command without proper escaping, allowing an attacker to inject arbitrary commands through a crafted source reference containing shell metacharacters. Further as in GHSA-wg36-wvj6-r67p / CVE-2026-40176 the Perforce::generateP4Command() method constructed shell commands by interpolating user-supplied Perforce connection parameters (port, user, client) without proper escaping from the source url field. Composer would execute these injected commands even if Perforce is not installed.
The source reference and url are provided as part of package metadata. Any Composer package repository can serve package metadata declaring perforce as a source type with a malicious source reference or source url. This means the vulnerability can be exploited through any package served by a compromised or malicious Composer repository. An attack does not require Perforce to be installed on the client, as Composer will attempt to execute the constructed command regardless.
This vulnerability is exploitable when installing or updating dependencies from source (--prefer-source, default when installing dev prefixed versions), even if you do not use Perforce.
Patches
Fixed in Composer 2.2.27 (2.2 LTS) and 2.9.6 (mainline)
Note, the fix for the source url in the Perforce::generateP4Command() was addressed as part of the patches for GHSA-wg36-wvj6-r67p / CVE-2026-40176 in the same versions.
Workarounds
- Avoid installing dependencies from source by using
--prefer-distor thepreferred-install: distconfig setting. - Only use trusted Composer repositories.
- Record
GHSA-gqw4-4w2p-838q- CVSS 3.1
- 8.8 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H - Weakness
- CWE-20, CWE-78
- Updated
- 2026-11-02
NVD
8.8
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::syncCodeBase() method, which appends the $sourceReference parameter to a shell command without proper escaping, and additionally in the Perforce::generateP4Command() method as in GHSA-wg36-wvj6-r67p / CVE-2026-40176, which interpolates user-supplied Perforce connection parameters (port, user, client) from the source url field without proper escaping. An attacker can inject arbitrary commands through crafted source reference or source url values containing shell metacharacters, even if Perforce is not installed. Unlike CVE-2026-40176, the source reference and url are provided as part of package metadata, meaning any compromised or malicious Composer repository can serve package metadata declaring perforce as a source type with malicious values. This vulnerability is exploitable when installing or updating dependencies from source, including the default behavior when installing dev-prefixed versions. This issue has been fixed in Composer 2.2.27 (2.2 LTS) and 2.9.6 (mainline). If developers are unable to immediately update, they can avoid installing dependencies from source by using --prefer-dist or the preferred-install: dist config setting, and only use trusted Composer repositories as a workaround.
- Record
CVE-2026-40261- CVSS 3.1
- 8.8 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H - Weakness
- CWE-20, CWE-78
- Updated
- 2026-11-02
OSVALPINE-CVE-2026-40261
8.8
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::syncCodeBase() method, which appends the $sourceReference parameter to a shell command without proper escaping, and additionally in the Perforce::generateP4Command() method as in GHSA-wg36-wvj6-r67p / CVE-2026-40176, which interpolates user-supplied Perforce connection parameters (port, user, client) from the source url field without proper escaping. An attacker can inject arbitrary commands through crafted source reference or source url values containing shell metacharacters, even if Perforce is not installed. Unlike CVE-2026-40176, the source reference and url are provided as part of package metadata, meaning any compromised or malicious Composer repository can serve package metadata declaring perforce as a source type with malicious values. This vulnerability is exploitable when installing or updating dependencies from source, including the default behavior when installing dev-prefixed versions. This issue has been fixed in Composer 2.2.27 (2.2 LTS) and 2.9.6 (mainline). If developers are unable to immediately update, they can avoid installing dependencies from source by using --prefer-dist or the preferred-install: dist config setting, and only use trusted Composer repositories as a workaround.
- Record
ALPINE-CVE-2026-40261- CVSS 3.1
- 8.8 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H - Updated
- 2026-11-03
OSV
8.8
Composer has Command Injection via Malicious Perforce Reference
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::syncCodeBase() method, which appends the $sourceReference parameter to a shell command without proper escaping, and additionally in the Perforce::generateP4Command() method as in GHSA-wg36-wvj6-r67p / CVE-2026-40176, which interpolates user-supplied Perforce connection parameters (port, user, client) from the source url field without proper escaping. An attacker can inject arbitrary commands through crafted source reference or source url values containing shell metacharacters, even if Perforce is not installed. Unlike CVE-2026-40176, the source reference and url are provided as part of package metadata, meaning any compromised or malicious Composer repository can serve package metadata declaring perforce as a source type with malicious values. This vulnerability is exploitable when installing or updating dependencies from source, including the default behavior when installing dev-prefixed versions. This issue has been fixed in Composer 2.2.27 (2.2 LTS) and 2.9.6 (mainline). If developers are unable to immediately update, they can avoid installing dependencies from source by using --prefer-dist or the preferred-install: dist config setting, and only use trusted Composer repositories as a workaround.
- Record
CVE-2026-40261- CVSS 3.1
- 8.8 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H - Weakness
- CWE-20, CWE-78
- Updated
- 2026-11-02
Show 15 moreShow less
OSVDEBIAN-CVE-2026-40261
8.8
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::syncCodeBase() method, which appends the $sourceReference parameter to a shell command without proper escaping, and additionally in the Perforce::generateP4Command() method as in GHSA-wg36-wvj6-r67p / CVE-2026-40176, which interpolates user-supplied Perforce connection parameters (port, user, client) from the source url field without proper escaping. An attacker can inject arbitrary commands through crafted source reference or source url values containing shell metacharacters, even if Perforce is not installed. Unlike CVE-2026-40176, the source reference and url are provided as part of package metadata, meaning any compromised or malicious Composer repository can serve package metadata declaring perforce as a source type with malicious values. This vulnerability is exploitable when installing or updating dependencies from source, including the default behavior when installing dev-prefixed versions. This issue has been fixed in Composer 2.2.27 (2.2 LTS) and 2.9.6 (mainline). If developers are unable to immediately update, they can avoid installing dependencies from source by using --prefer-dist or the preferred-install: dist config setting, and only use trusted Composer repositories as a workaround.
- Record
DEBIAN-CVE-2026-40261- CVSS 3.1
- 8.8 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVGHSA-gqw4-4w2p-838q
8.8
Composer has a command injection via malicious perforce reference
Impact
The Perforce::syncCodeBase() method appended the $sourceReference parameter to a shell command without proper escaping, allowing an attacker to inject arbitrary commands through a crafted source reference containing shell metacharacters. Further as in GHSA-wg36-wvj6-r67p / CVE-2026-40176 the Perforce::generateP4Command() method constructed shell commands by interpolating user-supplied Perforce connection parameters (port, user, client) without proper escaping from the source url field. Composer would execute these injected commands even if Perforce is not installed.
The source reference and url are provided as part of package metadata. Any Composer package repository can serve package metadata declaring perforce as a source type with a malicious source reference or source url. This means the vulnerability can be exploited through any package served by a compromised or malicious Composer repository. An attack does not require Perforce to be installed on the client, as Composer will attempt to execute the constructed command regardless.
This vulnerability is exploitable when installing or updating dependencies from source (--prefer-source, default when installing dev prefixed versions), even if you do not use Perforce.
Patches
Fixed in Composer 2.2.27 (2.2 LTS) and 2.9.6 (mainline)
Note, the fix for the source url in the Perforce::generateP4Command() was addressed as part of the patches for GHSA-wg36-wvj6-r67p / CVE-2026-40176 in the same versions.
Workarounds
- Avoid installing dependencies from source by using
--prefer-distor thepreferred-install: distconfig setting. - Only use trusted Composer repositories.
- Record
GHSA-gqw4-4w2p-838q- CVSS 3.1
- 8.8 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H - Weakness
- CWE-20, CWE-78
- Updated
- 2026-11-02
OSVRHSA-2026:8165
8.8
Red Hat Security Advisory: Red Hat Hardened Images RPMs bug fix and enhancement update
- Record
RHSA-2026:8165- CVSS 3.1
- 8.8 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVUBUNTU-CVE-2026-40261
8.8
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::syncCodeBase() method, which appends the $sourceReference parameter to a shell command without proper escaping, and additionally in the Perforce::generateP4Command() method as in GHSA-wg36-wvj6-r67p / CVE-2026-40176, which interpolates user-supplied Perforce connection parameters (port, user, client) from the source url field without proper escaping. An attacker can inject arbitrary commands through crafted source reference or source url values containing shell metacharacters, even if Perforce is not installed. Unlike CVE-2026-40176, the source reference and url are provided as part of package metadata, meaning any compromised or malicious Composer repository can serve package metadata declaring perforce as a source type with malicious values. This vulnerability is exploitable when installing or updating dependencies from source, including the default behavior when installing dev-prefixed versions. This issue has been fixed in Composer 2.2.27 (2.2 LTS) and 2.9.6 (mainline). If developers are unable to immediately update, they can avoid installing dependencies from source by using --prefer-dist or the preferred-install: dist config setting, and only use trusted Composer repositories as a workaround.
- Record
UBUNTU-CVE-2026-40261- CVSS 3.1
- 8.8 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVBIT-composer-2026-40261 No score
Composer has Command Injection via Malicious Perforce Reference
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::syncCodeBase() method, which appends the $sourceReference parameter to a shell command without proper escaping, and additionally in the Perforce::generateP4Command() method as in GHSA-wg36-wvj6-r67p / CVE-2026-40176, which interpolates user-supplied Perforce connection parameters (port, user, client) from the source url field without proper escaping. An attacker can inject arbitrary commands through crafted source reference or source url values containing shell metacharacters, even if Perforce is not installed. Unlike CVE-2026-40176, the source reference and url are provided as part of package metadata, meaning any compromised or malicious Composer repository can serve package metadata declaring perforce as a source type with malicious values. This vulnerability is exploitable when installing or updating dependencies from source, including the default behavior when installing dev-prefixed versions. This issue has been fixed in Composer 2.2.27 (2.2 LTS) and 2.9.6 (mainline). If developers are unable to immediately update, they can avoid installing dependencies from source by using --prefer-dist or the preferred-install: dist config setting, and only use trusted Composer repositories as a workaround.
- Record
BIT-composer-2026-40261- Updated
- 2026-11-02
OSVCLSA-2026-1787064466 No score
Fix CVE(s): CVE-2026-40176, CVE-2026-40261
- Non-maintainer upload by the TuxCare ELS team.
- CVE-2026-40261: Prevent a command injection vulnerability in
Perforce::syncCodeBase(), which appended the source reference to the
'p4 sync -f' command without escaping. Package metadata served by a
malicious or compromised Composer repository could inject shell
metacharacters, leading to command execution even when Perforce is not
installed.
- debian/patches/0018-CVE-2026-40261.patch
- CVE-2026-40176: Prevent a command injection vulnerability in
Perforce::generateP4Command(), which interpolated the Perforce
connection parameters (user, client, port) into the 'p4' command line
without escaping. A malicious composer.json declaring a Perforce VCS
repository could inject shell metacharacters, leading to command
execution even when Perforce is not installed. Also backport the
prerequisite upstream fix for Perforce::connectClient(), which passed
the client spec path through the shell redirection of the same command
line with only spaces escaped.
- debian/patches/0019-CVE-2026-40176.patch
- Record
CLSA-2026-1787064466- Updated
- 2026-11-02
OSVopenSUSE-SU-2026:10643-1 No score
php-composer2-2.9.7-1.1 on GA media
These are all security issues fixed in the php-composer2-2.9.7-1.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2026:10643-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2026:20670-1 No score
Security update for php-composer2
This update for php-composer2 fixes the following issues:
- CVE-2025-67746: ANSI control characters injection in terminal output of various Composer commands via attacker controlled remote sources (bsc#1255768).
- CVE-2026-40176: arbitrary command injection via malicious Perforce repository definition (bsc#1262254).
- CVE-2026-40261: arbitrary command injection via malicious Perforce source reference/url (bsc#1262255).
- Record
openSUSE-SU-2026:20670-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2026:21520-1 No score
Security update for php-composer2
This update for php-composer2 fixes the following issues:
- CVE-2026-45793: Github Actions issued
GITHUB_TOKENdisclosure in GitHub Actions logs (bsc#1271504). - CVE-2026-59946: path traversal in package
binfield lets dependencieschmodarbitrary host files (bsc#1271151). - CVE-2026-59947: URL-embedded HTTP-Basic username leaks to verbose logs (bsc#1271129).
- CVE-2026-59948: arbitrary file write outside
vendordirectory via malicious transitive package name (bsc#1271122).
Changes for php-composer2:
- fix byte-swapped signature on s390x can cause broken or unsupported signature (bsc#1271729).
- Record
openSUSE-SU-2026:21520-1- Updated
- 2026-11-02
OSVSUSE-SU-2026:1784-1 No score
Security update for php-composer2
This update for php-composer2 fixes the following issues:
- CVE-2026-40176: arbitrary command injection via malicious Perforce repository definition (bsc#1262254).
- CVE-2026-40261: arbitrary command injection via malicious Perforce source reference/url (bsc#1262255).
- Record
SUSE-SU-2026:1784-1- Updated
- 2026-11-02
OSVSUSE-SU-2026:1970-1 No score
Security update for php-composer2
This update for php-composer2 fixes the following issues
- CVE-2026-40176: command injection via malicious Perforce repository definition (bsc#1262254).
- CVE-2026-40261: command injection via malicious Perforce source reference/url (bsc#1262255).
Changes for php-composer2:
- version update to 2.2.27 (align with upstream LTS version)
- Security: Hardened git/hg/perforce/fossil identifier validation to ensure branch names starting with - do not cause issues (246f807b, 246f807b, 246f807b)
- Security: Fixed Perforce unescaped user input in queryP4User shell command (246f807b)
- Security: Fixed usage of insecure 3DES ciphers when ext-curl is missing (21ffece62)
- Fixed issue handling paths with = in them on Windows (#11568)
- version 2.2.26 2025-12-30
- Security: Fixed ANSI sequence injection (GHSA-59pp-r3rg-353g / CVE-2025-67746)
- version 2.2.25 2024-12-11
- Fixed deprecation notices appearing on this LTS version in case it is used on modern PHP. Modern PHP support is not guaranteed nor tested for though and the main purpose of LTS releases is legacy PHP versions support. (#12217)
- Fixed issue on plugin upgrade when it defines multiple classes (#12226)
- Fixed duplicate errors appearing in the output depending on php settings (#12214)
- Fixed InstalledVersions returning duplicate data in some instances (#12225)
- version 2.2.24 2024-06-10
- Security: Fixed command injection via malicious git branch name (GHSA-47f6-5gq3-vx9c / CVE-2024-35241)
- Security: Fixed multiple command injections via malicious git/hg branch names (GHSA-v9qv-c7wm-wgmf / CVE-2024-35242)
- Security: Fixed secure-http checks that could be bypassed by using malformed URL formats (fa3b9582c)
- Security: Fixed Filesystem::isLocalPath including windows-specific checks on linux (3c37a67c)
- Security: Fixed perforce argument escaping (3773f775)
- Security: Fixed handling of zip bombs when extracting archives (de5f7e32)
- Security: Fixed Windows command parameter escaping to prevent abuse of unicode characters with best fit encoding
- conversion (3130a7455, 04a63b324)
- version 2.2.23 2024-02-08
- Security: Fixed code execution and possible privilege escalation via compromised vendor dir contents (GHSA-7c6p-848j-wh5h / CVE-2024-24821)
- version 2.2.22 2023-09-29
- Security: Fixed possible remote code execution vulnerability if composer.phar is publicly accessible, executable as PHP, and register_argc_argv is enabled in php.ini (GHSA-jm6m-4632-36hf / CVE-2023-43655)
- Fixed authentication issue when downloading several files from private Bitbucket in parallel (#11464)
- Fixed handling of broken junctions on windows (#11550)
- Fixed loading of root aliases on path repo packages when doing partial updates (#11632)
- Fixed parsing of lib-curl-openssl version with OSX SecureTransport (#11534)
- Fixed binary proxies not being transparent when included by another PHP process and returning a value (#11454)
- Fixed support for plugin classes being marked as readonly (#11404)
- Fixed GitHub rate limit reporting (#11366)
- Fixed issue displaying solver problems with branch names containing % signs (#11359)
- version 2.2.21 2023-02-15
- Fixed extra.plugin-optional support in PluginInstaller when doing pre-install checks (#11326)
- version 2.2.20 2023-02-10
- Added extra.plugin-optional support for allow auto-disabling unknown plugins which are not critical when running non-interactive (#11315)
- version 2.2.19 2023-02-04
- Fixed URL sanitizer to handle new GitHub personal access tokens format (#11137)
- Fixed cache keys to allow _ to avoid conflicts between package names like a-b and a_b (#11229)
- Fixed handling of --ignore-platform-req with upper-bound ignores to not apply to conflict rules (#11037)
- Fixed handling of COMPOSER_DISCARD_CHANGES when set to 0
- version 2.2.18 2022-08-20
- Fixed COMPOSER_NO_DEV so it also works with require and remove's --update-no-dev (#10995)
- Fixed duplicate missing extension warnings being…
- Record
SUSE-SU-2026:1970-1- Updated
- 2026-11-02
OSVSUSE-SU-2026:21542-1 No score
Security update for php-composer2
This update for php-composer2 fixes the following issues:
- CVE-2025-67746: ANSI control characters injection in terminal output of various Composer commands via attacker controlled remote sources (bsc#1255768).
- CVE-2026-40176: arbitrary command injection via malicious Perforce repository definition (bsc#1262254).
- CVE-2026-40261: arbitrary command injection via malicious Perforce source reference/url (bsc#1262255).
- Record
SUSE-SU-2026:21542-1- Updated
- 2026-11-02
OSVSUSE-SU-2026:23116-1 No score
Security update for php-composer2
This update for php-composer2 fixes the following issues:
- CVE-2026-45793: Github Actions issued
GITHUB_TOKENdisclosure in GitHub Actions logs (bsc#1271504). - CVE-2026-59946: path traversal in package
binfield lets dependencieschmodarbitrary host files (bsc#1271151). - CVE-2026-59947: URL-embedded HTTP-Basic username leaks to verbose logs (bsc#1271129).
- CVE-2026-59948: arbitrary file write outside
vendordirectory via malicious transitive package name (bsc#1271122).
Changes for php-composer2:
- fix byte-swapped signature on s390x can cause broken or unsupported signature (bsc#1271729).
- Record
SUSE-SU-2026:23116-1- Updated
- 2026-11-02
OSVSUSE-SU-2026:23138-1 No score
Security update for php-composer2
This update for php-composer2 fixes the following issues:
- CVE-2026-45793: Github Actions issued
GITHUB_TOKENdisclosure in GitHub Actions logs (bsc#1271504). - CVE-2026-59946: path traversal in package
binfield lets dependencieschmodarbitrary host files (bsc#1271151). - CVE-2026-59947: URL-embedded HTTP-Basic username leaks to verbose logs (bsc#1271129).
- CVE-2026-59948: arbitrary file write outside
vendordirectory via malicious transitive package name (bsc#1271122).
Changes for php-composer2:
- fix byte-swapped signature on s390x can cause broken or unsupported signature (bsc#1271729).
- Record
SUSE-SU-2026:23138-1- Updated
- 2026-11-02
OSVSUSE-SU-2026:3105-1 No score
Security update for php-composer2
This update for php-composer2 fixes the following issues:
- CVE-2026-45793: Github Actions issued
GITHUB_TOKENdisclosure in GitHub Actions logs (bsc#1271504). - CVE-2026-59946: path traversal in package
binfield lets dependencieschmodarbitrary host files (bsc#1271151). - CVE-2026-59947: URL-embedded HTTP-Basic username leaks to verbose logs (bsc#1271129).
- CVE-2026-59948: arbitrary file write outside
vendordirectory via malicious transitive package name (bsc#1271122).
- Record
SUSE-SU-2026:3105-1- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
composer/composerPackagist |
2.3.0 up to 2.9.6 | 2.9.6 |
composer/composerPackagist |
1.0.0 up to 2.2.27 | 2.2.27 |
composerAlpine:v3.23 |
1.0.0 up to 2.9.6-r0 | 2.9.6-r0 |
composerAlpine:v3.24 |
1.0.0 up to 2.9.6-r0 | 2.9.6-r0 |
composerBitnami |
1.0.0 up to 2.2.27, 2.3.0 up to 2.9.6 | 2.2.272.9.6 |
composerTuxCare:Debian:10 |
before 1.8.4-1+deb10u4+tuxcare.els1 | 1.8.4-1+deb10u4+tuxcare.els1 |
composerDebian:12 |
before 2.5.5-1+deb12u4, plus listed versions 2.5.5-12.5.5-1+deb12u12.5.5-1+deb12u22.5.5-1+deb12u3 |
2.5.5-1+deb12u4 |
composerDebian:13 |
before 2.8.8-1+deb13u2, plus listed versions 2.8.8-12.8.8-1+deb13u1 |
2.8.8-1+deb13u2 |
composerDebian:14 |
before 2.9.7-1, plus listed versions 2.8.10-12.8.11-12.8.11-22.8.12-12.8.8-1 Show 7 moreShow less2.8.9-12.9.0~rc1-12.9.1-12.9.2-12.9.3-12.9.4-12.9.5-1 |
2.9.7-1 |
composer/composerPackagist |
2.3.0 up to 2.9.6, plus listed versions 2.3.12.3.102.3.22.3.32.3.4 Show 45 moreShow less2.3.52.3.62.3.72.3.82.3.92.4.02.4.0-RC12.4.12.4.22.4.32.4.42.5.02.5.12.5.22.5.32.5.42.5.52.5.62.5.72.5.82.6.02.6.12.6.22.6.32.6.42.6.52.6.62.7.02.7.12.7.22.7.32.7.42.7.52.7.62.7.72.7.82.7.92.8.02.8.12.8.102.8.112.8.122.8.22.8.32.8.4 |
2.9.6 |
Show 17 moreShow less
| Package | Affected | Fixed |
|---|---|---|
composer/composerPackagist |
1.0.0 up to 2.2.27, plus listed versions 1.0.11.0.21.0.31.1.01.1.0-RC Show 45 moreShow less1.1.11.1.21.1.31.10.01.10.0-RC1.10.11.10.101.10.111.10.121.10.131.10.141.10.151.10.161.10.171.10.181.10.191.10.21.10.201.10.211.10.221.10.231.10.241.10.251.10.261.10.271.10.281.10.31.10.41.10.51.10.61.10.71.10.81.10.91.2.01.2.0-RC1.2.11.2.21.2.31.2.41.3.01.3.0-RC1.3.11.3.21.3.31.4.0 |
2.2.27 |
composerRed Hat:hummingbird:1 |
before 0:2.9.7-1.hum1 | 0:2.9.7-1.hum1 |
php-composer2SUSE:Linux Enterprise Server 16.0 |
before 2.8.9-160000.4.1 | 2.8.9-160000.4.1 |
php-composer2SUSE:Linux Enterprise Server for SAP applications 16.0 |
before 2.8.9-160000.4.1 | 2.8.9-160000.4.1 |
php-composer2SUSE:Linux Enterprise Module for Web and Scripting 15 SP7 |
before 2.6.4-150600.3.12.1 | 2.6.4-150600.3.12.1 |
php-composer2SUSE:Linux Enterprise Server 15 SP6-LTSS |
before 2.6.4-150600.3.12.1 | 2.6.4-150600.3.12.1 |
php-composer2SUSE:Linux Enterprise Server for SAP Applications 15 SP6 |
before 2.6.4-150600.3.12.1 | 2.6.4-150600.3.12.1 |
composerUbuntu:Pro:16.04:LTS |
All versions, plus listed versions 1.0.0~alpha10+20150602-11.0.0~alpha10+20150602-21.0.0~alpha11-11.0.0~alpha11-1ubuntu11.0.0~alpha11-2 Show 5 moreShow less1.0.0~alpha11-31.0.0~beta1-1ubuntu11.0.0~beta2-11.0.0~beta2-1ubuntu0.1~esm11.0.0~beta2-1ubuntu0.1~esm2 |
None known |
composerUbuntu:Pro:18.04:LTS |
All versions, plus listed versions 1.5.1-11.5.2-11.6.2-11.6.3-11.6.3-1ubuntu0.1~esm11.6.3-1ubuntu0.1~esm2 |
None known |
composerUbuntu:Pro:20.04:LTS |
All versions, plus listed versions 1.9.0-21.9.1-11.9.2-11.9.3-11.10.0-11.10.1-11.10.1-1ubuntu0.1~esm11.10.1-1ubuntu0.1~esm2 |
None known |
composerUbuntu:Pro:22.04:LTS |
All versions, plus listed versions 2.0.9-2ubuntu22.0.9-2ubuntu32.0.13-1ubuntu12.1.12-1ubuntu12.2.6-2ubuntu42.2.6-2ubuntu4+esm1 |
None known |
composerUbuntu:Pro:24.04:LTS |
All versions, plus listed versions 2.5.8-12.6.5-12.6.6-12.7.1-22.7.1-2ubuntu0.1~esm1 |
None known |
composerUbuntu:25.10 |
All versions, plus listed versions 2.8.6-12.8.8-1 |
None known |
composerUbuntu:26.10 |
All versions, plus listed versions 2.9.5-12.10.1-22.10.2-1 |
None known |
composerUbuntu:26.04:LTS |
All versions, plus listed versions 2.8.8-12.9.5-1 |
None known |
php-composer2openSUSE:Tumbleweed |
before 2.9.7-1.1 | 2.9.7-1.1 |
php-composer2openSUSE:Leap 16.0 |
before 2.8.9-160000.4.1 | 2.8.9-160000.4.1 |
Public exploits
Links only. Every CVE stores no exploit code.
| Source | Link | Date |
|---|---|---|
| PoC in GitHub | terminat0r7031/composer-CVE-2026-40261-CVE-2026-40176-PoC | 2026-04-16 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, aliases, references | OSV | |
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV, PoC in GitHub |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-40261 is a high vulnerability (CVSS 8.8) in Composer, published April 14, 2026. Public exploit code exists. EPSS puts the chance of exploitation in the next 30 days at 1.69%, the 77th percentile. Fixed in composer/composer 2.9.6.
References
github.com/composer/composer/security/advisories/GHSA-gqw4-4w2p-838q
github.com/composer/composer/releases/tag/2.9.6
access.redhat.com/security/cve/CVE-2026-40261
bugzilla.redhat.com/show_bug.cgi?id=2458841
security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-40261.json
access.redhat.com/errata/RHSA-2026:8165
Show 53 moreShow less
github.com/FriendsOfPHP/security-advisories/blob/master/composer/composer/CVE-2026-40261.yaml
nvd.nist.gov/vuln/detail/CVE-2026-40261
github.com/advisories/GHSA-gqw4-4w2p-838q
security.alpinelinux.org/vuln/CVE-2026-40261
errata.tuxcare.com/els_os/debian10els/CLSA-2026-1787064466.html
nvd.nist.gov/vuln/detail/CVE-2026-40176
github.com/CVEProject/cvelistV5/tree/main/cves/2026/40xxx/CVE-2026-40261.json
security-tracker.debian.org/tracker/CVE-2026-40261
github.com/composer/composer
images.redhat.com
access.redhat.com/security/updates/classification
access.redhat.com/security/cve/CVE-2026-40176
access.redhat.com/security/cve/CVE-2025-67746
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_8165.json
bugzilla.redhat.com/show_bug.cgi?id=2426283
cve.org/CVERecord?id=CVE-2025-67746
nvd.nist.gov/vuln/detail/CVE-2025-67746
github.com/composer/composer/commit/1d40a95c9d39a6b7f80d404ab30336c586da9917
github.com/composer/composer/commit/5db1876a76fdef76d3c4f8a27995c434c7a43e71
github.com/composer/composer/releases/tag/2.2.26
github.com/composer/composer/releases/tag/2.9.3
github.com/composer/composer/security/advisories/GHSA-59pp-r3rg-353g
bugzilla.redhat.com/show_bug.cgi?id=2458828
cve.org/CVERecord?id=CVE-2026-40176
github.com/composer/composer/security/advisories/GHSA-wg36-wvj6-r67p
cve.org/CVERecord?id=CVE-2026-40261
suse.com/support/update/announcement/2026/suse-su-20261784-1
bugzilla.suse.com/1262254
bugzilla.suse.com/1262255
suse.com/security/cve/CVE-2026-40176
suse.com/security/cve/CVE-2026-40261
suse.com/support/update/announcement/2026/suse-su-20261970-1
suse.com/security/cve/CVE-2022-24828
suse.com/security/cve/CVE-2023-43655
suse.com/security/cve/CVE-2024-24821
suse.com/security/cve/CVE-2024-35241
suse.com/security/cve/CVE-2024-35242
suse.com/security/cve/CVE-2025-67746
suse.com/support/update/announcement/2026/suse-su-202621542-1
bugzilla.suse.com/1255768
suse.com/support/update/announcement/2026/suse-su-202623116-1
bugzilla.suse.com/1271122
bugzilla.suse.com/1271129
bugzilla.suse.com/1271151
bugzilla.suse.com/1271504
bugzilla.suse.com/1271729
suse.com/security/cve/CVE-2026-45793
suse.com/security/cve/CVE-2026-59946
suse.com/security/cve/CVE-2026-59947
suse.com/security/cve/CVE-2026-59948
suse.com/support/update/announcement/2026/suse-su-202623138-1
suse.com/support/update/announcement/2026/suse-su-20263105-1
ubuntu.com/security/CVE-2026-40261
Left out here: 108 versions and the rest of 1 source description. The JSON record has them.