Biblioteka @fastify/express w wersjach 4.0.6 i wcześniejszych nie stosuje prefiksu ścieżki do middleware rejestrowanego z użyciem tablic ścieżek lub wyrażeń regularnych. Pozwala to atakującemu na ominięcie mechanizmów uwierzytelniania, autoryzacji, rate limitingu lub audytu poprzez wysłanie żądania do prefiksowanej trasy.
▸ Pokaż oryginał (EN)
@fastify/express versions 4.0.6 and earlier only rewrite the plugin prefix for middleware mount paths when the path argument is a string. Non-string mount paths (arrays of paths and regular expressions) are left unprefixed inside prefixed plugin scopes, so middleware registered with those forms does not match the actual prefixed request path. Applications that use path-scoped middleware for authentication, authorization, rate limiting, or auditing on routes inside a prefixed scope can be bypassed by sending a request to the prefixed route, because Fastify still matches the route but the middleware is skipped. Patches: upgrade to @fastify/express 4.0.7. Workarounds: use string mount paths instead of arrays or regular expressions in prefixed plugins, or register one use call per path.
Gdy middleware jest montowany w ramach prefiksowanego zakresu pluginu z użyciem niestring'owego argumentu ścieżki (tablica ścieżek lub wyrażenie regularne), biblioteka nie przepisuje ścieżki montowania o wymagany prefiks. W efekcie middleware nie dopasowuje rzeczywistej, prefiksowanej ścieżki żądania i jest pomijany. Fastify nadal obsługuje trasę i przekazuje żądanie do handlera, jednak bez wcześniejszego wykonania middleware ochronnego. Atakujący nie musi podejmować żadnych specjalnych działań poza wysłaniem zwykłego żądania HTTP do prefiksowanego endpointu.
Atakujący może uzyskać nieautoryzowany dostęp do chronionych zasobów lub funkcji aplikacji, omijając kontrole uwierzytelniania, autoryzacji, rate limitingu bądź mechanizmy audytu, co prowadzi do naruszenia poufności i integralności danych.
Należy zaktualizować @fastify/express do wersji 4.0.7. Jako obejście tymczasowe należy stosować wyłącznie string'owe argumenty ścieżki zamiast tablic lub wyrażeń regularnych w prefiksowanych pluginach, albo rejestrować osobne wywołanie use() dla każdej ścieżki.
@fastify/express w wersjach 4.0.6 i wcześniejszych
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:NFastify Fastify\/express
APPFastify< 4.0.7
Powiązane podatności
Pominięcie middleware security w @fastify/express — bypass uwierzytelniania
Pominięcie uwierzytelnienia w @fastify/express via znormalizowane URL
Pominięcie rewrite prefiksu URL w @fastify/http-proxy – dostęp do ukrytych zasobów
Fastify/Middie: pominięcie middleware przez zakodowany slash w URL
Pominięcie uwierzytelnienia w @fastify/middie — brak dziedziczenia middleware