W połowie października 2026, w krótkim odstępie, wyszły informacje o poważnych podatnościach w PHP, Node.js, Javie (Oracle/OpenJDK) i GitLabie. Część pozwala na zdalne wykonanie kodu (RCE) bez uwierzytelnienia. Inne naruszają integralność albo poufność. Przy PHP opis błędu wyciekł przed oficjalnymi poprawkami, a próby ataku widać było jeszcze wcześniej.
Luki siedzą w interpreterze PHP, w Node.js, w JSSE i w samym GitLabie. W repozytoriach self-managed leży kod źródłowy, sekrety CI/CD i dostęp do środowisk produkcyjnych.
PHP2Shell: dwa RCE w silniku PHP
CVE-2026-109618 i CVE-2026-109619, zbiorczo PHP2Shell, mają po 9.2 w CVSS v4.0. NVD dało im 9.8 w CVSS v3.1. Obie dają nieuwierzytelnione RCE na serwerach, które obsługują żądania webowe.
CVE-2026-109618 to uszkodzenie pamięci przy obsłudze braku pamięci (out-of-memory). Gdy żądanie trafia w memory_limit w złym momencie, w trakcie częściowej inicjalizacji wewnętrznych danych żądania, obsługa OOM przerywa pracę, a późniejsze sprzątanie bierze niedokończone struktury za poprawne. Atakujący może celowo wyczerpać pamięć, na przykład spreparowanym żądaniem multipart. Efekt to korupcja pamięci i możliwość wykonania kodu. Przy Apache z mod_php wystarczy jedno żądanie bez logowania, zanim wystartuje kod aplikacji.
CVE-2026-109619 to use-after-free na starym stanie globalnym. Stan związany z żądaniem (postęp uploadu sesji, backtrace błędów fatalnych) potrafi przeżyć zwolnienie pamięci. Następne żądanie na tym samym workerze może użyć już zwolnionego obszaru. Stąd crashe, wyciek haseł, tokenów i kluczy oraz RCE.
Dotyczy to praktycznie wszystkich instalacji PHP obsługujących web, od linii 5.x. Analizy wskazują próg około 5.4. Oficjalne poprawki wyszły 21 października 2026 dla gałęzi przez cały czas wspieranych: PHP 8.5.12, 8.4.27, 8.3.36 i 8.2.35. Wersje 8.1 i starsze są end-of-life i nie dostaną patcha od projektu PHP. Wyłączenie session.upload_progress, ustawienie memory_limit=-1 albo pm.max_requests=1 zmniejsza ryzyko, a lukę zamyka aktualizacja.
Badacze z firmy Calif (inicjatywa OpenAI „Patch the Planet”, z pomocą modeli AI) i niezależnie zespół Wiz znaleźli te błędy wcześniej. Planowano skoordynowane ujawnienie na 22 października. 20 października identyfikatory CVE krążyły już na forach i w mediach społecznościowych, razem z błędnym CVSS 10.0 i nagraniem PoC. PHP wydało ostrzeżenie wcześniej i przyspieszyło publikację poprawek o dzień. Chainguard wrzucił obrazy z poprawką kilka godzin przed oficjalnym release. Amazon Threat Intelligence zaobserwowało próby eksploatacji na honeypotach 17 października, cztery dni przed publicznym ujawnieniem. Cloudflare odnotowało tysiące prób ataku w godzinach przed patchem.
Udział PHP
Według W3Techs, stan na koniec października 2026, PHP stoi za około 69,3% stron, przy których da się rozpoznać język serwera. JavaScript ma około 8%. Dalej są Ruby i Java. Na PHP działają między innymi WordPress, WooCommerce, Drupal, Joomla, Magento, Laravel i Symfony. Infrawatch naliczył 5,48 miliona aktywnych usług PHP na około 3,34 miliona adresów IP. Analizy Shodan i Flare: w zależności od źródła 48-73% ujawnianych wersji to gałęzie niewspierane, dla których nie ma oficjalnego patcha. Setki tysięcy serwisów, w skali globalnej miliony, zostają narażone, dopóki nie podniosą PHP albo nie przejdą na wspieraną gałąź.
Node.js: Brotli i TLS/DNS
21 października 2026 Node.js wydał security release dla linii 22.23.4, 24.22.1 i 26.12.1. Weszło 10 poprawek, cztery o wysokiej ważności. Najpoważniejsza to CVE-2026-111497, czasem nazywana Node2Shell: zapis poza zakresem (out-of-bounds write) w dekoderze Brotli dołączanym do Node.js. Złośliwie skompresowane dane mogą uszkodzić pamięć i dać RCE z uprawnieniami procesu. Błąd jest w bibliotece Google Brotli. Wyzwala go fetch(), axios i inne klienty, które same dekompresują odpowiedź, albo kod, który podaje dane atakującego do zlib.brotliDecompress(). Publiczne PoC pojawiły się krótko po poprawkach.
Pozostałe wysokie błędy: obejście weryfikacji hostname w TLS, gdy IP zapisano pełnymi cyframi Unicode albo gdy host „luźno” rozwiązuje się do IP, oraz obcięcie nazwy w dns.resolve na znaku NUL. Są też błędy średnie i niskie: keep-alive, powtarzalne wartości losowe w snapshotach, modele uprawnień. Linie EOL, czyli 20.x i starsze, poprawek nie dostały.
Jako serwer WWW Node.js jest przy około 7,4% stron według W3Techs, mniej niż PHP. Po stronie serwera działają na nim API, aplikacje real-time, mikroserwisy i serwisy o dużym ruchu.
Java: CPU z 20 października i certyfikaty eMudhra
Oracle w Critical Patch Update z 20 października 2026 załatał w OpenJDK i Java SE liczbę podatności, którą część analiz nazywa rekordową: około 53 CVE w jednym cyklu, wielokrotnie więcej niż średnia z ostatnich lat. Wiele da się wykorzystać zdalnie, bez uwierzytelnienia, przez sieć.
Dzień później wyszedł alert poza cyklem: CVE-2026-91403, CVSS 9.1. Dotyczy JSSE (Java Secure Socket Extension) i skompromitowanych certyfikatów intermediate CA eMudhra. Atak jest zdalny, bez logowania, po sieci. Da się czytać i zmieniać dane. Lista wersji obejmuje wiele wydań Java SE i GraalVM. Zalecenie to natychmiastowa aktualizacja. Tymczasowo można zablokować konkretne certyfikaty albo włączyć sprawdzanie unieważnień.
Badania Azul i Vaadin pokazują, iż w większości organizacji Java obejmuje często ponad połowę systemów, w tym wiele customer-facing i dostępnych z internetu, także w bankowości i administracji. Skanery internetowe liczą wystawione serwery aplikacyjne (JBoss/WildFly, WebLogic i inne) w setkach tysięcy albo w milionach. Duża część instancji nie jest bezpośrednio publiczna, a certyfikaty, zależności i API dają drogę do środka.
GitLab: pre-auth RCE w self-managed, od wersji 7.0
21 października 2026 GitLab wydał krytyczny patch dla Community Edition (CE) i Enterprise Edition (EE): 19.5.1, 19.4.3, 19.3.6 oraz backporty 19.2.9, 19.1.9, 19.0.10 i 18.11.13. Najpoważniejsza luka to CVE-2026-110264, CVSS 10.0. Integer overflow w kompilatorze wyrażeń regularnych Onigmo, silniku regex Ruby, który GitLab bundluje. W określonych warunkach użytkownik bez konta wykonuje dowolny kod na serwerze GitLab przez spreparowane wyrażenie regularne, między innymi przy renderowaniu plików Org-mode.
Podatne są praktycznie wszystkie self-managed wersje od GitLaba 7.0 z 2014 roku. GitLab.com i instancje Dedicated były już załatane albo nie wymagały działań. W tym samym release weszło około 12 poprawek. Dwie wysokie: CVE-2026-15723 (CVSS 8.2, przejęcie konta LDAP przy włączonym OmniAuth SAML i auto-linking) oraz CVE-2026-112212 (CVSS 7.5, zatrucie cache discovery OAuth/OIDC). Wcześniej, w krótkim odstępie, była już inna krytyczna luka regex w GitLabie, CVE-2026-97229.
Na takim GitLabie leży kod źródłowy, konfiguracja CI/CD, sekrety wdrożeniowe, tokeny i połączenia do produkcji. Stąd kradzież poświadczeń, atak na łańcuch dostaw (supply chain) i lateral movement. Shadowserver odnotowało ponad 2700 publicznych instancji GitLab CE. Wyciek przed patchem, taki jak przy PHP, tym razem nie wystąpił.
Wspierane wersje PHP, Node.js, Javy i self-managed GitLaba trzeba aktualizować od razu, a system, którego nie da się gwałtownie załatać, odciąć albo wyłączyć. jeżeli instancja była wystawiona, wrażliwe dane trzeba zrotować, a logi przejrzeć pod kątem nietypowej aktywności. Trzeba też ustalić, kto patchuje runtime albo platformę: często hosting, dostawca obrazów kontenerów albo zespół DevOps, nie sam właściciel aplikacji. Wolniej idzie na wersjach EOL oraz tam, gdzie blokują zależności, shared hosting, proces zmian, a przy części wersji GitLaba migracja schematu.











