Podatność w bibliotece @fastify/reply-from powoduje, że różne pary adresów docelowych i źródłowych mogą generować identyczny klucz w wewnętrznej pamięci cache URL. Skutkuje to sytuacją, w której odpowiedź z jednego upstream może zostać błędnie dostarczona do żądania przeznaczonego dla innego upstream, co prowadzi do nieautoryzowanego dostępu do danych i ich modyfikacji.
▸ Pokaż oryginał (EN)
Impact: @fastify/reply-from versions from 8.3.1 up to but not including 12.6.4 build the internal URL cache key by concatenating the destination and source path without a delimiter. Different destination and source pairs can therefore produce the same key while resolving to different upstream URLs. When getUpstream selects an upstream from request data, a URL cached for one upstream can be reused for a request intended for another upstream, causing cross-upstream data access and modification. The default configuration is affected. Setting disableCache to true prevents the behavior. Patches: upgrade to @fastify/reply-from 12.6.4. Workarounds: pass disableCache: true when registering the plugin.
Biblioteka buduje klucz wewnętrznej pamięci cache poprzez proste konkatenowanie adresu docelowego (destination) i ścieżki źródłowej (source path) bez żadnego separatora. W wyniku tego różne kombinacje destination i source path mogą dać identyczny klucz cache. Kiedy funkcja getUpstream wybiera upstream na podstawie danych z żądania, adres URL zapamiętany dla jednego upstream może zostać ponownie użyty dla żądania skierowanego do zupełnie innego upstream. Problem dotyczy domyślnej konfiguracji wtyczki.
Atakujący może doprowadzić do sytuacji, w której żądania HTTP są kierowane do niewłaściwego upstream, co umożliwia nieautoryzowany odczyt oraz modyfikację danych przeznaczonych dla innego upstream (cross-upstream data access and modification).
Należy zaktualizować @fastify/reply-from do wersji 12.6.4 lub nowszej. Jako obejście tymczasowe można przekazać opcję disableCache: true podczas rejestracji wtyczki, co zapobiega opisanemu zachowaniu.
@fastify/reply-from w wersjach od 8.3.1 włącznie do poniżej 12.6.4
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:H/A:NFastify Fastify\/reply From
APPFastify8.3.1 – 12.6.4 (bez)
Powiązane podatności
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 middleware w @fastify/express — obejście uwierzytelniania
Pominięcie uwierzytelnienia w @fastify/middie — brak dziedziczenia middleware
Usuwanie nagłówków proxy przez manipulację nagłówkiem Connection w @fastify/reply-from