CVE-2026-112712
KrytyczneCVSS 9.1Streszczenie
W bibliotece @fastify/middie (wersje od 9.0.0 do 9.3.5) funkcja use() łączyła ścieżkę montowania middleware ze prefiksem zakresu wtyczki w sposób mogący różnić się od ścieżki obsługiwanej przez router Fastify — najczęściej gdy prefiks zakresu kończył się ukośnikiem, a także dla tablic ścieżek montowania i ścieżek bez wiodącego ukośnika. Gdy ścieżki się różniły, middleware był po cichu pomijany, a handler trasy nadal działał, co pozwalało obejść middleware ograniczający dostęp (uwierzytelnianie, autoryzacja, limity) pojedynczym nieuwierzytelnionym żądaniem. Problem naprawiono w wersji 9.3.6.
Ocena ryzyka
Obejście middleware uwierzytelniania lub autoryzacji może pozwolić nieuwierzytelnionemu atakującemu na dostęp do chronionych tras aplikacji. Stanowi to poważne ryzyko naruszenia bezpieczeństwa aplikacji opartych na Fastify.
Rekomendacja
Zaktualizuj @fastify/middie do wersji 9.3.6 lub nowszej. Jako obejście wymuszaj autoryzację w hooku Fastify, np. preHandler, uruchamianym po rozwiązaniu żądania przez router.
Inne podatności w @fastify/middie
Zobacz wszystkie- CVE-2026-33804Wysokie
Wersje @fastify/middie 9.3.1 i wcześniejsze są podatne na obejście middleware, gdy włączona jest przestarzała opcja ignoreDuplicateSlashes. Logika dopasowywania ścieżek middleware nie uwzględnia normalizacji podwójnych ukośników, co pozwala na ominięcie kontroli uwierzytelniania i autoryzacji.
- CVE-2026-22031Wysokie
Wtyczka @fastify/middie przed wersją 9.1.0 zawiera podatność, która pozwala na ominięcie zarejestrowanego middleware przy użyciu zakodowanych znaków URL. Atakujący mogą uzyskać dostęp do chronionych punktów końcowych bez ograniczeń narzucanych przez middleware.
- CVE-2026-85184Krytyczne
W @fastify/middie w wersjach od 9.1.0 do 9.3.4, decyzja o uruchomieniu oprogramowania pośredniczącego (middleware) dla ścieżki jest podejmowana na podstawie surowego celu żądania, podczas gdy router Fastify rozwiązuje cel żądania w formie absolutnej do ścieżki przed wysłaniem. Ponieważ te dwie warstwy oceniają różne ciągi znaków, żądanie używające celu w formie absolutnej dociera do procedury obsługi trasy, podczas gdy oprogramowanie pośredniczące dla ścieżki, takie jak uwierzytelnianie lub autoryzacja, jest pomijane. Nieuwierzytelniony atakujący sieciowy może wykorzystać to do obejścia kontroli dostępu opartych na ścieżce w aplikacji Fastify, która polega na middie dla tych kontroli.
- CVE-2026-14198Krytyczne
Podatność w @fastify/middie w wersjach 9.1.0 do 9.3.2 powoduje rozbieżność w interpretacji zakodowanego ukośnika (%2F) między middleware a routerem Fastify. Atakujący może ominąć middleware używane do uwierzytelniania, autoryzacji lub ograniczania prędkości, wysyłając spreparowane żądanie z zakodowanym ukośnikiem w parametrze ścieżki.
- CVE-2026-6270Krytyczne
Wersje @fastify/middie do 9.3.1 nie rejestrują dziedziczonych middleware bezpośrednio na instancjach silnika wtyczek podrzędnych. To pozwala na ominięcie kontroli uwierzytelniania i autoryzacji dla żądań kierowanych do tras zdefiniowanych w wtyczkach podrzędnych.
- CVE-2026-2880Krytyczne
Podatność w @fastify/middie w wersjach poniżej 9.2.0 może prowadzić do ominięcia uwierzytelniania/autoryzacji przy użyciu middleware o zasięgu ścieżki. W przypadku włączonych opcji normalizacji routera Fastify, odpowiednio skonstruowane ścieżki żądań mogą omijać kontrole middleware.
- CVE-2026-14181Wysokie
Podatność w @fastify/middie w wersjach 9.1.0 do 9.3.2 powoduje awarię procesu Node.js przy przetwarzaniu nieprawidłowo zakodowanych sekwencji procentowych w ścieżkach żądań. Błąd występuje tylko przy użyciu samodzielnego silnika API (middie.run), a nie wtyczki Fastify.
Oryginalny opis (angielski, źródło NVD)
@fastify/middie is the Express-style middleware engine for Fastify. In versions from 9.0.0 through 9.3.5, the use() function joined a path-scoped middleware's mount path to the plugin scope prefix in a way that could diverge from the path Fastify's router serves, most often when the scope prefix ended in a slash, and also for array mount paths and for mount paths written without a leading slash. When the two paths disagreed, the middleware was silently skipped while the route handler still ran, so path-scoped middleware such as authentication, authorization, or rate limiting could be bypassed by a single unauthenticated request. The issue is fixed in @fastify/middie 9.3.6, and users should upgrade to 9.3.6 or later. As a workaround, enforce authorization in a Fastify hook such as preHandler that runs after the router has resolved the request.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

