CVE-2026-34831
ŚrednieCVSS 4.8Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 4 - wyżej niż 4% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Podatność może umożliwić atakującemu desynchronizację odpowiedzi HTTP, co w skrajnych przypadkach może prowadzić do przechwycenia sesji lub innych ataków typu request smuggling.
Rekomendacja
Należy niezwłocznie zaktualizować bibliotekę Rack do wersji 2.2.23, 3.1.21 lub 3.2.6 (w zależności od używanej gałęzi).
Inne podatności w Rack
Zobacz wszystkie- 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-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.
- CVE-2026-34785Wysokie
Rack w wersjach przed 2.2.23, 3.1.21 i 3.2.6 nieprawidłowo sprawdza prefiksy URL w Rack::Static, co może prowadzić do nieautoryzowanego serwowania plików statycznych i ujawnienia informacji.
- CVE-2026-34763Średnie
Rack::Directory interpoluje skonfigurowaną ścieżkę główną bezpośrednio do wyrażenia regularnego podczas wyprowadzania wyświetlanej ścieżki katalogu. Jeśli ścieżka główna zawiera metaznaki wyrażeń regularnych, takie jak +, * lub ., prefiks może nie zostać poprawnie usunięty, a wygenerowane listowanie katalogów może ujawnić pełną ścieżkę systemu plików w wyjściu HTML.
Oryginalny opis (angielski, źródło NVD)
Rack is a modular Ruby web server interface. Prior to versions 2.2.23, 3.1.21, and 3.2.6, Rack::Files#fail sets the Content-Length response header using String#size instead of String#bytesize. When the response body contains multibyte UTF-8 characters, the declared Content-Length is smaller than the number of bytes actually sent on the wire. Because Rack::Files reflects the requested path in 404 responses, an attacker can trigger this mismatch by requesting a non-existent path containing percent-encoded UTF-8 characters. This results in incorrect HTTP response framing and may cause response desynchronization in deployments that rely on the incorrect Content-Length value. This issue has been patched in versions 2.2.23, 3.1.21, and 3.2.6.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

