Przejdź do treści
INDEKS ANALIZ BREACHROAD / NOTA TECHNICZNA

NGINX CVE-2026-42533: krytyczny błąd map i regex

CVE-2026-42533 to zależny od konfiguracji heap overflow w NGINX. Sprawdź wersje, warunki ataku, detekcję i bezpieczny plan aktualizacji.

MATERIAŁ PUBLICZNY
AUTOR
/ CEO Breachroad · OSCP · PNPT
PUBLIKACJA
20 lipca 2026
CZAS CZYTANIA
19 min czytania
TEMAT
Podatności i CVE
NGINX CVE-2026-42533: krytyczny błąd map i regex

CVE-2026-42533 to krytycznie oceniona podatność NGINX, która w określonych konfiguracjach dyrektywy map może doprowadzić do przepełnienia bufora na stercie. Atak nie wymaga uwierzytelnienia, a przygotowane żądanie HTTP może zakończyć proces workera. W szczególnych warunkach skutkiem może być wykonanie kodu, lecz oficjalna ocena podkreśla wysoką złożoność takiego scenariusza oraz zależność od wyłączonego albo skutecznie ominiętego ASLR. Najpilniejszym zadaniem nie jest więc polowanie na publiczny exploit, lecz ustalenie, czy konkretna instancja łączy podatną wersję z podatnym wzorcem konfiguracji.

Poprawione wydania pojawiły się 15 lipca 2026 roku, a 20 lipca temat został szerzej podniesiony w alertach obronnych. Oficjalna lista advisory NGINX, rekord NVD i biuletyn F5 są podstawowymi źródłami. Artykuł nie zakłada aktywnego wykorzystania w Internecie, ponieważ taki status wymaga osobnego, wiarygodnego potwierdzenia.

Na czym polega CVE-2026-42533

Podatność znajduje się w przetwarzaniu wyniku dyrektywy map, gdy konfiguracja używa wyrażenia regularnego i zmiennych przechwyconych przez regex. Szczególnie istotna jest kolejność odwołań: niebezpieczny wzorzec może wystąpić, gdy złożone wyrażenie tekstowe korzysta ze zmiennej przechwyconej przed odczytaniem zmiennej wynikowej mapy. Oficjalny opis wskazuje również określone przypadki zmiennych niebuforowalnych.

To nie jest błąd obecny w każdej domyślnej instalacji. NGINX musi wykonywać podatną ścieżkę kodu, a wartości kontrolowane lub współkontrolowane przez żądanie muszą trafić do odpowiedniego mapowania. Dlatego prosty wynik „wersja obecna” oznacza konieczność analizy, nie automatyczny dowód zdalnego wykonania kodu.

Błąd dotyczy płaszczyzny danych: ruch przechodzący przez serwer może wywołać nieprawidłową operację pamięci workera. Nie jest to luka w panelu zarządzania ani mechanizm wymagający logowania do control plane. Taki podział ma znaczenie dla ekspozycji, monitoringu i właściciela poprawki.

Ocena musi obejmować wszystkie miejsca, w których konfiguracja jest materializowana. Ten sam szablon może generować inną postać dla środowiska developerskiego, stagingu i produkcji, zależnie od wartości przekazanych przez pipeline. Bez eksportu aktywnej konfiguracji z procesu łatwo uznać, że repozytorium nie zawiera ryzykownego wzorca, choć został on zbudowany dynamicznie.

Skutki: od restartu workera do trudnego RCE

Najbardziej bezpośrednim skutkiem jest awaria workera i odmowa usługi. Master NGINX zwykle uruchamia proces zastępczy, co może maskować pojedyncze crashe. Powtarzane żądania mogą jednak wywołać pętlę restartów, spadek przepustowości, błędy 5xx i zwiększone opóźnienia. W kontenerze crash może uruchamiać restart poda, a w źle ustawionym autoscalingu dodatkowo obciążać cały klaster.

F5 jako CNA przyznało podatności 9,2 w CVSS v4, czyli poziom krytyczny, oraz 8,1 w CVSS v3.1, czyli wysoki. Różnica wynika z konstrukcji wersji metryki, nie ze sprzecznych ustaleń. Wektor uwzględnia zdalny, nieuwierzytelniony dostęp i wysoką złożoność ataku.

Możliwe wykonanie kodu nie powinno być przedstawiane jako automatyczny rezultat każdego crasha. Oficjalny opis wiąże ten skutek z wyłączonym ASLR lub możliwością jego obejścia. Nowoczesne systemy zwykle włączają ASLR, ale bezpieczeństwa nie można opierać wyłącznie na tej warstwie. Heap overflow pozostaje błędem pamięci, dlatego podatną instancję trzeba zaktualizować również wtedy, gdy obserwowanym skutkiem testu jest tylko restart.

Które wersje wymagają uwagi

