Node.js wydało aktualizacje zabezpieczeń odnoszące się do CVE-2026-111497, poważnej podatności w związanej z nim skompresowanej bibliotece dekompresji Brotli, która potencjalnie może umożliwić zdalne wykonanie kodu. Usterka to zapis poza buforem, uruchamiany, gdy narażony dekoder przetwarza specjalnie przygotowane dane skompresowane Brotli.
Problem dotyczy wszystkich obecnie wspieranych gałęzi Node.js — 22.x, 24.x i 26.x. Node.js usunął tę podatność w wersjach 22.23.4, 24.22.1 i 26.12.1 jako część wydania bezpieczeństwa z 21 października 2026 r., które naprawiło dziesięć podatności w sumie.
Ryzyko jest szczególnie istotne, ponieważ kompresja Brotli jest powszechnie używana dla ruchu HTTP. Aplikacje Node.js mogą bezpośrednio wywoływać narażony dekoder przez node:zlib lub automatycznie, kiedy fetch() odbiera odpowiedź używając Content-Encoding: br. Aplikacja może zatem być narażona, gdy kontrolowana przez atakującego zawartość Brotli dociera do dekodera poprzez żądanie przychodzące, odpowiedź zdalną, przepływ pracy z proxy lub inne ścieżki przetwarzania danych.
W celu wykrycia CVE-2026-111497 zespoły bezpieczeństwa powinny priorytetyzować aplikacje Node.js, które przetwarzają niesieciowane dane skompresowane i monitorować je pod kątem awarii, nieprawidłowego zachowania pamięci, niezwykłych procesów podrzędnych oraz podejrzanej aktywności tuż po dekompresji Brotli.
Platforma do Wykrywania Inteligencji AI-Native firmy SOC Prime umożliwia zespołom bezpieczeństwa wzmocnienie wglądu w wykorzystanie nowo odkrytych podatności i związane z nimi zachowanie po kompromitacji z przeszukiwanym treścią do wykrywania rozmieszczalną w technologiach SIEM, EDR i Data Lake.
Kliknij Przeglądaj wykrycia aby uzyskać dostęp do odpowiednich treści wykrywania i logiki wyszukiwania. Aby wykryć CVE-2026-111497, obrońcy powinni korelować telemetrię aplikacji Node.js z aktywnością punktów końcowych, proxy, sieci i sieciowej w celu identyfikacji podejrzanego zachowania otaczającego skompresowany ruch HTTP.
Zespoły bezpieczeństwa mogą również korzystać z Prime Architect do przekształcania najnowszej inteligencji o podatnościach w reguły Sigma i zapytania łowieckie, weryfikowania logiki wykrywania i tłumaczenia odpowiedniej treści wykrywania w obsługiwanych platformach bezpieczeństwa.
Skontaktuj się z działem sprzedaży
analiza CVE-2026-111497
Podatność znajduje się w dekoderze Brotli zawartym w Node.js. Brotli to algorytm kompresji szeroko stosowany do zmniejszania rozmiaru zawartości sieciowej, a Node.js zawiera własną kopię tej biblioteki.
Nieprawidłowy strumień skompresowany może wywołać zapis poza buforem, powodując, że dekoder zapisuje poza pamięcią przeznaczoną dla danych dekompresowanych. Naprawa upstream zmienia dekoder, aby nieprawidłowe wejście było odrzucane wcześniej zamiast pozwalać na kontynuowanie wykonywania w niebezpiecznej sytuacji zapisu pamięci.
CVE-2026-111497 dotyczy Node.js 22.x, 24.x i 26.x przed wydaniem bezpieczeństwa 21 października. Wersje z poprawkami to:
- Node.js 22.23.4
- Node.js 24.22.1
- Node.js 26.12.1
Wersje Node.js 20.x i starsze osiągnęły koniec życia i nie otrzymują aktualizacji bezpieczeństwa, więc organizacje używające tych wersji powinny migrować do wspieranej gałęzi.
Podstawowy problem nie ogranicza się do Node.js. Podatny kod pochodzi z projektu Brotli, a związane z nim poprawki zostały wydane w Brotli 1.0.10, 1.1.1 i 1.2.1. Inne aplikacje, które osadzają podatne wersje Brotli, mogą wymagać oddzielnych aktualizacji, nawet jeśli nie używają Node.js.
Powierzchnia ataku zależy od tego, jak skompresowane dane trafiają do aplikacji. Bezpośrednie użycie API dekompresji Brotli to jeden oczywisty sposób. Jednak Node.js może również automatycznie przetwarzać skompresowane odpowiedzi HTTP Brotli, gdy aplikacje używają fetch().
Dotyczy to szczególnie aplikacji pobierających zawartość kontrolowaną przez atakującego. Przykłady obejmują usługi podglądu URL, crawlery, procesory webhooków, platformy proxy, skanery treści, usługi konwersji oraz aplikacje, które pozwalają użytkownikom przesyłać zdalne adresy URL.
Ruch przychodzący może stworzyć inną ścieżkę, gdy aplikacja internetowa lub oprogramowanie pośredniczące akceptuje żądania o treści zakodowanej w Brotli. Zespoły bezpieczeństwa powinny zatem badać rzeczywiste przepływy danych w aplikacji, a nie ograniczać ocenę ekspozycji do wyraźnych wywołań Brotli w kodzie źródłowym.
Szczegóły dla CVE-2026-111497 pokazują, dlaczego ten problem może mieć konsekwencje wykraczające poza prostą awarię usługi. Korupcja pamięci może potencjalnie wpływać na stan pobliskiego procesu i, w zależności od zabezpieczeń platformy i warunków wykonawczy, prowadzić do ujawnienia pamięci lub arbitralnego wykonania kodu.
Node.js wyraźnie opisuje tę podatność jako mogącą prowadzić do zdalnego wykonania kodu, ale jego praktyczna możliwość eksploitacji wymaga zniuansowania. Usterka została oceniona przez Projekt Node.js jako mająca Wysoki poziom zagrożenia, a nie Krytyczny.
Publiczny Proof-of-Concept (PoC) dla CVE-2026-111497 opublikowany po ujawnieniu osiągnął wykonanie kodu przeciwko celowo osłabionej wersji testowej. W przypadku standardowej wersji Node.js, badacz zgłosił awarię i ograniczone ujawnienie pamięci procesów, ale nie osiągnął niezawodnego wykonania kodu. Oznacza to, że prymityw korupcji pamięci jest udowodniony, podczas gdy udane RCE przeciwko normalnym wersjom produkcyjnym zależy od dodatkowych warunków eksploitacji.
Spaczone wersje Node.js odrzucają wadliwe treści użyte w pokazywaniu. Na dzień 22 października nie zgłoszono żadnych eksploitów w dzikim środowisku.
W związku z tym, specyficzne dla kampanii wskaźniki kompromitacji CVE-2026-111497, takie jak złośliwe adresy IP, domeny, hasze ładunków lub potwierdzone sygnatury żądań eksploitów, nie zostały opublikowane w cytowanych badaniach.
Zespoły bezpieczeństwa powinny zamiast tego skupić się na wskaźnikach zachowania, takich jak:
- Nieoczekiwane awarie usług Node.js obsługujących skompresowany ruch
- Błędy segmentacji lub niepowodzenia dekodera native’owego
- Nieprawidłowe alerty o ochronie pamięci lub zapobieganiu exploitom
- Node.js uruchamiający powłoki lub interpretery poleceń
- Niespotykane połączenia wychodzące bezpośrednio po przetwarzaniu Brotli
- Podejrzane skompresowane żądania z nieznanych źródeł
- Aktywność fetch() po stronie serwera docierająca do niesieciowanej infrastruktury
- Nieoczekiwane zmiany plików lub procesów pochodzące z konta usług Node.js
Wydanie Node.js z 21 października również naprawiło dodatkowe problemy o wysokiej wadze z walidacją nazw hostów TLS i przetwarzaniem DNS. CybersecurityNews zauważa, że organizacje powinny traktować to wydanie jako szerszą aktualizację bezpieczeństwa środowiska wykonawczego, a nie koncentrować się wyłącznie na usterce Brotli.
To samo wydanie również uaktualniło informacje o zaufaniu certyfikatu po kompromitacji urzędu certyfikacji eMudhra, dodatkowo zwiększając wartość aktualizacji zamiast próbować wstecznego portowania tylko jednej poprawki.
Łagodzenie CVE-2026-111497
Podstawowym środkiem łagodzącym CVE-2026-111497 jest aktualizacja wszystkich wspieranych instalacji Node.js do wersji z poprawkami:
- 22.x → 22.23.4 lub nowsza
- 24.x → 24.22.1 lub nowsza
- 26.x → 26.12.1 lub nowsza
Projekt Node.js nie zapewnia odpowiednich tymczasowych obejść runtime dla podatności Brotli, czyniąc aktualizację wiarygodną ścieżką naprawy.
Po zaktualizowaniu środowiska wykonawczego administratorzy powinni zrestartować wszystkie dotknięte usługi Node.js. Procesy długo trwające nadal będą używać starego środowiska wykonawczego, dopóki nie zostaną zrestartowane.
Praca w kontenerach wymaga dodatkowej uwagi. CybersecurityNews specyficznie zaleca odbudowę obrazów kontenerów, aby wdrożone aplikacje zawierały poprawione środowisko wykonawcze Node.js. Aktualizacja Node.js na gospodarzu bazowym nie zastępuje narażonego środowiska wykonawczego, które już znajduje się wewnątrz obrazu kontenera.
Organizacje korzystające z Brotli niezależnie powinny również zaktualizować podatne wersje biblioteki. Inwentarze oprogramowania i SBOM mogą pomóc zidentyfikować osadzone kopie w aplikacjach native’owych, urządzeniach, narzędziach deweloperskich i paczkach stron trzecich.
Gdzie natychmiastowa aktualizacja nie jest możliwa, organizacje mogą tymczasowo zmniejszyć powierzchnię ataku poprzez:
- Odrzucanie żądań o treści zakodowanej w Brotli, gdy kompresja nie jest konieczna
- Ograniczanie żądań HTTP po stronie serwera do zaufanych miejsc docelowych
- Zapobieganie użytkownikom w dostarczaniu dowolnych zdalnych URL
- Ograniczanie połączeń wychodzących z narażonych obciążeń
- Wyłączanie opcjonalnego przetwarzania Brotli tam, gdzie to operacyjnie wykonalne
- Ścisłe monitorowanie awarii aplikacji i błędów związanych z pamięcią
- Inspekcja niezwykłych procesów podrzędnych uruchamianych przez Node.js
Vercel wprowadził zabezpieczenia firewall, aby blokować złośliwe dane Brotli docierające poprzez żądania przychodzące. Jednak The Hacker News zauważa, że te reguły nie chronią aplikacji, które samodzielnie pobierają złośliwe odpowiedzi Brotli z zewnętrznych serwerów, co ilustruje, dlaczego filtrowanie WAF nie może zastąpić aktualizacji środowiska wykonawczego.
Administratorzy powinni również potwierdzić, że środowisko wykonawcze rzeczywiście używane przez produkcyjne obciążenia po załataniu. Wynik menedżera pakietów nie jest wystarczający, gdy starsze binarki Node.js pozostają wewnątrz kontenerów, pakietów bezserwerowych, pakietowanych aplikacji lub ręcznie zainstalowanych katalogów runtime.
Jeśli podejrzewa się o eksploatację, reagujący powinni izolować dotknięte obciążenie i zachować telemetrię aplikacji, punktu końcowego, proxy i sieci. Zrzuty awarii mogą być szczególnie wartościowe, ponieważ podatność bezpośrednio wpływa na pamięć procesu.
Zespoły bezpieczeństwa powinny zbadać:
- Nieoczekiwane procesy podrzędne Node.js
- Nowo utworzone pliki lub mechanizmy przetrwania
- Niespotykane połączenia wychodzące
- Zmiany w konfiguracji aplikacji lub wdrożenia
- Poświadczenia i tajemnice dostępne w zmiennych środowiskowych
- Klucze API, tokeny i poświadczenia chmurowe dostępne dla procesu Node.js
- Zasoby danych zaplecza osiągalne przez tożsamość usługi aplikacji
Ponieważ wykazano ograniczone ujawnienie pamięci procesu, tajemnice rezydujące w pamięci wrażliwej aplikacji powinny być uważane za potencjalnie narażone, gdy wykryta zostanie podejrzana aktywność exploatacyjna, nawet jeśli nie można jednoznacznie dowieść arbitralnego wykonania kodu.
Organizacje powinny również przeglądać uprawnienia przypisane do dotkniętych usług. Udana eksploatacja minimalnie uprzywilejowanego kontenera ma inne konsekwencje niż wyeksploatowanie procesu Node.js posiadającego poświadczenia chmurowe, dostęp administracyjny do bazy danych, tokeny CI/CD lub uprawnienia wdrożeniowe.
Klienci SOC Prime mogą wykorzystać treści wykrywania oparte o zachowanie do identyfikacji eksploatacji podatności i związanej z nią aktywności atakującego, podczas gdy nieszczególne systemy są odkrywane i naprawiane.
Zastrzeżenie: Treści wykrywania mogą nie być dostępne dla każdego CVE. Sprawdź platformę SOC Prime dla bieżącego pokrycia. Jeśli odpowiednie wykrycia nie są jeszcze dostępne, sprawdź ponownie, gdy nowe informacje o zagrożeniach i treści wykrywania są dodawane na bieżąco.
FAQ
Czym jest CVE-2026-111497 i jak działa?
CVE-2026-111497 to podatność na zapis poza buforem w dekoderze Brotli zawartym w Node.js. Złośliwie skonstruowany strumień Brotli może spowodować zapis dekodera poza jego zamierzonym buforem pamięci. W zależności od środowiska i warunków eksploatacji może to prowadzić do awarii procesu, ujawnienia pamięci procesu lub potencjalnego wykonania kodu kontrolowanego przez atakującego. Narażony dekoder może być osiągnięty poprzez bezpośrednie API dekompresji lub automatycznie, gdy Node.js przetwarza odpowiedzi HTTP skompresowane w Brotli.
Kiedy po raz pierwszy odkryto CVE-2026-111497?
Projekt Node.js publicznie ujawnił i załatał tę podatność 21 października 2026 r. Badacze bezpieczeństwa z OpenAI Codex, Khai Tran i Sylvie Mayer, są ofiarowani z za zgłoszenie problemu do Node.js. The Hacker News donosi, że odpowiednia zmiana kodu źródło Brotli została po raz pierwszy wprowadzona upstream w lutym 2026 roku, ale została rozpowszechniona jako poprawka bezpieczeństwa w październiku.
Jaki jest wpływ CVE-2026-111497 na systemy?
Udana eksploatacja może uszkodzić pamięć wrażliwego procesu Node.js. Możliwe konsekwencje obejmują odmowę usługi poprzez awarie aplikacji, ujawnienie pamięci procesu i potencjalne zdalne wykonanie kodu. Faktyczny wpływ zależy od tego, czy kontrolowana przez atakującego zawartość Brotli dociera do dekodera i czy prymityw korupcji pamięci może obejść zabezpieczenia w docelowym środowisku wykonawczym i systemie operacyjnym. Jeśli wykonanie kodu jest osiągnięte, atakujący zazwyczaj dziedziczy uprawnienia i dostęp dostępne dla naruszonego procesu Node.js, potencjalnie odsłaniając dane aplikacji, poświadczenia, zasoby chmurowe lub połączone systemy zaplecza.
Czy CVE-2026-111497 może nadal mnie dotknąć w 2026 roku?
Tak. Instalacje Node.js 22.x, 24.x i 26.x pozostają narażone, jeśli nie zostały zaktualizowane do wydań naprawczych z 21 października. Organizacje prowadzące Node.js 20.x lub starsze powinny migrować do wspieranej wersji, ponieważ gałęzie kończące życie nie otrzymują tej poprawki. Aplikacje, które niezależnie osadzają podatne biblioteki Brotli, mogą również pozostać narażone, nawet jeśli sam Node.js został zaktualizowany.
Jak mogę się chronić przed CVE-2026-111497?
Zaktualizuj Node.js do wersji 22.23.4, 24.22.1, 26.12.1 lub nowszej wspieranej wersji i zrestartuj dotknięte obciążenia. Odbuduj obrazy kontenerów, zaktualizuj niezależnie pakietowane biblioteki Brotli i zweryfikuj, że usługi produkcyjne rzeczywiście działają na zaktualizowanych binarkach. Do czasu zakończenia łat dostosuj ekspozycję na niesieciowane dane wejściowe Brotli i ogranicz żądania po stronie serwera do zatwierdzonych miejsc docelowych. Monitoruj podatne usługi pod kątem awarii, niezwykłych procesów podrzędnych, nieoczekiwanej aktywności sieciowej i innych znaków eksploatacji pamięci. Jeśli wykryto podejrzaną aktywność, odizoluj obciążenie, zachowaj dowody kryminalistyczne i obróć wrażliwe uprawnienia dostępne dla dotkniętego procesu Node.js.