Znalezione luki w bibliotekach sieciowych Rust and Go uniemożliwiają weryfikację IP

Ostatnio opublikowano informację o podatnościach które zostały znalezione w standardowych bibliotekach języków Rdza i idź, które są związane z niewłaściwą obsługą adresów IP z cyframi ósemkowymi w funkcjach analizy adresu.

Wspomniano, że eTe luki pozwalają uniknąć sprawdzania prawidłowego adresu in aplikacji, na przykład do organizowania dostępu do adresów interfejsu pętli zwrotnej lub podsieci intranetowych, gdy przeprowadzane są ataki polegające na fałszowaniu żądań po stronie serwera.

Luki w tych dwóch językach Ciągi adresów IP mają realizację w specyfikacji od zera, ponieważ jesteś teoretycznie należy je interpretować jako liczby ósemkowe, ale problem powodujący te usterki polega na tym, że wiele bibliotek ignoruje to i po prostu odrzuca zero, więc w końcu traktują wartość jako liczbę dziesiętną.

Na przykład, aby zrozumieć, w jaki sposób adresy IP są interpretowane w tych błędach, liczba 0177 w systemie ósemkowym jest 127 w systemie dziesiętnym i z którą atakujący może zażądać zasobu określającego wartość „0177.0.0.1”, która, ponieważ nie jest pobierana jako ósemkowy, notacja dziesiętna dla tego to „127.0.0.1”.

Dlatego w przypadku korzystania z jednej z problematycznych bibliotek, aplikacja nie wykryje wystąpienia adresu 0177.0.0.1 w podsieci 127.0.0.1, ale w rzeczywistości podczas wysyłania żądania można wywołać adres „0177.0.0.1”, który z powodu błędnej interpretacji funkcje sieciowe przetworzą go jako 127.0.0.1. Podobnie dostęp do adresów intranetowych można oszukać i zweryfikować, określając różne wartości, które atakujący oceni pod kątem możliwego wykorzystania.

Po stronie Rust, problem okazał się przedmiotem standardowej biblioteki "std :: net" i który jest już skatalogowany pod „CVE-2021-29922”. Opisuje to parser adresów IP tej biblioteki odrzuca zero przed wartościami adresu, ale tylko wtedy, gdy podano nie więcej niż trzy cyfry, np. „0177.0.0.1” zostanie zinterpretowane jako nieprawidłowa wartość i w odpowiedzi zostanie zwrócony błędny wynik.

Nieprawidłowe sprawdzanie poprawności danych wejściowych ciągu ósemkowego w standardowej bibliotece rust-lang „net” umożliwia nieuwierzytelnionym zdalnym atakującym wykonywanie nieokreślonych ataków SSRF, RFI i LFI na wiele programów zależnych od rust-lang std :: net. Oktety adresu IP są usuwane, a nie oceniane jako prawidłowe adresy IP.

Wspomniano również, że aplikacje korzystające z biblioteki std ::net :: IpAddr podczas parsowania określonych adresów przez użytkownika są potencjalnie podatne na ataki SSRF (spoofing żądania po stronie serwera), RFI (zdalne dołączanie pliku) i BIA (włączenie plików lokalnych). Podobnie atakujący może wpisać 127.0.026.1, co w rzeczywistości jest 127.0.22

Na przykład osoba atakująca, która wysyła adres IP do aplikacji sieci Web opartej na std ::net :: IpAddr, może spowodować SSRF, wprowadzając dane wejściowe w formacie ósemkowym; Atakujący może wysłać możliwe do wykorzystania adresy IP, jeśli oktet ma 3 cyfry, przy czym minimalny możliwy do wykorzystania oktet 08 prowadzi do odmowy usługi, a maksymalny możliwy do wykorzystania oktet 099, co również prowadzi do odmowy usługi. 

Jeśli chcesz dowiedzieć się więcej o tej luce w Rust możesz sprawdzić szczegóły W poniższym linku. Wspomniano również, że luka została naprawiona w gałęzi Rust 1.53.0.

Tak szybko jak do problemu, który dotyka to Go, wspomniano, że podlega to standardowej bibliotece «net» i jest już wymieniony w CVE-2021-29923. W opisie jest wspomniane, że umożliwia nieuwierzytelnionym zdalnym atakującym przeprowadzanie ataków SSRF, RFI i LFI nieokreślony w wielu programach, które zależą od wbudowanej w golanga funkcji net.ParseCIDR. Poszczególne oktety IP CIDR są usuwane, zamiast oceniać je jako prawidłowe oktety IP.

Na przykład atakujący może przekazać wartość 00000177.0.0.1, która po zaznaczeniu w funkcji net.ParseCIDR zostanie przetworzona jako 177.0.0.1/24, a nie 127.0.0.1/24. Problem objawia się również na platformie Kubernetes. Luka została naprawiona w wersji Go 1.16.3 i wersji beta 1.17.

Możesz dowiedzieć się więcej na ten temat o tej luce W poniższym linku.


Bądź pierwszym który skomentuje

Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.