NGINX Open Source od wersji 0.9.6 do 1.31.2 jest objęty oficjalnym zakresem. Poprawka znajduje się w głównej gałęzi 1.31.3 i nowszych oraz stabilnej 1.30.4 i nowszych. Dla NGINX Plus obowiązują osobne oznaczenia wydań i poziomów patch, dlatego administrator powinien korzystać z tabeli w biuletynie F5, a nie przekładać numerów open source jeden do jednego.

Wersja binarna jest dopiero pierwszą połową oceny. Druga to aktywna konfiguracja. Należy zebrać wynik rozwiniętej konfiguracji, w tym pliki dołączane przez include, szablony Helm, ConfigMapy, fragmenty generowane przez operatora i ustawienia dostarczane przez panel. Analiza tylko głównego nginx.conf łatwo pomija właściwą dyrektywę.

Dystrybucje mogą zastosować backport. Numer podobny do wydania podatnego nie zawsze oznacza brak poprawki, a numer obrazu aplikacji nie zawsze ujawnia numer wbudowanego NGINX. Dowodem powinien być biuletyn dostawcy, revision pakietu albo identyfikowalny build.

NGINX, NGINX Plus i kontrolery Ingress to nie to samo

Nazwa NGINX występuje w kilku produktach. NGINX Open Source jest samodzielnym serwerem i reverse proxy. NGINX Plus to produkt komercyjny z własnym cyklem wydań. Kontroler Kubernetes Ingress może osadzać NGINX, generować jego konfigurację i nakładać własny numer wersji. Inny ingress używający nazwy podobnej do NGINX może mieć oddzielny fork albo zestaw łatek.

Nie wolno zatem automatycznie oznaczyć wszystkich ingressów jako podatne lub bezpieczne. Ustal dostawcę obrazu, digest, wersję wbudowanego pliku wykonywalnego, zastosowane patche i wygenerowaną konfigurację. W środowisku Kubernetes sprawdź zarówno controller, jak i data-plane pods. Szersze ryzyko warstwy klastrowej opisuje nasz przewodnik po bezpieczeństwie Kubernetes.

Urządzenia dostarczane jako appliance mogą ukrywać wersję biblioteki w firmware. Wtedy źródłem prawdy jest producent. Próba samodzielnej podmiany binarnej może naruszyć wsparcie i spójność obrazu, dlatego potrzebny jest oficjalny hotfix lub upgrade.

Jak znaleźć podatny wzorzec konfiguracji

Rozpocznij od pełnego eksportu konfiguracji poleceniem diagnostycznym właściwym dla platformy, ale nie publikuj wyniku: często zawiera nazwy upstreamów, ścieżki, nagłówki i sekrety. W bezpiecznym repozytorium wyszukaj dyrektywy map, następnie sprawdź, czy ich źródło lub wynik używa regexów z przechwyceniami oraz czy złożone wartości odnoszą się do przechwyconych zmiennych przed zmienną wynikową mapy.

Samo wystąpienie map albo regexu nie dowodzi podatności. Potrzebna jest analiza kolejności ewaluacji i cache’owania zmiennych opisana w advisory. Jeżeli zespół nie potrafi jednoznacznie ocenić konfiguracji, należy przyjąć ostrożny priorytet aktualizacji zamiast budować zbyt precyzyjny wyjątek.

Ważne jest także źródło danych. Mapowanie stałego parametru generowanego wewnętrznie ma inną ekspozycję niż mapowanie nagłówka, URI, parametru zapytania lub innej wartości kontrolowanej przez klienta. Nawet gdy filtr brzegowy normalizuje ruch, nie powinien być jedynym argumentem za odłożeniem patcha.

Przegląd warto połączyć z modelowaniem zagrożeń: wskaż granicę zaufania, dane wejściowe, drogę do dyrektywy, możliwy wpływ awarii workera oraz systemy współdzielące węzeł.

Bezpieczny plan aktualizacji

Priorytetowo potraktuj Internet-facing reverse proxy, API gateway, publiczne ingressy i usługi przetwarzające nieufne nagłówki lub URI. Zidentyfikuj wersję docelową: co najmniej 1.31.3 w mainline albo 1.30.4 w stable, ewentualnie poprawione wydanie NGINX Plus lub pakiet dostawcy. Pobierz artefakt z zaufanego repozytorium i zweryfikuj podpis lub digest.

W środowisku testowym uruchom test składni i pełny zestaw regresji routingu. Sprawdź mapowania, rewrites, cache keys, uwierzytelnienie, WAF, WebSocket, HTTP/2 i HTTP/3, health checks oraz mTLS. Następnie wdrażaj canary, obserwując błędy 4xx/5xx, restarty, latency, różnice w nagłówkach i zużycie pamięci.

Po udanym canary wymień wszystkie repliki. Sam restart starych podów nie pomaga, jeśli manifest nadal wskazuje podatny tag. Używaj niezmiennego digestu i potwierdź go w uruchomionych instancjach. Dla hostów sprawdź, czy proces rzeczywiście załadował nowy plik po aktualizacji pakietu.

