A crafted composer.lock or vendor/composer/installed.json could cause Composer to run an arbitrary system command while resolving downloads during composer install or composer update. This is data-driven arbitrary command execution: it does not require a malicious package to be installed or any package code to run, only the ability to influence those two files, and the command runs before any checksum or integrity check. It is not a flaw in how trusted package code executes.
You are affected if all of the following hold:
composer install or composer update against a composer.lock or vendor/composer/installed.json whose contents an attacker could influence.
Realistic ways that file becomes attacker-influenced include a pull request that only edits composer.lock, a shared or scaffolded project template that ships a lock file, a compromised dependency-update bot, or a CI cache that restores a poisoned lock or installed file.
You are plainly not affected if nothing untrusted can modify your lock or installed-packages files, or if you are on the 2.2 LTS line (or any release before 2.10.0), which never had the affected option handling.
The single most realistic way to get hit: automated CI that checks out a branch and runs composer install without a human reviewing the lock-file change. --no-scripts and --no-plugins do not prevent it.Fixed in 2.11.2. The fix makes Composer ignore these download-time callback options when they come from the lock or installed-packages file, and only honor them when they are set programmatically.
The only complete fix is upgrading. To reduce risk until then, do not run composer install/update on lock or installed files from untrusted sources (unreviewed pull requests outside of CI running sandboxed, third-party templates, shared caches).
소스: NVD
무료 취약점 평가
9개 보안 영역에서 클라우드 보안 관행을 평가하여 위험 수준을 벤치마킹하고 방어의 허점을 파악하세요.
맞춤형 데모를 받아보세요
"내가 본 최고의 사용자 경험은 클라우드 워크로드에 대한 완전한 가시성을 제공합니다."
"Wiz는 클라우드 환경에서 무슨 일이 일어나고 있는지 볼 수 있는 단일 창을 제공합니다."
"우리는 Wiz가 무언가를 중요한 것으로 식별하면 실제로 중요하다는 것을 알고 있습니다."