CVE-2026-107832
NiskieCVSS 3.7Streszczenie
W fastify w wersjach od 5.12.2 do 5.12.5 procedura zamieniająca nazwy nagłówków zadeklarowanych w schemacie trasy na małe litery nie zamienia na małe litery nazw nagłówków enum lub const zagnieżdżonych w podschematach propertyNames. W rezultacie lista dozwolonych lub zabronionych nagłówków zapisana w kanonicznej (nie małymi literami) wielkości liter nigdy nie pasuje do przychodzącego nagłówka zapisanego małymi literami, więc ograniczony nagłówki przechodzi walidację i dociera do handlera trasy. Atakujący może obejść regułę walidacji nagłówków wrażliwą na wielkość liter i przemycić zabroniony nagłówek poza schemat, wpływając na integralność obsługi żądań. Problem naprawiono w fastify 5.12.6.
Ocena ryzyka
Atakujący może przemycić zabronione nagłówki, omijając reguły walidacji, co może prowadzić do nieautoryzowanego dostępu lub innych problemów z integralnością żądań. Ryzyko dotyczy aplikacji używających fastify w wersjach 5.12.2–5.12.5 z listami dozwolonych/zabronionych nagłówków w kanonicznej wielkości liter.
Rekomendacja
Należy zaktualizować fastify do wersji 5.12.6 lub nowszej. Jeśli aktualizacja nie jest możliwa, należy zadeklarować nazwy nagłówków małymi literami, aby uniknąć niezgodności.
Inne podatności w fastify
Zobacz wszystkie- CVE-2026-92081Średnie
W fastify przed wersją 5.12.5, gdy trasa rejestruje nagłówek trailer przez reply.trailer() i jest obsługiwana przez HTTP/2, fastify bezwarunkowo ustawia nagłówek Transfer-Encoding: chunked, co jest zabronione w HTTP/2, powodując błąd Node.js podczas serializacji nagłówków odpowiedzi. Wyjątek nie jest przechwytywany i staje się uncaughtException, więc pojedyncze nieuwierzytelnione żądanie HTTP/2 do dowolnej trasy używającej trailerów powoduje awarię serwera i porzucenie wszystkich bieżących żądań; można to powtarzać po każdym restarcie. Problem naprawiono w fastify 5.12.5.
- CVE-2026-84428Wysokie
W fastify przed wersją 5.12.2 implementacja niewrażliwości na wielkość liter w nazwach nagłówków HTTP polega na zamianie nazw na małe litery w schemacie nagłówków trasy przed kompilacją, ale transformacja jest niekompletna: zamienia na małe litery klucze właściwości i tablicę required na poziomie głównym, ale nie zamienia nazw trigger i dependent wewnątrz słowa kluczowego dependencies w JSON Schema Draft 7. Ponieważ Node przechowuje nazwy nagłówków żądań małymi literami, zależność w formacie kanonicznym, np. wymagająca nagłówka uwierzytelniającego, gdy obecny jest nagłówek trybu uprzywilejowanego, nigdy nie jest spełniona, a asercja obecności jest po cichu pomijana. Nieuwierzytelniony zdalny klient może zatem wysłać nagłówek aktywujący uprzywilejowaną gałąź, pomijając nagłówek, którego zależność miała wymagać, obchodząc warunkowe sprawdzenie.
- CVE-2026-84504Wysokie
Wersje fastify przed 5.12.2 traktują obiekt rozwiązany przez pomyślny asynchroniczny walidator Ajv jako protokół wyniku wartości używany przez niestandardowe kompilatory walidatorów. Jeśli żądanie przechodzące przez schemat trasy zawiera właściwość o nazwie value na poziomie głównym, fastify zastępuje całe ciało żądania wartością tej właściwości przed uruchomieniem handlera, więc handler otrzymuje inny obiekt niż ten, który spełnił schemat. Uwierzytelniony użytkownik o niskich uprawnieniach może to wykorzystać do zastąpienia zweryfikowanego ciała zagnieżdżonymi danymi i wywołania operacji, której schemat trasy nie autoryzował, prowadząc do nieautoryzowanych zmian stanu i ujawnienia danych.
- CVE-2026-84469Wysokie
Wersje fastify przed 5.12.2 decydują, czy skompilować schemat żądania, na podstawie prawdziwości JavaScript, ale JSON Schema Draft 7 definiuje wartość false jako prawidłowy schemat, który odrzuca każde wystąpienie. Gdy aplikacja przypisze false do schematu body, querystring, params lub headers trasy, aby odrzucić wszystkie dane wejściowe, fastify traktuje to jako brak schematu, nie kompiluje walidatora i uruchamia handler trasy na każdym żądaniu. Nieuwierzytelniony zdalny klient może zatem dotrzeć do handlera, który zgodnie z zamysłem miał być nieosiągalny, co stanowi całkowite obejście walidacji i może prowadzić do nieautoryzowanych zmian stanu lub wykonania wyłączonych operacji.
- CVE-2026-76169Wysokie
Wersje fastify od 4.0.0 do przed 5.12.2 mogą kierować źle sformatowany URL wysłany pod prefiksem jednej wtyczki do niestandardowego handlera not-found innej wtyczki i wywoływać go bez hooka preHandler zadeklarowanego dla tego handlera. Wewnętrzny router not-found dla enkapsulowanych handlerów kieruje błędne ścieżki przez wspólny wskaźnik handlera przed dekodowaniem URL, ignorując prefiks i pomijając normalny cykl życia wybranego handlera. Nieuwierzytelniony atakujący może zatem dotrzeć do chronionego uwierzytelnianiem prywatnego fallbacku przez niepowiązany publiczny prefiks i odczytać jego pełną odpowiedź, omijając hook uwierzytelniający i łamiąc enkapsulację prefiksu.
- CVE-2026-18504Średnie
fastify przed wersją 5.12.1 ma podatność na obejście walidacji schematu, gdy schemat treści żądania dotyczy prymitywnej wartości na poziomie głównym. Gdy schemat waliduje prymityw na najwyższym poziomie, taki jak liczba całkowita, Ajv może skonwertować ciąg JSON na oczekiwany typ podczas walidacji, ale Fastify nie zastępuje głównej treści żądania skonwertowaną wartością, więc handler trasy otrzymuje oryginalny niezwalidowany ciąg. W rezultacie żądanie, które powinno nie przejść walidacji, może dotrzeć do logiki aplikacji z wartością niezgodną ze schematem, co może osłabić integralność i kontrolę dostępu opartą na zwalidowanym typie.
- CVE-2026-16732Średnie
fastify od wersji 5.8.3 do przed 5.12.1 ma podatność związaną z niedostateczną ochroną nagłówków przekazywanych (forwarded headers) w przypadku użycia numerycznej formy trustProxy. Ochrona dodana w poprawce CVE-2026-3635 sprawdza adres połączenia, ale w przypadku formy hop-count (liczba) predykat ignoruje adres, więc ochrona jest zawsze spełniona dla dowolnej liczby hopów większej lub równej jeden. Aplikacje z numerycznym trustProxy, np. ustawionym na 1, pozostają podatne: atakujący, który może dotrzeć bezpośrednio do Fastify, omijając proxy, może sfałszować pola forwarded, co prowadzi do wstrzyknięcia hosta w generowanych URL-ach, obejścia wymuszania HTTPS, obejścia bezpiecznych ciasteczek i pochodzenia CSRF oraz ataków na routing oparty na hoście i zatruwanie pamięci podręcznej.
- CVE-2026-33806Wysokie
Podatność w Fastify umożliwia ominięcie walidacji treści żądania poprzez dodanie spacji na początku nagłówka Content-Type. Błąd został wprowadzony w wersji 5.3.2 podczas naprawy CVE-2025-32442.
- CVE-2026-25223Wysokie
W Fastify przed wersją 5.7.2 istnieje podatność umożliwiająca ominięcie walidacji treści żądania. Poprzez dodanie znaku tabulacji (\t) i dowolnej treści do nagłówka Content-Type, atakujący może obejść walidację schematu dla danego typu zawartości, podczas gdy serwer nadal przetwarza treść jako oryginalny typ.
Oryginalny opis (angielski, źródło NVD)
fastify is a fast and low overhead web framework for Node.js. In versions 5.12.2 through 5.12.5, the routine that lowercases header names declared in a route schema does not lowercase the enum or const header names nested inside a propertyNames subschema. As a result, a header allow-list or deny-list written with canonical (non-lowercase) casing never matches the incoming lowercased header, so a restricted header passes validation and reaches the route handler. An attacker can therefore bypass a case-sensitive header validation rule and smuggle a forbidden header past the schema, affecting the integrity of request handling. The issue is fixed in fastify 5.12.6, and users should upgrade to 5.12.6 or later. There is no workaround other than upgrading, though applications can declare header names in lowercase to avoid the mismatch.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

