Przejdź do głównej zawartości

K000161019: NGINX CVE-2026-42945

· 5 min aby przeczytać
Customer Care Engineer

Opublikowano 14 maja 2026

K000161019: NGINX CVE-2026-42945

K000161019: podatność NGINX ngx_http_rewrite_module CVE-2026-42945 wymaga natychmiastowego przeglądu wszędzie tam, gdzie reguły rewrite obsługują żądania przed aplikacjami, API lub przepływami logowania. Jeśli Twój stos zależy od złożonego zachowania `rewrite`, `if`, `return` lub normalizacji URI, to od tego należy zacząć sprawdzanie. Dobra wiadomość jest taka, że problem zwykle da się opanować dzięki jasnemu audytowi, tymczasowemu uporządkowaniu zestawu reguł i kontrolowanej aktualizacji NGINX.

Dla większości operatorów praktyczne pytanie nie brzmi, czy NGINX jest obecny. Chodzi o to, czy `ngx_http_rewrite_module` jest używany w sposób, który pozwala spreparowanym żądaniom ominąć zamierzoną logikę routingu lub zabezpieczeń. To rozróżnienie ma znaczenie. Zwykła statyczna strona z minimalną konfiguracją ma zupełnie inny profil ryzyka niż wielodostępna brama aplikacyjna ze starymi łańcuchami rewrite i kilkoma heroicznymi wyrażeniami regularnymi napisanymi o 2 nad ranem.

Oficjalny link: https://my.f5.com/manage/s/article/K000161019

Co oznacza K000161019: podatność NGINX ngx_http_rewrite_module CVE-2026-42945

Ten komunikat wskazuje na błąd w sposobie, w jaki moduł rewrite NGINX przetwarza określone wzorce żądań. Chociaż dokładne ścieżki wykorzystania zależą od podatnej wersji i konfiguracji, problem operacyjny jest stały: nieprawidłowo sformowane lub starannie przygotowane żądania mogą wywołać zachowanie rewrite, które nie odpowiada intencjom administratora.

W rzeczywistych środowiskach może to oznaczać mechanizmy kontroli dostępu zastosowane w niewłaściwej fazie, przekierowania oceniane względem nieoczekiwanego URI lub decyzje routingu do backendu podejmowane na podstawie przepisanych wartości, którym nigdy nie należało ufać. Logi opowiadają teraz tę samą historię — chodzi mniej o to, że NGINX jest ogólnie uszkodzony, a bardziej o niebezpieczne przypadki brzegowe w przetwarzaniu reguł.

Dlatego zakres podatności zależy od konfiguracji. Dwa serwery z tą samą wersją NGINX mogą mieć bardzo różny poziom narażenia. Jeśli jeden używa tylko prostych przekierowań `return 301`, a drugi łączy regexowe rewrite przed kontrolą uwierzytelniania, ten drugi zasługuje na znacznie większą uwagę.

Prawdopodobny wpływ na środowisko produkcyjne

Najbardziej realistycznym skutkiem jest obejście obsługi żądań. W zależności od tego, jak zbudowano Twój blok serwera, atakujący może uzyskać dostęp do lokalizacji, którą uważałeś za chronioną, zmienić sposób normalizacji żądania przed trafieniem do aplikacji albo doprowadzić do przekierowań i wyników routingu, które naruszą Twoje założenia bezpieczeństwa.

Dla agencji i zespołów SaaS ma to największe znaczenie tam, gdzie NGINX działa jako brama polityk, a nie tylko jako serwer WWW. Jeśli stoi przed panelami administracyjnymi, portalami rozliczeniowymi, punktami końcowymi API, wewnętrznymi dashboardami lub modułami obsługi przesyłania plików, zachowanie rewrite staje się częścią Twojego modelu bezpieczeństwa, niezależnie od tego, czy było to zamierzone.

Są tu pewne kompromisy. Nie każda podatna konfiguracja prowadzi do bezpośredniego naruszenia. W niektórych przypadkach ryzyko ogranicza się do błędnych przekierowań lub niejednoznaczności ścieżek. W innych, szczególnie tam, gdzie aplikacje upstream ufają nagłówkom, ścieżkom lub lokalizacjom tylko do użytku wewnętrznego, słabość ta może stać się krokiem do czegoś gorszego.

Systemy, które zasługują na pierwszą uwagę

