CVE-2025-61771
WysokieCVSS 7.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 46 - wyżej niż 46% wszystkich znanych CVE
Streszczenie
W bibliotece Rack w wersjach przed 2.2.19, 3.1.17 i 3.2.2 parser Rack::Multipart::Parser przechowuje pola formularza niebędące plikami (bez atrybutu filename) w całości w pamięci jako obiekty String. Pojedyncze duże pole tekstowe w żądaniu multipart/form-data może zużyć równoważną ilość pamięci procesu, prowadząc do wyczerpania pamięci (OOM) i odmowy usługi.
Ocena ryzyka
Atakujący mogą wysyłać duże pola niebędące plikami, powodując nadmierne zużycie pamięci, awarie procesów roboczych lub poważne obciążenie garbage collectora. Wszystkie aplikacje Rack przetwarzające formularze multipart są narażone.
Rekomendacja
Zaktualizuj Rack do wersji 2.2.19, 3.1.17 lub 3.2.2. Jako obejście ogranicz maksymalny rozmiar ciała żądania na poziomie serwera WWW lub proxy (np. client_max_body_size w Nginx) oraz waliduj i odrzucaj nietypowo duże pola formularzy w aplikacji.
Inne podatności w Rack
Zobacz wszystkie- CVE-2026-25500Średnie
Rack, modularny interfejs serwera WWW w Ruby, w wersjach przed 2.2.22, 3.1.20 i 3.2.5 generuje indeks katalogu HTML, w którym każdy plik jest linkiem. Jeśli na dysku istnieje plik o nazwie zaczynającej się od schematu javascript: (np. javascript:alert(1)), wygenerowany link ma href równy javascript:alert(1), co pozwala na wykonanie JavaScript po kliknięciu.
- CVE-2026-34835Średnie
Rack::Request nieprawidłowo parsuje nagłówek Host, akceptując znaki takie jak /, ?, # i @, które nie są dozwolone w RFC. Funkcja req.host zwraca pełną, nieprzefiltrowaną wartość, co pozwala na ominięcie walidacji hosta opartej na prostych prefiksach lub sufiksach.
- CVE-2026-34827Wysokie
Rack w wersjach od 3.0.0.beta1 do 3.1.20 oraz 3.2.0 do 3.2.5 zawiera podatność DoS w parserze multipart. Nieuwierzytelniony atakujący może wysłać spreparowane żądanie multipart/form-data z wieloma częściami zawierającymi długie, uciekane wartości parametrów, co powoduje nadmierne zużycie CPU podczas parsowania.
- CVE-2026-32762Średnie
Rack przed wersjami 3.1.21 i 3.2.6 nieprawidłowo parsuje nagłówek Forwarded (RFC 7239), dzieląc na średniki przed obsługą wartości cytowanych. Ponieważ cytowane wartości mogą zawierać średniki, nagłówek może być interpretowany jako wiele dyrektyw Forwarded, co umożliwia atakującym przemycanie parametrów host, proto, for lub by.
- CVE-2026-26962Średnie
Rack::Multipart::Parser nieprawidłowo rozwija złożone nagłówki multipart, zachowując CRLF w wartościach parametrów. Może to prowadzić do wstrzykiwania nagłówków lub dzielenia odpowiedzi HTTP w aplikacjach używających tych wartości.
- CVE-2026-34831Średnie
W bibliotece Rack (modularny interfejs serwera WWW w Ruby) w wersjach przed 2.2.23, 3.1.21 i 3.2.6 metoda Rack::Files#fail ustawia nagłówek Content-Length przy użyciu String#size zamiast String#bytesize. Gdy treść odpowiedzi zawiera wielobajtowe znaki UTF-8, deklarowana długość jest mniejsza niż faktyczna liczba wysłanych bajtów. Atakujący może wykorzystać tę rozbieżność, żądając nieistniejącej ścieżki z zakodowanymi procentowo znakami UTF-8, co prowadzi do nieprawidłowego ramowania odpowiedzi HTTP i potencjalnej desynchronizacji odpowiedzi w środowiskach polegających na błędnej wartości Content-Length.
- CVE-2026-34830Średnie
W Rack przed wersjami 2.2.23, 3.1.21 i 3.2.6 stwierdzono podatność w Rack::Sendfile#map_accel_path. Wstrzykiwanie nagłówka X-Accel-Mapping do wyrażenia regularnego bez odpowiedniego escapowania umożliwia atakującemu kontrolę nad nagłówkiem X-Accel-Redirect, co może prowadzić do serwowania nieautoryzowanych plików przez nginx.
- CVE-2026-34829Wysokie
Rack przed wersjami 2.2.23, 3.1.21 i 3.2.6 nie ogranicza rozmiaru danych przesyłanych w żądaniach multipart/form-data bez nagłówka Content-Length. Atakujący może przesłać dowolnie duży plik, powodując wyczerpanie miejsca na dysku i odmowę usługi (DoS).
- CVE-2026-34826Średnie
Rack przed wersjami 2.2.23, 3.1.21 i 3.2.6 ma podatność na odmowę usługi przez nieograniczoną liczbę zakresów bajtów w nagłówku HTTP Range. Atakujący może dostarczyć wiele małych, nakładających się zakresów, co powoduje nieproporcjonalne zużycie CPU, pamięci, I/O i przepustowości.
- CVE-2026-34786Średnie
Rack::Static błędnie ocenia reguły nagłówków na surowym, zakodowanym URL-u PATH_INFO, podczas gdy plik jest serwowany po dekodowaniu. Żądanie zakodowanej wariantu ścieżki może ominąć zamierzone nagłówki bezpieczeństwa.
Oryginalny opis (angielski, źródło NVD)
Rack is a modular Ruby web server interface. In versions prior to 2.2.19, 3.1.17, and 3.2.2, ``Rack::Multipart::Parser` stores non-file form fields (parts without a `filename`) entirely in memory as Ruby `String` objects. A single large text field in a multipart/form-data request (hundreds of megabytes or more) can consume equivalent process memory, potentially leading to out-of-memory (OOM) conditions and denial of service (DoS). Attackers can send large non-file fields to trigger excessive memory usage. Impact scales with request size and concurrency, potentially leading to worker crashes or severe garbage-collection overhead. All Rack applications processing multipart form submissions are affected. Versions 2.2.19, 3.1.17, and 3.2.2 enforce a reasonable size cap for non-file fields (e.g., 2 MiB). Workarounds include restricting maximum request body size at the web-server or proxy layer (e.g., Nginx `client_max_body_size`) and validating and rejecting unusually large form fields at the application level.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

