Biblioteka @fastify/static przed wersją 10.1.3 zawiera niekompletną poprawkę dla wcześniejszego obejścia ochrony tras, umożliwiając nieuwierzytelnionemu atakującemu dostęp do chronionych plików statycznych. Podatność wynika z braku kanonizacji ścieżki URL przed jej dopasowaniem do reguł routingu, co pozwala na ujawnienie zawartości chronionych plików.
▸ Pokaż oryginał (EN)
@fastify/static before version 10.1.3 contains an incomplete fix for a previous route guard bypass. The static file handler rejected only parent directory segments, but it did not canonicalize dot segments, duplicate slashes, encoded dots, or backslashes before route matching and before delegating to the send layer. As a result, an unauthenticated attacker could request a file protected by a route based guard using a non canonical path form that misses the guarded route yet resolves back onto the protected file, disclosing its contents. Applications that protect a subtree of the static root with a route based guard are affected, while applications relying on the allowedPath option are not. This is fixed in @fastify/static 10.1.3, which canonicalizes the pathname, including rejecting backslashes, on the path used for routing and serving.
Handler plików statycznych odrzucał jedynie segmenty nadrzędnych katalogów (np. `../`), lecz nie wykonywał kanonizacji segmentów kropkowych, podwójnych ukośników, zakodowanych kropek ani odwrotnych ukośników przed procesem dopasowywania trasy i przekazaniem żądania do warstwy serwującej pliki. Atakujący mógł skonstruować niestandardową, niekanonową formę ścieżki URL, która omija zdefiniowaną regułę ochrony trasy, lecz po rozwiązaniu przez system plików wskazuje na chroniony plik. Mechanizm ochrony oparty na opcji `allowedPath` nie jest podatny — problem dotyczy wyłącznie ochrony opartej na regułach routingu.
Nieuwierzytelniony atakujący może uzyskać dostęp do zawartości plików chronionych regułami routingu, co prowadzi do nieautoryzowanego ujawnienia wrażliwych danych (naruszenie poufności).
Należy zaktualizować pakiet @fastify/static do wersji 10.1.3 lub nowszej. Wersja 10.1.3 wprowadza pełną kanonizację ścieżki — w tym odrzucanie odwrotnych ukośników — zarówno na potrzeby routingu, jak i serwowania plików.
Pakiet @fastify/static we wszystkich wersjach przed 10.1.3, w aplikacjach korzystających z ochrony podkatalogu statycznego korzenia za pomocą reguł routingu (route-based guard).
Podatność stanowi niekompletną naprawę wcześniejszego obejścia ochrony tras (route guard bypass) w tym samym pakiecie. Aplikacje korzystające wyłącznie z opcji allowedPath nie są podatne.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:NFastify Static
APPFastify< 10.1.3
Powiązane podatności
Path traversal w @fastify/static umożliwia odczyt chronionych plików
A redirect vulnerability in the `fastify-static` module version >= 4.2.4 and < 4.4.1 allows remote attackers t...
@fastify/static evaluates the allowedPath callback before normalizing dot segments and duplicate path separato...
@fastify/static w wersjach 8.0.0 do 9.1.0 pozwala na path traversal, gdy lista katalogów jest włączona za pośr...
Wersje @fastify/static od 8.0.0 do 9.1.0 dekodują zakodowane separatory ścieżek (%2F) przed resolucją systemu ...