Zasady zarządzania krytycznymi podatnościami pomagają ustalić kolejność, lecz w tym przypadku kontekst konfiguracji powinien wpływać na priorytet razem z CVSS.

Ograniczenia awaryjne

Jeżeli aktualizacja nie może nastąpić natychmiast, najbezpieczniejszą zmianą konfiguracji jest usunięcie albo przebudowanie podatnego wzorca map zgodnie z oficjalną rekomendacją i po testach regresji. Nie należy improwizować z regexem w produkcji: zmiana kolejności ewaluacji może wpłynąć na routing, cache lub kontrolę dostępu.

WAF może ograniczyć konkretną wartość wejściową, jeżeli zespół zna drogę danych, ale obfuskacja i alternatywne kodowanie mogą ominąć zbyt wąski filtr. Limity żądań i izolacja workerów zmniejszają wpływ powtarzanych crashy. Włączenie ASLR utrudnia wykorzystanie pamięciowe, lecz nie zapobiega odmowie usługi.

Traktuj te działania jako pomost do poprawki. Udokumentuj właściciela, zakres, czas ważności wyjątku i warunek jego usunięcia. Tymczasowa reguła bez terminu często zostaje na lata i staje się nowym źródłem błędów.

Detekcja i threat hunting

Najbardziej wiarygodnym sygnałem jest nietypowa seria awarii workerów skorelowana z podobnymi żądaniami. Zbieraj:

  • status i sygnał zakończenia procesu;
  • log mastera o starcie procesów zastępczych;
  • błędy 502, 503 i reset połączeń;
  • core dumpy przechowywane w kontrolowanym repozytorium;
  • wzrost liczby restartów poda lub instancji;
  • żądania bezpośrednio poprzedzające crash, z ochroną danych wrażliwych;
  • wersję binarną, digest obrazu i hash aktywnej konfiguracji;
  • stan ASLR oraz inne zabezpieczenia kompilacji i systemu.

Pojedynczy restart może wynikać z wdrożenia, limitu pamięci lub błędu modułu. Seria restartów przy powtarzalnym kształcie ruchu jest silniejszym sygnałem. Korelację można zbudować w ramach detection engineering i reguł SIEM.

Nie pobieraj niesprawdzonego PoC i nie uruchamiaj go przeciw produkcji. Bezpieczna walidacja polega na potwierdzeniu wersji, konfiguracji oraz obecności poprawki. Jeżeli konieczny jest test dynamiczny, wykonaj go wyłącznie w izolowanej kopii za pisemną zgodą właściciela.

Reagowanie po crashu

Zabezpiecz logi, core dump, konfigurację i próbkę ruchu przed automatycznym czyszczeniem. Jeżeli istnieje choćby podejrzenie naruszenia pamięci prowadzącego dalej niż DoS, potraktuj host jako potencjalnie skompromitowany: odizoluj go, odtwórz z zaufanego obrazu, zmień dostępne sekrety i przeanalizuj procesy potomne, połączenia wychodzące oraz integralność plików.

Nie zakładaj RCE tylko dlatego, że worker się zakończył. Z drugiej strony nie zamykaj incydentu jako zwykłego crasha bez sprawdzenia telemetryki. Plan reagowania na incydent powinien rozróżniać dostępność, próbę wykorzystania i potwierdzone wykonanie kodu.

W komunikacji podaj dokładny produkt, wersję, warunki konfiguracji, obserwowany wpływ i status aktualizacji. Hasło „krytyczny błąd NGINX” bez zakresu może niepotrzebnie sugerować, że cały stos organizacji został przejęty.

Najważniejsze działania dla administratora

  1. Potwierdź produkt, build i aktywną konfigurację każdej instancji NGINX.
  2. Wyszukaj mapowania z regexami i zmiennymi przechwyconymi, uwzględniając pliki generowane.
  3. Zaktualizuj OSS do 1.31.3+ lub 1.30.4+, a Plus i obrazy dostawców według ich biuletynów.
  4. Wykonaj canary oraz testy routingu, cache, auth i protokołów.
  5. Monitoruj crashe workerów, restarty, 5xx, core dumpy i podobieństwo poprzedzających żądań.
  6. Zachowaj ASLR i izolację procesów, ale nie uznawaj ich za zamiennik poprawki.
  7. Zweryfikuj wszystkie repliki, digesty i procesy po rollout’cie.

Źródłami faktów są NGINX Security Advisories, NVD dla CVE-2026-42533, F5 K000162097 oraz historia wydań NGINX. Organizacje potrzebujące niezależnego przeglądu mogą zamówić audyt konfiguracji i ekspozycji, obejmujący NGINX, ingress, obrazy kontenerów i bezpieczną walidację po aktualizacji.

UDOSTĘPNIJ / KOPIUJ