CVE-2026-82455
WysokieCVSS 7.1Streszczenie
RubyGems nie przeprowadza ponownej walidacji zawartości ścieżki po rozwiązaniu dowiązań symbolicznych podczas ekstrakcji gemów. Gdy istniejące wcześniej dowiązanie symboliczne w katalogu docelowym wskazuje poza katalog ekstrakcji, pliki, które wydają się być zapisywane w katalogu docelowym, mogą zostać zapisane poza nim, łamiąc granicę bezpieczeństwa ekstrakcji. Poprawka rozwiązuje rzeczywistą ścieżkę katalogu nadrzędnego przed zapisem i zgłasza Gem::Package::PathError, jeśli wykracza poza katalog docelowy.
Ocena ryzyka
Atakujący może wykorzystać tę podatność do zapisu plików poza zamierzonym katalogiem, co może prowadzić do nadpisania krytycznych plików systemowych lub uzyskania nieautoryzowanego dostępu.
Rekomendacja
Zaktualizuj RubyGems do wersji zawierającej poprawkę, która rozwiązuje rzeczywistą ścieżkę przed zapisem i waliduje granice katalogu.
Inne podatności w RubyGems
Zobacz wszystkie- CVE-2017-0902Wysokie
RubyGems w wersji 2.6.12 i wcześniejszych jest podatny na atak typu DNS hijacking, który pozwala atakującemu przejąć kontrolę nad połączeniem i wymusić na kliencie RubyGems pobranie oraz zainstalowanie gemów z serwera, który kontroluje.
- CVE-2017-0901Wysokie
Wersje RubyGems 2.6.12 i wcześniejsze nie weryfikują nazw specyfikacji, co pozwala na stworzenie złośliwego gema, który może nadpisać dowolny plik w systemie plików.
- CVE-2017-0900Wysokie
Wersje RubyGems 2.6.12 i wcześniejsze są podatne na złośliwie skonstruowane specyfikacje gemów, które mogą prowadzić do ataku typu denial of service na klientów RubyGems, którzy wydali polecenie `query`.
- CVE-2017-0903Krytyczne
Wersje RubyGems od 2.0.0 do 2.6.13 są podatne na potencjalną możliwość zdalnego wykonania kodu. Deserializacja YAML specyfikacji gemów może obejść białe listy klas.
- CVE-2017-0899Krytyczne
RubyGems w wersji 2.6.12 i wcześniejszych jest podatny na złośliwie skonstruowane specyfikacje gemów, które zawierają znaki ucieczki terminala. Wydrukowanie specyfikacji gema może spowodować wykonanie sekwencji ucieczki terminala.
Oryginalny opis (angielski, źródło NVD)
RubyGems fails to re-validate path containment after filesystem symlink resolution during gem extraction. When a pre-existing symlink inside the destination directory points outside the extraction root, extracted files that appear to be written under the destination directory can instead be written outside of it, breaking the extraction safety boundary. The fix resolves the real path of the parent directory before writing and raises Gem::Package::PathError if it escapes the destination directory.

