Vendor Phpunit Phpunit Src Util Php Eval-stdin.php Cve Page
Simply updating PHPUnit via Composer does not remove the vulnerable file if it already exists. A Composer update adds new versions but leaves old files behind unless you purge first.
Correct remediation:
# 1. Remove the entire vendor directory
rm -rf vendor/
PHPUnit is the de facto standard for unit testing in PHP. It is a development dependency, not a runtime dependency. In an ideal, secure world, PHPUnit resides only on a developer's laptop or a CI/CD server. vendor phpunit phpunit src util php eval-stdin.php cve
However, two common mistakes led to the disaster:
When PHPUnit is placed inside a publicly accessible vendor/phpunit/phpunit/src/Util/PHP/ directory, the trap is set. Simply updating PHPUnit via Composer does not remove
If the file is accessible at:
https://target.com/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php
An attacker can send:
curl -d "<?php system('id'); ?>" https://target.com/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php
The server would execute id and return the output.