Framework Astro w wersji 6.4.7 zawiera błąd w mechanizmie autoryzacji, który pozwala atakującemu na uzyskanie dostępu do chronionych tras (routes) bez wymaganych uprawnień. Podatność wynika z niezgodności między etapem podejmowania decyzji autoryzacyjnej a ostatecznym rozwiązaniem ścieżki żądania.
▸ Pokaż oryginał (EN)
Astro is a web framework for content-driven websites. Version 6.4.7 performs authorization decisions on a partially decoded pathname after reaching the iterative URL decoder limit, while later rewrite route matching performs an additional decodeURI() operation and can resolve the request to a protected route. This issue is fixed in version 6.4.8.
Astro stosuje iteracyjny dekoder URL z limitem liczby operacji dekodowania. Gdy limit zostaje osiągnięty, decyzja autoryzacyjna jest podejmowana na podstawie częściowo zdekodowanej ścieżki URL. Następnie, podczas dopasowywania tras przez mechanizm rewrite, wykonywana jest dodatkowa operacja decodeURI(), która w pełni dekoduje ścieżkę i może rozwiązać żądanie do chronionej trasy. W efekcie atakujący może spreparować odpowiednio zakodowany URL, który na etapie autoryzacji wygląda jak nieszkodliwy, lecz po pełnym zdekodowaniu wskazuje na zasób wymagający uprawnień.
Atakujący nieposiadający żadnych uprawnień może uzyskać nieautoryzowany dostęp do poufnych zasobów chronionych tras aplikacji oraz potencjalnie dokonać ograniczonych modyfikacji danych (zgodnie z wektorem CVSS: wysoka poufność, niska integralność).
Należy zaktualizować Astro do wersji 6.4.8, w której problem został naprawiony. Patch dostępny jest w oficjalnym repozytorium GitHub projektu Astro.
Astro w wersji 6.4.7
Podatność klasyfikowana jako CWE-647 (Use of Non-Canonical URL Paths for Authorization Decisions). Szczegóły dostępne w security advisory GHSA-vj59-8hwv-xxmv opublikowanym w repozytorium GitHub projektu Astro.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:N