Podatność w bibliotece PHPUnit umożliwia nieuwierzytelnionym atakującym zdalne wykonanie dowolnego kodu PHP (RCE) poprzez wysłanie żądania HTTP POST do pliku eval-stdin.php. Jest krytycznie groźna, ponieważ nie wymaga żadnego uwierzytelnienia ani interakcji użytkownika, a plik podatny na atak bywa publicznie dostępny w wielu wdrożeniach.
▸ Pokaż oryginał (EN)
Util/PHP/eval-stdin.php in PHPUnit before 4.8.28 and 5.x before 5.6.3 allows remote attackers to execute arbitrary PHP code via HTTP POST data beginning with a "<?php " substring, as demonstrated by an attack on a site with an exposed /vendor folder, i.e., external access to the /vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php URI.
Plik Util/PHP/eval-stdin.php w PHPUnit odczytuje dane wejściowe ze standardowego wejścia i przekazuje je do funkcji eval() bez jakiejkolwiek walidacji. Atakujący wysyła żądanie HTTP POST zawierające payload rozpoczynający się od ciągu "<?php ", który jest następnie interpretowany i wykonywany jako kod PHP po stronie serwera. Warunkiem koniecznym do przeprowadzenia ataku jest dostępność katalogu /vendor z zewnątrz, co zdarza się w przypadku błędnie skonfigurowanych aplikacji webowych, w których biblioteki deweloperskie nie są odizolowane od środowiska produkcyjnego.
Atakujący może zdalnie wykonać dowolny kod PHP z uprawnieniami procesu serwera WWW, co w praktyce oznacza możliwość pełnego przejęcia kontroli nad serwerem, kradzieży danych, instalacji backdoorów lub dalszego lateral movement w sieci.
Należy zaktualizować PHPUnit do wersji 4.8.28 lub nowszej (dla gałęzi 4.x) albo do wersji 5.6.3 lub nowszej (dla gałęzi 5.x). Niezależnie od aktualizacji należy zablokować zewnętrzny dostęp do katalogu /vendor w konfiguracji serwera WWW (np. przez reguły w .htaccess lub konfiguracji nginx). Biblioteki deweloperskie nie powinny być wdrażane w środowiskach produkcyjnych.
PHPUnit w wersjach przed 4.8.28 oraz w gałęzi 5.x przed 5.6.3; podatność dotyczy również produktu Oracle Communications Diameter Signaling Router zawierającego komponent PHPUnit
Podatność jest aktywnie eksploatowana in-the-wild — figuruje w katalogu CISA KEV. Wektor ataku zakłada błąd konfiguracyjny po stronie wdrożenia (publiczny dostęp do katalogu /vendor), co jest częstym problemem w aplikacjach PHP opartych na Composer.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HOracle Communications Diameter Signaling Router
APPOracle8.0.0 – 8.5.0Phpunit Project Phpunit
APPPhpunit Project≤ 4.8.275.0.0 – 5.6.3 (bez)
CISA KEV — szczegółyi
- Dostawcai
- PHPUnit
- Produkti
- PHPUnit
- Data dodania do KEVi
- 15 lutego 2022
- Termin remediation (USA)i
- 15 sierpnia 2022(po terminie)
Zastosuj aktualizacje zgodnie z instrukcjami producenta.
▸ Pokaż oryginał (EN)
Apply updates per vendor instructions.
PHPUnit pozwala zdalnym atakującym na wykonanie dowolnego kodu PHP poprzez dane HTTP POST rozpoczynające się podciągiem "<?php ", co zostało wykazane w ataku na witrynę z eksponowanym folderem /vendor, tj. zewnętrzny dostęp do URI /vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php.
▸ Pokaż oryginał (EN)
PHPUnit allows remote attackers to execute arbitrary PHP code via HTTP POST data beginning with a "<?php " substring, as demonstrated by an attack on a site with an exposed /vendor folder, i.e., external access to the /vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php URI.
Powiązane podatności
RCE przez deserializację w Oracle Coherence via protokół T3
RCE w pluginie WS-Addressing biblioteki Genivia gSOAP
Apache ActiveMQ — RCE przez błędną konfigurację JMX RMIConnectorServer
Apache Camel Netty — niebezpieczna deserializacja Java (RCE)
Apache Camel RabbitMQ — niebezpieczna deserializacja Java (RCE)