Zacznij od hostów korzystających z niestandardowych konfiguracji NGINX, odziedziczonych snippetów lub starszych szablonów aplikacji. Domyślna instalacja pakietu z bardzo lekką konfiguracją jest zwykle łatwiejsza do przeglądu i mniej ryzykowna niż serwer modyfikowany przez trzech administratorów, dwa systemy wdrożeniowe i jeden ekosystem wtyczek o bardzo zdecydowanych poglądach.

Nadaj priorytet tym środowiskom:

  • Reverse proxy przed przepływami uwierzytelniania
  • WordPress, Magento, Laravel lub niestandardowe stosy PHP z wieloma regułami rewrite
  • Bramy API z routingiem upstream opartym na ścieżkach
  • Węzły hostingowe z wieloma witrynami lub wieloma dzierżawcami
  • Panele administracyjne ograniczane wzorcem URI zamiast silniejszych warstw uwierzytelniania
  • Starsze konfiguracje używające zagnieżdżonych `if`, przechwyceń regex lub wewnętrznych przekierowań

Jeśli korzystasz z zarządzanej infrastruktury, to jest również moment, aby sprawdzić, czy źródło pakietów jest utrzymywane przez dostawcę, dystrybucję czy zbudowane niestandardowo ze źródeł. Terminy wydania poprawek mogą się różnić, a to wpływa na planowanie reakcji.

Jak sprawdzić, czy możesz być narażony

Najpierw potwierdź, czy moduł rewrite jest aktywnie używany w Twoich konfiguracjach. W większości standardowych buildów `ngx_http_rewrite_module` jest dostępny domyślnie, ale rzeczywiste narażenie wynika ze sposobu jego użycia. Przeszukaj aktywną konfigurację NGINX pod kątem `rewrite`, `if`, `return`, `set` i bloków `location` intensywnie wykorzystujących regex.

Następnie sprawdź, gdzie decyzje bezpieczeństwa zależą od przepisanych URI. Częstym problemem jest sytuacja, w której chroniona ścieżka jest sprawdzana przed rewrite, podczas gdy backend otrzymuje inną efektywną ścieżkę po rewrite. Innym problemem jest logika przekierowań zbudowana z niezaufanych wartości żądania, co może prowadzić do obejścia lub niejednoznaczności, gdy normalizacja żądania zachowuje się nieoczekiwanie.

Uważnie przejrzyj te wzorce:

  • Instrukcje `if` wewnątrz bloków `location`
  • Wiele kolejnych rewrite z `last` lub `break`
  • Przechwycenia regex wykorzystywane ponownie w proxy lub logice dostępu
  • Reguły rozróżniające dostęp wyłącznie na podstawie kształtu URI
  • Wewnętrzne lokalizacje uznawane za nieosiągalne z zewnętrznych wariantów żądań

Następnie, jeśli to możliwe, testuj za pomocą celowo nietypowych żądań w kopii stagingowej. Warto wypróbować zakodowane ukośniki, zduplikowane separatory ścieżek, ścieżki z mieszanymi wielkościami liter, dane wejściowe przypominające traversal i graniczne ciągi zapytań. Nie dlatego, że każde z nich zadziała, ale dlatego, że błędy rewrite często ujawniają się przy nietypowych, ale prawidłowych żądaniach HTTP.

Natychmiastowe ograniczenie ryzyka, jeśli poprawka musi poczekać

Instalacja poprawki to właściwe rozwiązanie, ale operacje to prawdziwe życie i nie każdy zespół może zaktualizować system w ciągu najbliższych dziesięciu minut. Jeśli potrzebujesz krótkiego okresu przejściowego, ogranicz zależność od kruchej logiki rewrite.

Najbezpieczniejszym tymczasowym ruchem jest uproszczenie. Usuń lub wyłącz nieistotne łańcuchy rewrite, szczególnie na granicach uwierzytelniania, w obszarach administracyjnych i w routingu upstream. Tam, gdzie to możliwe, zastąp sprytne regexowe rewrite jawnymi blokami `location`. Jawna konfiguracja jest może mniej efektowna, ale śpi się z nią spokojniej.

Jeśli kontrola dostępu zależy od dopasowywania wzorca URI, wzmocnij ją w innej warstwie. Uwierzytelnianie aplikacji, ograniczenia IP dla ścieżek administracyjnych, reguły WAF i bardziej rygorystyczna walidacja upstream mogą ograniczyć promień rażenia. To nie jest najpiękniejsza sytuacja DNS, ale jest pod kontrolą, pasuje także tutaj — tymczasowe zabezpieczenia są akceptowalne, jeśli są jasne i odwracalne.

