Biblioteka @fastify/http-proxy w wersjach do 11.5.0 włącznie nie przepisuje poprawnie prefiksu URL, gdy jest on zakodowany w formacie URL-encoded, co umożliwia atakującemu dotarcie do zasobów upstream, które proxy miało ukrywać. Podatność uzyskała maksymalny wynik CVSS 10.0, gdyż nie wymaga uwierzytelnienia ani interakcji użytkownika, a jej zasięg wykracza poza komponent proxy.
▸ Pokaż oryginał (EN)
Impact: @fastify/http-proxy versions up to and including 11.5.0 fail to rewrite the request prefix when the prefix segment is URL-encoded. Fastify's router URL-decodes paths for route matching, but request.url retains the original encoded form, and the prefix-rewrite step uses a literal string replace against the decoded prefix. A request that encodes one or more characters of the configured prefix therefore matches the route but skips the rewrite, so the raw encoded path is forwarded to the upstream unchanged. The upstream then decodes the path and serves it, letting an attacker reach upstream paths that the proxy was configured to hide via rewritePrefix, including internal or administrative endpoints. Patches: upgrade to @fastify/http-proxy 11.6.0. Workarounds: none.
Router Fastify dekoduje ścieżki URL przed dopasowaniem trasy, jednak pole request.url zachowuje oryginalną, zakodowaną postać. Krok rewrite prefiksu wykonuje dosłowne porównanie tekstowe z użyciem zdekodowanej wartości prefiksu, przez co zakodowany prefiks w żądaniu jest prawidłowo dopasowany do trasy, ale etap przepisywania zostaje pominięty. W efekcie zakodowana ścieżka jest przekazywana do serwera upstream bez modyfikacji, a serwer upstream samodzielnie dekoduje ją i obsługuje żądanie. Pozwala to atakującemu na ominięcie konfiguracji rewritePrefix i dotarcie do wewnętrznych lub administracyjnych endpointów, które miały pozostać ukryte.
Atakujący może uzyskać nieautoryzowany dostęp do wewnętrznych lub administracyjnych endpointów serwera upstream, które były celowo ukrywane przez konfigurację proxy. Może to prowadzić do ujawnienia poufnych danych lub wykonania nieautoryzowanych operacji administracyjnych.
Należy zaktualizować bibliotekę @fastify/http-proxy do wersji 11.6.0. Producent nie wskazuje żadnych obejść (workarounds).
@fastify/http-proxy w wersjach do 11.5.0 włącznie
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:NFastify Fastify\/http Proxy
APPFastify< 11.6.0
Powiązane podatności
Usuwanie nagłówków proxy przez manipulację nagłówkiem Connection w @fastify/reply-from
Path traversal w @fastify/http-proxy — ucieczka poza prefix WebSocket
Fastify/Middie: pominięcie middleware przez zakodowany slash w URL
Pominięcie middleware w @fastify/express — obejście uwierzytelniania
Pominięcie uwierzytelnienia w @fastify/middie — brak dziedziczenia middleware