Pakiet goodoneuz/pay-uz w wersjach do 2.2.24 włącznie zawiera krytyczną podatność umożliwiającą nieuwierzytelnionemu atakującemu zdalne wykonanie kodu (RCE). Endpoint /payment/api/editable/update jest dostępny bez żadnego mechanizmu uwierzytelnienia, co pozwala na dowolną modyfikację plików PHP obsługujących płatności.
▸ Pokaż oryginał (EN)
The goodoneuz/pay-uz Laravel package (<= 2.2.24) contains a critical vulnerability in the /payment/api/editable/update endpoint that allows unauthenticated attackers to overwrite existing PHP payment hook files. The endpoint is exposed via Route::any() without authentication middleware, enabling remote access without credentials. User-controlled input is directly written into executable PHP files using file_put_contents(). These files are later executed via require() during normal payment processing workflows, resulting in remote code execution under default application behavior. The payment secret token mentioned by the vendor is unrelated to this endpoint and does not mitigate the vulnerability.
Endpoint /payment/api/editable/update jest zarejestrowany przez Route::any() bez zastosowania middleware uwierzytelniającego, co oznacza, że każdy zdalny użytkownik może się do niego odwołać bez podania danych uwierzytelniających. Dane kontrolowane przez użytkownika są bezpośrednio zapisywane do istniejących plików PHP obsługujących płatności (payment hook files) za pomocą funkcji file_put_contents(). Tak zmodyfikowane pliki są następnie ładowane przez require() podczas standardowego przetwarzania transakcji płatniczych, co prowadzi do wykonania dostarczonego przez atakującego kodu PHP. Vendor wskazuje na token sekretu płatności jako zabezpieczenie, jednak nie jest on powiązany z tym endpointem i nie stanowi żadnej mitigacji.
Atakujący bez jakiegokolwiek uwierzytelnienia może nadpisać pliki PHP aplikacji własnym kodem i doprowadzić do zdalnego wykonania kodu (RCE) w kontekście serwera aplikacji, uzyskując tym samym pełną kontrolę nad systemem oraz potencjalnie nad przetwarzaniem transakcji płatniczych.
Należy zastosować patche dostępne u producenta zgodnie z referencjami. Do czasu aktualizacji zaleca się zablokowanie dostępu do endpointu /payment/api/editable/update na poziomie firewall lub serwera WWW oraz weryfikację integralności plików PHP obsługujących płatności.
Pakiet goodoneuz/pay-uz dla frameworka Laravel w wersjach do 2.2.24 włącznie
Dostawca błędnie wskazuje token sekretu płatności jako zabezpieczenie — zgodnie z opisem podatności token ten nie jest powiązany z podatnym endpointem i nie ogranicza możliwości ataku.
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X