CISA dodała CVE-2026-111497 do katalogu znanych wykorzystywanych podatności KEV 27 października 2026 r., powołując się na dowody aktywnego wykorzystywania luki. Node.js opublikował poprawki dla obsługiwanych linii 22.x, 24.x i 26.x. Komunikat CISA nie podaje skali działań ani ich skutków.
Kiedy dane Brotli trafiają do podatnego dekodera
CVE-2026-111497 to błąd zapisu poza wyznaczonym obszarem pamięci w dekoderze Brotli dołączonym do Node.js. Node.js ocenia jego wpływ jako wysoki. Nieprawidłowe dane mogą doprowadzić do awarii procesu, ujawnienia jego pamięci, a potencjalnie także do zdalnego wykonania kodu (RCE).
Problem pojawia się, gdy niezaufane dane Brotli trafią do podatnego dekodera. Samo używanie Node.js ani kompresowanie danych w formacie Brotli nie oznacza narażenia. Według opisu Node.js wadliwe przełączenie bloku jest traktowane jak prośba o dalsze dane, przez co dekoder strumieniowy dopisuje je do wewnętrznego bufora o wielkości ośmiu bajtów.
Do dekodera nie trzeba odwoływać się bezpośrednio w kodzie aplikacji. Moduł node:zlib może przetwarzać dane Brotli, wbudowane fetch() automatycznie dekoduje odpowiedzi Brotli, a Express 5 z body-parser 2 może dekompresować żądania, jeśli skonfigurowano taką obsługę. Sam serwer HTTP Node.js nie dekoduje przychodzącego ciała Brotli tylko dlatego, że je otrzymał.
Poprawione wersje Node.js
Node.js naprawił lukę w następujących wydaniach obsługiwanych linii:
| Linia Node.js | Wersja z poprawką |
| 22.x | 22.23.4 |
| 24.x | 24.22.1 |
| 26.x | 26.12.1 |
Node.js podaje, że podatne są również wersje, których wsparcie się zakończyło. W komunikacie bezpieczeństwa nie wskazano poprawek dla tych linii.
Co wykazał test Imperva
Imperva opisała wykonanie kodu w testach na oficjalnym obrazie Node.js 24.22.0 dla Linux arm64. Test obejmował odpowiedzi dekodowane przez wbudowane fetch() oraz żądania przetwarzane przez skonfigurowane Express 5 i body-parser. Potrzebnych było kilka prób, a Node.js 24.22.1 odrzucał te same dane wejściowe.
To wynik z konkretnej konfiguracji testowej. Nie rozszerza go na wszystkie architektury, wydania Node.js ani wdrożenia.
Jak wdrożyć poprawkę
Sprawdź, którędy aplikacje przyjmują lub pobierają dane Brotli, także przez automatyczne dekodowanie i skonfigurowane oprogramowanie pośredniczące. Następnie zaktualizuj zależności i pliki blokad, a jeśli aplikacja lub obraz zawiera własny runtime, przebuduj ten artefakt. Wdróż zmiany ponownie, zrestartuj usługi i sprawdź wersję działającego Node.js.
Odrzucanie żądań Brotli na proxy lub wyłączenie ich automatycznej dekompresji może ograniczyć ryzyko na ścieżce przychodzącej, ale nie chroni klienta dekodującego złośliwą odpowiedź. Aikido zwraca uwagę, że samo usunięcie br z nagłówka Accept-Encoding nie wystarcza: serwer nadal może wysłać odpowiedź Brotli.