Krytyczna podatność w bibliotece Flask-Reuploaded umożliwia zdalnym, nieuwierzytelnionym atakującym wykonanie dowolnego kodu na serwerze. Luka wynika z połączenia path traversal oraz ominięcia weryfikacji rozszerzenia pliku poprzez Server-Side Template Injection (SSTI).
▸ Pokaż oryginał (EN)
Flask-Reuploaded provides file uploads for Flask. A critical path traversal and extension bypass vulnerability in versions prior to 1.5.0 allows remote attackers to achieve arbitrary file write and remote code execution through Server-Side Template Injection (SSTI). Flask-Reuploaded has been patched in version 1.5.0. Some workarounds are available. Do not pass user input to the `name` parameter, use auto-generated filenames only, and implement strict input validation if `name` must be used.
Atakujący może przekazać spreparowane dane wejściowe do parametru `name` podczas przesyłania pliku. Biblioteka nie waliduje poprawnie tej wartości, co pozwala na path traversal — zapisanie pliku w dowolnej lokalizacji na serwerze poza zamierzonym katalogiem docelowym. Jednocześnie możliwe jest ominięcie kontroli rozszerzenia pliku, a poprzez SSTI atakujący może doprowadzić do wykonania złośliwego kodu po stronie serwera.
Atakujący może zapisać dowolny plik w wybranej lokalizacji na serwerze i wykonać na nim zdalny kod (RCE), co może prowadzić do pełnego przejęcia kontroli nad systemem, ujawnienia poufnych danych lub naruszenia ich integralności.
Należy zaktualizować Flask-Reuploaded do wersji 1.5.0, w której podatność została naprawiona. Jako tymczasowe obejście: nie należy przekazywać danych wejściowych od użytkownika do parametru `name` — zamiast tego należy używać wyłącznie automatycznie generowanych nazw plików; jeśli użycie parametru `name` jest niezbędne, należy wdrożyć rygorystyczną walidację danych wejściowych.
Wszystkie wersje biblioteki Jugmac00 Flask-Reuploaded przed wersją 1.5.0
Producent udostępnił patch w wersji 1.5.0 oraz opublikował security advisory pod identyfikatorem GHSA-65mp-fq8v-56jr. Podatność jest śledzona w repozytorium GitHub projektu (commit d64c6b2f71cb73734fc38baa0e3e156926361288, pull request #180).
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HJugmac00 Flask Reuploaded
APPJugmac00< 1.5.0