PHP2Shell wybuchł: CVSS 9.2, dzień przed otwarciem, a dwa otwory były zakodowane przez 10 lat.
Po pierwsze, wniosek jest następujący:PHP wyprodukowało nieautoryzowany zdalny kod dla CVSS 9.2, numery CVE- 2026- 109618 i CVE- 2026- 109619, z pseudonimem PHP2Shell. 20 października upubliczniono go i 21 października na 1400 platformach UTC, podczas gdy pojemniki na miód Amazona zostały zarejestrowane 17 października - 4 dni przed otwarciem.
Co gorsza, to druga rzecz: te dwie dziury są pierwsze, aby dostać się do PHP 5.4, co oznacza...Są zakodowane od ponad dekady.Nie wiem. I w 2024 roku, kiedy główny audyt programistów PHP odkrył ścieżkę OOM, zespół spotkał się, aby omówić, jak to naprawić.Nie zgodziliśmy się, a potem tego nie naprawiliśmy.Nie wiem. Powodem jest to, że nikt nie myślał, że można go naprawdę użyć.
To zdanie wygląda teraz wyjątkowo ironicznie. Powodem, dla którego nie można tego zrobić, nie jest to, że otwór jest nieistotny, ale że łańcuch jest zbyt złożony, aby wykraczać poza możliwości fizyczne naukowców. Potem przyszedł Al i to spisał.
Po pierwsze, usuń słowo "międzynarodowe reagowanie awaryjne". Spójrz.
Ulubione słowo partii to "globalny alarm". Tym razem to nie przesada, ale to czysty wynik.
- Oficjalne PHP: Zawiadomienie z wyprzedzeniem zostało wydane w dniu 20 października, stwierdzając, że w dniu 21 października o godzinie 14: 00 UTC zostanie wydany w wersji zabezpieczonej, jeżeli szczegóły zostaną ujawnione lub ujawnione. W rezultacie, numer CVE został dźgnięty w Hacker News tego samego dnia, a zwolnienie zaplanowane na 22 października zostało wymuszone na dzień wcześniej.
- CERT - UE: wydanie doradztwo 2026-018 i zawierają zarówno CVE.
- Chmura21 października CTO Dane Knecht bezpośrednio powiedział "wczesny atak miał się pojawić", a zasady WAF zostały w pełni wydane, w tym darmowych użytkowników. Ale podkreślił, że to tylko przerwa, a prawdziwym rozwiązaniem było łatanie.
- Informacje o zagrożeniach dla Amazona: Puszki na miód MadPot zostały złowione 17 października, a kolejna partia została złapana 21 października, a ładunek i infrastruktura wskazywały na szereg różnych atakujących. php2shell "jest już szeroko stosowany".
- Watch Towr: Oba otwory są ponownie wyłonione, podczas gdy próby wykorzystania obu są obserwowane.
Więc "atak został znaleziony" nie jest renderowaniem, ale faktem. Wielonarodowa reakcja kryzysowa nie jest ciosem -- chodzi o to, że głównymi obiektami reakcji są producenci, CDN i organizacje ratownicze, a nie żaden rząd w kraju.
Dwie, dwie dziury, dwa zupełnie różne sposoby na śmierć.
Wielu ludzi myśli, że to dziura z dwoma liczbami. Są to dwie odrębne drogi ataku, każde CVSS 9.2.
CVE- 2026- 109618: Bomba po wyczerpaniu pamięci
Przetwarzanie żądania jest przerywane, gdy dystrybucja pamięci PHP nie działa. Problem w tym, że:W tym momencie dane dotyczące wewnętrznego żądania mogły być tylko częściowo inicjalizowane, a późniejsza logika oczyszczania użyłaby tego niewbudowanego zbioru złych danych jako ważnych danych.
Metoda wyzwalania jest prosta: skonstruować wieloczęściowy wniosek implodować pamięć. Dziwne jest to,Wielkość wniosku wydaje się pasować do sufitu.Nie chodzi o rozmiar maks, tylko o dekodowanie i zużycie wewnętrznego przetwarzania.
Najgorsze jest mod php. NameTo i tak posprząta., więc ten łańcuch może być ukończony przed jakimkolwiek właściwym kodzie działa. Twój kod PHP jest tak czysty, że nie ma luki, nie można go zatrzymać.
PHP- FPM zabije pracownika, gdy nie zacznie, tylko, aby odciąć łańcuch, więc oficjalnie, mod php jest najwyższym ryzykiem. Ale uwaga - to nie znaczy, że FPM jest bezpieczny.Po pomyślnym uruchomieniuNadal istnieje możliwość wyzysku.
CVE- 2026- 109619: Brudny stan pomiędzy wnioskami
Ten jest gorszy. PHP ponownie wykorzysta proces pracy do przetwarzania wielu żądań. Ostatnia prośba o uwolnienie pamięci, wskaźnik pozostaje w stanie wewnętrznym; następny wniosek przychodzi,Przeczytaj pusty adres przed normalną inicjalizacją.Nie wiem.
Błędy śmiertelne (utrata pamięci, czas działania) przerywają oczyszczanie stanu. Co gorsza, jakaś nieśmiercionośna diagnoza w czasie wyłączenia zastąpiłaby zły stan.Jeszcze raz.Nie wiem.
Oficjalnie potwierdzone ścieżki obejmują: RCEs ze śmiertelnym błędem, gdy PHP 8.5 włączył Ślady błędów fatalnych (domyślne otwarcie), a cykl życiowy sesji RCEs na motor php i FPM.session.upload_progress Domyślnie możesz działać jako wcześniejszy konsument w stanie brudu.I nie ma potrzeby nawiązywać połączeńNie wiem.
Ta dziura jest nadal zamocowana.Wyciek pamięciNie wiem. Co przeciekało? jest hasło, token, klucz API, certyfikat dla innych żądań w pamięci procesowej. Wiz bezpośrednio w porównaniu do Heartbled, co nie jest zbyt wiele.
Czas, więcej niż tytuł Spójrz.
| Czas | Co się stało? |
|---|---|
| Rok 2024 | Audyt deweloperów w PHP znalazł OOM, że błąd, zespół nie miał konsensusu w sprawie prawa, umieścić go na wstrzymanie. |
| 2026-08 | Ryan Austin z Calif identyfikuje luki z OpenAI GPT- 5.6 Sol; Wiz Independent Discovery |
| 2026-10-17 | Amazon MadPot, miód może nagrać próbę, cztery dni przed otwarciem. |
| 2026-10-20 | Numer CVE wyciekł w Hacker News i Social Media, PHP |
| 2026-10-21 | 14: 00 UTC Publikacja 8.5.12 / 8.4.27 / 8.3.36 / 8.2.35 |
17 października musi zostać wyróżniony.Publiczny dzień był dwudziestym, ale atak miał miejsce 17-go.Propozycja Amazona jest prosta: punkt wyjścia nie powinien znajdować się w dniu ujawnienia, lecz zostać przeniesiony na co najmniej 17 października.
Co do sposobu, w jaki napastnicy zdobyli informacje z góry, Amazon powiedział "nie jasne". Nie mogę w to wejść, ale musisz zaakceptować rzeczywistość.Dzień ujawnienia nie był dniem ataku, ale dniem, w którym w końcu się dowiedziałeś.
Cztery, tym razem to naprawdę Al.
Blog Wiza zawiera zdanie, które przeczytałem dwa razy: "Te podstawowe wady istnieją od dziesięcioleci, ale aby udowodnić, że mogą być wykorzystane, potrzebują wyjątkowo skomplikowanego łańcucha kroków, na marginesie rzeczywistych możliwości ludzkich naukowców.Frontline model AI znacznie obniża ten próg.Nie wiem.
Specyfika: Ryan Austin, badacz z Calif, został znaleziony w projekcie OpenAI "Patch the Planet" z GPT- 5.6 Sol. Wiz znalazł ten sam problem niezależnie. Aby to wykorzystać, potrzebujemy łańcucha wad i wycelować w każdy cel.Układ pamięci wielokrotnie skalibrowanyWiz mówi, że model linii front pozwala im na opracowanie użytecznych aplikacji dla różnych aplikacji w ciągu kilku godzin.
To nie znaczy, że Al znowu wygrał.Chodzi o to, że fosa "kompleksu" zawodzi.
Wiele starych luk nie zostało pobitych w ciągu ostatnich dwóch dekad, nie dlatego, że nie są one poważne, ale dlatego, że próg wykorzystania jest zbyt wysoki - kilka tygodni inwestycji przez najlepszych naukowców i trochę szczęścia. Więc umieściłeś je w kolumnie "teoretycznie ryzykowne". Teraz ten płot zniknął.
Te dziesięcioletnie dziury, które leżą w Twoim systemie i są ocenione jako "trudne i nieprzetworzone" muszą być ponownie ocenione.
Pięć, do którego powinieneś iść?
| Oddział | Wersja dotknięta | Usuwanie |
|---|---|---|
| PHP 8.5 | < 8.5.12 | Podnieść do 8.5.12. |
| PHP 8.4 | < 8.4.27 | Podnieść do 8.4.27. |
| PHP 8.3 | < 8.3.36 | Podnieść do 8.3.36. |
| PHP 8.2 | < 8.2.35 | Podnieść do 8.2.35. |
| PHP 7.4 / 8.0 / 8.1 | Wszystkie | Oficjalnie nieopublikowane, tylko poziom źródła |
| PHP 5.4 - 7.3 | Wszystkie | Rząd tego nie naprawi. Biznes |
Kilka prawdziwych przypomnień:
- Linux Release i LTS VendorMam plaster z góry.Sprawdź porady producenta za pomocą pakietu dystrybucyjnego. Nie spiesz kodu źródłowego.
- Stosowanie
rpms.remirepo.netNotatka: PHP oficjalnie podał źródło 21 października.Brak aktualizacjiWięc możesz przełączyć się na pakiet dystrybucyjny lub zrobić go z kodu źródłowego. - Windows binarne PHP 8.5 jest również na oficjalnej stronie pobierania.
- Nie myśl, że można biegać w kontenerze - należy sprawdzić wersję PHP lusterka kontenera.
Sześć, jeśli nie masz plastra, zrób te cztery pierwsze.
Pierwszy stan:Żadne z nich nie sprawi, że będziesz bezpieczny.Oficjalnym zwrotem PHP jest "ograniczenie ekspozycji na konkretne ścieżki ataku, ale nie czyni instalacji bezpieczniejszymi". Ich wartością jest dać ci czas, aby dostać plastry.
Ustaw limit pamięci na -1
Cel: Aby usunąć przewidywalny kapsel pamięci PHP nie powiódł się, tj. CVE- 2026- 109618 potwierdził stan wyzwalania, od którego zależy.
Chodzi o to,Jak?: należy ustawić w miejscach, w których wniosek jest niezmieniony, takich jak pula FPM php_admin_value lub Konfiguracja Apache. Musisz sprawdzić, czy nie ma popów, katalogów, ustawień aplikacji, aby dodać limit z powrotem.Więc zacznij od nowa każdego pracownika.
Cena jest jasna: jesteś poza własnym płotem pamięci PHP, a dolna awaria dystrybucji może być nadal na tej niebezpiecznej ścieżce. Więc to musi być kontener lub grupa, żeby ograniczyć przykrywkę, ale to tylko strategia, by "zabić dotkniętych ludzi".Nigdy nie stosuj RLIMIT AS ani danych RLIMITTe dwa są dokładnie rodzajem awarii dystrybucji, które tworzą luki.
Zmniejszyć rozmiar maks.
Witryny bez pliku 8M do pliku 32M i gwarantowane upload_max_filesize Mniej niż to. Jednocześnie do serwera WWW lub warstwy proxy dodawane są ograniczenia - wielkość odszyfrowanych żądań, liczba pól, liczba części wieloczęściowych, liczba głowic, głębokość gniazd.Ograniczenia te muszą obejmować wnioski, które nie są ważne Content- LengthAlbo to obejdziemy.
3. Wyłączenie procesu session.download
session.upload_progress.enabled = 0
Jest napisane w php.ini, narzędzie FPM lub konfiguracji serwera.Musi być skuteczne przed złożeniem wniosku.Nie wiem. Stosowanie ini_set() Albo FPM. .user.ini Było za późno, było brudno. Zmiana polega również na ponownym uruchomieniu wszystkich pracowników.
PHP 8.5 Jeszcze jeden.
fatal_error_backtraces = 0
Ten blok potwierdził jedynie śmiertelne błędy, bez innych wariantów. Wymagane są również ustawienia poziomu administratora + restart pracy.
Ponadto oficjalne wspomnienie, że wielu zignoruje:Napraw śmiertelne błędy, które atakujący mogą uruchomić i wykonać czas., w tym backup-up, wysyłanie, importowanie przetwarzania, czyszczenie błędów. I...Usuń przestarzałe lub niezgodne z prawem konfiguracje narzucone na podstawie żądania- Wypluwają informacje diagnostyczne zanim zostaną zainicjowane i nakarmią przeciek.
To ostatnie zdanie jest łatwo źle zrozumiane:Nie można ukryć diagnozy z raportowaniem błędów, wyświetlaniem błędów lub @.To się nie dzieje.
VII. PRAWDOPODOBIEŃSTWO
Nie chcę skończyć, pisząc "Zamknij plaster". Oczywiście. Dzisiaj. Ale niektóre wyroki muszą się zmienić.
- Termin "trudny w użyciu" nie jest już taki sam jak termin "przepisany".PHP łańcuch dostępu tego otworu jest wystarczająco skomplikowany, aby potrzebować pomocy AI, który już pomógł. Stare dziury na twojej liście aktywów oznaczające "ryzyko teoretyczne" powinny zostać ponownie ocenione.
- Język działa w jednym punkcie.WordPress, Drupal, Joomla, Magento, MediaWiki wszystko działa na PHP, Twój audyt kodu aplikacji jest czysty, a rdzeń PHP jest w tarapatach. Rytm kompensacyjny warstw infrastruktury, z oddzielonymi warstwami aplikacji.
- "Kod aplikacji jest złamany bez uruchamiania". WAF może tylko opóźniać.Sam Cloudflare powiedział, że to przerwa. Umieszczenie WAF jako rozwiązania równa się dawaniu życia na pokrycie.
- Istnieje wiele starych witryn w kraju za pomocą PHP.Stacje, które działają na PHP 5.6 / 7.0, które dawno temu nie były utrzymywane i powieszone na mainframe chmur, są w tej ekspozycji od 1,3 do 1,9 miliona. Nie otrzymają żadnego ostrzeżenia.
Kalibracje danych są rejestrowane: W3Techs twierdzi, że PHP stanowią 69,3% znanych języków, a Wiz 70%; gospodarze ekspozycji, badacz bezpieczeństwa Silas Cutler szacuje ponad 1,3 miliona, a poszukiwania Henk Poley Shodan jest ponad 1,9 miliona. Liczby te są różnych kalibrów i nie używają ich jako dokładnych wartości, ale skala jest taka sama -Miliony, globalnie.
Jeszcze jeden szczegół jest wart zapamiętania: kiedy numer CVE wyciekł, punkty CVSS, które wyszły były 10.0, PHP zostało oficjalnie potwierdzone.Ten wynik był zły.Właściwie to 9.2. Nikt nic nie wie o tym szczególe, ale zawsze będzie w obiegu. Widząc 10.0, wiesz co to jest fala.
10-letnia dziura, dwa miesiące badań wspomaganych przez AI-, cztery dni wczesnego wykorzystania, jednodniowe okienko łaty. Ten czas jest normalną z wszystkich podstawowych oprogramowania, które następuje.
Sprawdź wersję.php -vAlbo spójrz na swoje lusterka. Nie czekaj na jutro.