Szczegóły krytycznych luk w środowisku uruchomieniowym PHP
Projekt PHP opublikował wersje 8.5.12, 8.4.27, 8.3.36 oraz 8.2.35 w celu usunięcia dwóch podatności oznaczonych jako CVE-2026-109618 i CVE-2026-109619. Obie luki otrzymały ocenę 9,2 w skali CVSS i umożliwiają nieuwierzytelnionemu atakującemu zdalne wykonanie kodu. Błędy występują w samym środowisku uruchomieniowym PHP, a nie w pakietach menedżera zależności.
Podatności tkwią w cyklu życia żądania silnika PHP, co oznacza, że są osiągalne zanim uruchomi się jakikolwiek kod aplikacji. Najbardziej narażony jest serwer Apache z modułem mod_php, gdzie udowodniono możliwość przeprowadzenia ataku za pomocą pojedynczego żądania.
CVE-2026-109618: Uszkodzenie pamięci
Ta luka wynika ze sposobu obsługi braku pamięci, który może przerwać działanie PHP w momencie, gdy wewnętrzne dane żądania są zainicjalizowane tylko częściowo. Procedura czyszczenia traktuje wówczas niepoprawne dane jako prawidłowe. Osoba atakująca, która doprowadzi worker do limitu pamięci za pomocą złośliwego żądania, może wywołać to przerwanie.
CVE-2026-109619: Stan globalny po zwolnieniu pamięci
W tym przypadku wewnętrzny stan powiązany z żądaniem przetrwa pomimo zwolnienia pamięci, na której się opierał. Kolejne żądanie obsługiwane przez ten sam worker może użyć przestarzałego stanu przed jego ponownym zainicjalizowaniem. W modelu długowiecznych workerów stanowi to błąd typu use-after-free występujący między różnymi żądaniami.
Wymagane działania i zalecenia
Wszystkie instalacje PHP obsługujące ruch webowy, w tym PHP-FPM, Apache z mod_php, php-cgi, FrankenPHP oraz LiteSpeed, są narażone na niebezpieczeństwo. Zespół bezpieczeństwa PHP podkreśla, że nie istnieją kompletne obejścia problemu, a aktualizacja jest jedynym bezpiecznym rozwiązaniem.
Działania dla administratorów systemów
Należy niezwłocznie zaktualizować PHP do wersji 8.5.12, 8.4.27, 8.3.36 lub 8.2.35. Wersja 8.2 osiąga koniec wsparcia pod koniec roku, co stanowi dodatkowy sygnał do planowania migracji. W przypadku korzystania z dystrybucji Linuksa zaleca się pobranie przygotowanych przez nie pakietów zamiast kompilacji ze źródeł. Wersja 8.1 oraz starsze nie otrzymują już oficjalnych aktualizacji, dlatego wymagają przejścia na wspieraną gałąź lub uzyskania wstecznie przeniesionych poprawek od dostawcy.
Tymczasowe obejścia przy braku możliwości natychmiastowej aktualizacji
Jeśli natychmiastowa aktualizacja jest niemożliwa, PHP wskazuje konfiguracje ograniczające ekspozycję na konkretne ścieżki ataku, choć nie czynią one systemu w pełni bezpiecznym. Należą do nich ustawienie memory_limit=-1 tam, gdzie aplikacje nie mogą go nadpisać, niska wartość post_max_size, wyłączenie session.upload_progress.enabled=0 połączone z restartem każdego workera oraz włączenie fatal_error_backtraces=0 w wersji 8.5.