CVE-2026-84469
WysokieCVSS 7.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 21 - wyżej niż 21% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Nieuwierzytelniony atakujący może ominąć walidację i wykonać operacje, które miały być zablokowane, co może prowadzić do nieautoryzowanych zmian lub naruszenia bezpieczeństwa.
Rekomendacja
Zaktualizuj fastify do wersji 5.12.2 lub nowszej.
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-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 versions before 5.12.2 decide whether to compile a request schema based on JavaScript truthiness, but JSON Schema Draft 7 defines the boolean false as a valid schema that rejects every instance. When an application assigns false to a route's body, querystring, params, or headers schema to deny all input, fastify treats it as a missing schema, compiles no validator, and runs the route handler on any request. An unauthenticated remote client can therefore reach a handler that a valid deny-all schema was intended to make unreachable, a complete validation bypass that can lead to unauthorized state changes or execution of disabled operations. Users should upgrade to fastify 5.12.2 or later.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

