Gem Ruby o nazwie private_address_check w wersjach przed 0.4.1 zawiera niepełną listę blokowanych adresów prywatnych i lokalnych, co umożliwia obejście zabezpieczeń przed atakami SSRF. Podatność jest krytyczna, ponieważ atakujący zdalnie, bez uwierzytelnienia, może skłonić aplikację do wykonywania żądań do wewnętrznych zasobów infrastruktury.
▸ Pokaż oryginał (EN)
The private_address_check ruby gem before 0.4.1 is vulnerable to a bypass due to an incomplete blacklist of common private/local network addresses used to prevent server-side request forgery.
Biblioteka private_address_check służy do weryfikacji, czy podany adres IP należy do zakresu prywatnego lub lokalnego — w celu ochrony przed atakami SSRF. Ze względu na niekompletną blacklistę adresów, atakujący może skonstruować żądanie wskazujące na adres, który nie został uwzględniony na liście blokowanych. W rezultacie mechanizm ochronny nie rozpoznaje takiego adresu jako prywatnego i zezwala na wykonanie żądania do wewnętrznego zasobu sieciowego.
Atakujący może ominąć zabezpieczenia anty-SSRF i zmusić aplikację do wysyłania żądań HTTP do wewnętrznych zasobów infrastruktury, co może prowadzić do nieautoryzowanego dostępu do poufnych danych, ujawnienia wewnętrznych usług lub dalszego kompromitowania systemu.
Należy zaktualizować gem private_address_check do wersji 0.4.1 lub nowszej. W pliku Gemfile należy ustawić odpowiednie ograniczenie wersji i wykonać polecenie bundle update private_address_check.
Ruby gem private_address_check w wersjach przed 0.4.1
Szczegóły techniczne dotyczące konkretnych pominiętych zakresów adresów dostępne są w raporcie HackerOne nr 288950 oraz w pull requeście #3 repozytorium projektu na GitHub.
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HPrivate Address Check Project Private Address Check
APPPrivate Address Check Project< 0.4.1