CVE-2026-84504
WysokieCVSS 8.1Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 34 - wyżej niż 34% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Uwierzytelniony użytkownik o niskich uprawnieniach może wykonać nieautoryzowane operacje lub uzyskać dostęp do danych, do których nie powinien mieć dostępu.
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-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 versions before 5.12.2 treat the object resolved by a successful Ajv async validator as the value result protocol used by custom validator compilers. If a request that passes its route schema contains a property named value at the root, fastify replaces the entire request body with that property's value before the handler runs, so the handler receives a different object than the one that satisfied the schema. An authenticated low-privilege caller can use this to make nested data replace the validated body and trigger an operation the route schema did not authorize, leading to unauthorized state changes and data disclosure. Users should upgrade to fastify 5.12.2 or later.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

