GitHub Advisoryadvisory · Packagist

GHSA-x7cr-6qr6-2hh6 Missing input validation can lead to command execution in composer

HIGH Published 2022-04-22 Modified 2022-04-22 Official page ↗
Aliases
CVE-2022-24828
Ecosystem
Packagist
Packages
composer/composer
Severity
High
CVSS vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:H/I:H/A:H
Weaknesses
CWE-20, CWE-88, CWE-94
Reviewed
2022-04-22

Affected packages

• Packagist composer/composer: < 1.10.26 → fixed in 1.10.26 • Packagist composer/composer: >= 2.0, < 2.2.12 → fixed in 2.2.12 • Packagist composer/composer: >= 2.3, < 2.3.5 → fixed in 2.3.5

Description

The Composer method `VcsDriver::getFileContent()` with user-controlled `$file` or `$identifier` arguments is susceptible to an argument injection vulnerability. It can be leveraged to gain arbitrary command execution if the Mercurial or the Git driver are used. This led to a vulnerability on Packagist.org and Private Packagist, i.e., using the composer.json `readme` field as a vector for injecting parameters into the `$file` argument for the Mercurial driver or via the `$identifier` argument for the Git and Mercurial drivers. Composer itself can be attacked through branch names by anyone controlling a Git or Mercurial repository, which is explicitly listed by URL in a project's composer.json. To the best of our knowledge, this was not actively exploited. The vulnerability has been patched on Packagist.org and Private Packagist within a day of the vulnerability report.

Related

Alias · CVE (1)

  • CVE-2022-24828 Composer is a dependency manager for the PHP programming language. vulnerability

Weakness · CWE (3)

  • CWE-20 Improper Input Validation weakness
  • CWE-88 Improper Neutralization of Argument Delimiters in a Command weakness
  • CWE-94 Improper Control of Generation of Code weakness

References