W narzędziu , używanym do organizowania wykonywania poleceń w imieniu innych użytkowników, (), która pozwala na wykonywanie poleceń z uprawnieniami root, pod warunkiem, że w ustawieniach sudoers są zasady, w których w sekcji sprawdzania identyfikatora użytkownika po zezwalającym słowie kluczowym „ALL” następuje wyraźny zakaz uruchamiania z uprawnieniami root („… (ALL, !root) …”). W domyślnych konfiguracjach w dystrybucjach podatność ta nie występuje.
W przypadku wystąpienia w sudoers dozwolonych, ale niezwykle rzadko spotykanych w praktyce reguł, które zezwalają na wykonanie określonego polecenia z identyfikatorem UID dowolnego użytkownika, z wyjątkiem root, atakujący, który ma uprawnienia do wykonania tego polecenia, może obejść nałożone ograniczenie i wykonać polecenie z uprawnieniami root. Aby obejść ograniczenie, wystarczy spróbować wykonać określone w ustawieniach polecenie z UID „-1” lub „4294967295”, co spowoduje jego wykonanie z UID 0.
Na przykład, jeśli w ustawieniach istnieje zasada, która daje dowolnemu użytkownikowi prawo do wykonywania programu /usr/bin/id pod dowolnym UID:
myhost ALL = (ALL, !root) /usr/bin/id
lub wariant, który zezwala na wykonanie tylko dla konkretnego użytkownika bob:
myhost bob = (ALL, !root) /usr/bin/id
Użytkownik może wykonać „sudo -u ‘#-1’ id”, a narzędzie /usr/bin/id zostanie uruchomione z uprawnieniami root, pomimo wyraźnego zakazu w ustawieniach. Problem wynika z pominięcia specjalnych wartości „-1” lub „4294967295”, które nie prowadzą do zmiany UID, ale ponieważ samo sudo już działa pod użytkownikiem root, to bez zmiany UID także docelowe polecenie jest uruchamiane z uprawnieniami root.
W dystrybucjach SUSE i openSUSE bez wskazania w regule „NOPASSWD” podatność , ponieważ w sudoers domyślnie włączony jest tryb „Defaults targetpw”, w którym sprawdzany jest UID w bazie haseł z wyświetleniem zapytania o wprowadzenie hasła docelowego użytkownika. Na podobnych systemach atak może być przeprowadzony tylko przy wystąpieniu reguł typu:
myhost ALL = (ALL, !root) NOPASSWD: /usr/bin/id
Problem został rozwiązany w wydaniu . Poprawka jest również dostępna w formie . W dystrybucjach luka została już usunięta w , , , , i . W momencie pisania tej wiadomości problem pozostaje nierozwiązany w i . Luka została wykryta przez badaczy bezpieczeństwa z firmy Apple.
Źródło: opennet.ru
