News

Composer 2.9.6 Fixes Two Perforce Command Injection Vulnerabilities

Published
Composer 2.9.6 Fixes Two Perforce Command Injection Vulnerabilities image

Composer has released version 2.9.6 and 2.2.27 LTS to address two command injection vulnerabilities in its Perforce VCS driver: CVE-2026-40261 and CVE-2026-40176.

Please immediately update Composer to version 2.9.6 or 2.2.27 (LTS) by running composer.phar self-update. The new releases include fixes for two command injection security vulnerabilities in the Perforce VCS driver. CVE-2026-40261 was reported by Koda Reef and CVE-2026-40176 was reported by saku0512.

To the best of our knowledge, neither vulnerability has been exploited prior to publication.

The vulnerabilities are located in Composer's Perforce VCS driver and involve insufficient escaping of values used in shell command construction.

Vulnerability Details

The first issue, CVE-2026-40176, affects the Perforce::generateP4Command() method. It can be exploited if a malicious project includes attacker-controlled Perforce connection parameters such as the port, user, or client in a root composer.json file. This is limited to the root project configuration or Composer config, not dependency package composer.json files.

The second issue, CVE-2026-40261, impacts the Perforce::syncCodeBase() method. It allows command injection via a crafted source reference. This can occur when installing or updating dependencies from a malicious or compromised Composer repository, especially when using source installs like --prefer-source (default for dev versions). Notably, Perforce does not need to be installed for the injected command to be attempted.

Mitigation and Recommendations

The Composer team recommends updating immediately and both issues are fixed in Composer 2.9.6 (mainline) and 2.2.27 (2.2 LTS):

composer self-update

Additional mitigation steps include:

  • Prefer distribution installs: --prefer-dist or preferred-install: dist
  • Avoid untrusted Composer repositories
  • Review composer.json before running Composer on unfamiliar projects

Packagist reports that scans of Packagist.org and Private Packagist found no evidence of exploitation. As a precaution:

  • Perforce source metadata publication on Packagist.org was disabled on April 10, 2026
  • The Perforce VCS driver has been disabled on Private Packagist since that date

At the time of disclosure, there is no indication that these vulnerabilities were exploited in the wild.

If you rely on Composer in local development, CI pipelines, or automated workflows, you should verify your version and upgrade to a patched release as soon as possible.

Read their full announcement for all the details.

Eric L. Barnes photo

Eric is the creator of Laravel News and has been covering Laravel since 2012.

Filed in

Sponsored

laravelcloud logo
Laravel Cloud

Easily create and manage your servers and deploy your Laravel applications in seconds.

Visit Laravel Cloud

The latest

View all →
Laravel Auditor Audits Your App With Your Own AI Agent image

Laravel Auditor Audits Your App With Your Own AI Agent

Read article
A simple form builder that stays out of your way image

A simple form builder that stays out of your way

Read article
Laravel AI: Trace Agent Runs With Lifecycle Events image

Laravel AI: Trace Agent Runs With Lifecycle Events

Read article
Laravel AI: Get Raw HTTP Responses and Rate Limits image

Laravel AI: Get Raw HTTP Responses and Rate Limits

Read article
Agent Run Observability in Laravel AI SDK 0.11 image

Agent Run Observability in Laravel AI SDK 0.11

Read article
Debounced Queued Event Listeners in Laravel image

Debounced Queued Event Listeners in Laravel

Read article