Zwiększ także poziom logowania podczas okna przeglądu. Rejestruj URI żądania, zachowanie znormalizowanego URI tam, gdzie jest dostępne, kody odpowiedzi, cele upstream i podejrzane wzorce przekierowań. Chcesz mieć wystarczającą widoczność, aby wykryć próby nadużyć, nie zamieniając serwera w grzejnik magazynowy.

Strategia instalacji poprawek bez zbędnego dramatu

Gdy dostępne będzie poprawione wydanie NGINX lub pakiet dostawcy, aktualizuj w normalnej, kontrolowanej sekwencji. Najpierw sprawdź pochodzenie pakietu, a następnie przeczytaj changelog pod kątem poprawek związanych z rewrite i wszelkich uwag dotyczących kompatybilności. Jeśli kompilujesz NGINX ze źródeł, sprawdź, czy lokalne moduły lub poprawki wpływają na ścieżkę budowania.

W stagingu testuj dokładnie te konfiguracje, które mają znaczenie: przekierowania logowania, rewrite front-controllera aplikacji, obsługę ścieżek administracyjnych, trasy mediów i punkty końcowe API. Nie ograniczaj walidacji do `nginx -t`. Składnia może być idealna, a zachowanie nadal błędne.

W środowiskach o dużym ruchu zwykle wystarcza stopniowe przeładowanie, jeśli nie wchodzą w grę większe zmiany w pakietowaniu binarnym. Mimo to monitoruj współczynniki błędów, pętle przekierowań, nietypowe wzorce 404 i problemy z niedopasowaniem backendu przez co najmniej jeden cykl ruchu po wdrożeniu. Czasami poprawka bezpieczeństwa jest łatwa, a to zepsuty stary rewrite z 2019 roku daje Ci się we znaki.

Jak wygląda porządny przegląd rewrite

Dobry wynik to nie tylko „zainstalowano zaktualizowany pakiet”. Dobry wynik oznacza, że wiesz, iż Twoje mechanizmy bezpieczeństwa nie zależą już od skutków ubocznych rewrite. Używaj rewrite dla wygody routingu, a nie do egzekwowania polityk, gdy istnieją silniejsze mechanizmy kontroli.

Gdy ścieżka jest znana, preferuj dokładne dopasowania `location` zamiast szerokich regexów. Utrzymuj deterministyczną logikę przekierowań. Unikaj budowania decyzji upstream na fragmentach kontrolowanych przez użytkownika, chyba że walidacja jest rygorystyczna. Jeśli aplikacja wymaga skomplikowanej chirurgii URI, zanim zacznie działać, odpowiednio to udokumentuj i testuj jako część każdego wydania.

To także dobry moment, aby usunąć martwą konfigurację. Wiele środowisk NGINX zawiera stare snippety z poprzednich frameworków, migracji lub skopiowanych przykładów. To właśnie w takich pozostałościach często ukrywają się zachowania brzegowe.

Czego klienci powinni się spodziewać dalej

Jeśli zarządzasz własnymi serwerami, traktuj CVE-2026-42945 jako przegląd konfiguracji i poprawek, a nie tylko sprawdzenie wersji. Zweryfikuj narażenie, uprość ryzykowne ścieżki rewrite, instaluj poprawki, gdy będą dostępne, i obserwuj logi po wdrożeniu.

Jeśli Twój partner hostingowy zarządza stosem, zadawaj bardzo konkretne pytania. Czy zidentyfikowano podatną wersję NGINX, czy przejrzano konfiguracje intensywnie wykorzystujące rewrite, czy w razie potrzeby zastosowano tymczasowe ograniczenia ryzyka i czy przetestowano zachowanie po aktualizacji na trasach zbliżonych do produkcyjnych? Spokojne odpowiedzi z konkretami są tym, czego oczekujesz.

W kodu.cloud jest to dokładnie taki rodzaj problemu, który powinien być obsłużony jak rutynowa praca infrastrukturalna: zweryfikować zakres, ograniczyć ryzyko, ostrożnie wdrożyć poprawkę i ponownie uspokoić usługę. Reakcja na incydenty bezpieczeństwa to nie magia. To zdyscyplinowana weryfikacja, dobre logi i inżynierowie, którzy nie wpadają w panikę, gdy reguła rewrite zaczyna zachowywać się zbyt sprytnie.

Jeśli masz dziś czas tylko na jedno działanie, przeprowadź audyt każdego miejsca, w którym logika rewrite NGINX wpływa na dostęp lub routing. To właśnie tam CVE-2026-42945 przestaje być biuletynem, a staje się realnym problemem produkcyjnym.

Andres Saar Inżynier ds. obsługi klienta