L Badacze bezpieczeństwa Qualys zidentyfikowali krytyczną lukę (CVE-2021-3156) w narzędziu sudo, który ma na celu organizowanie wykonywania poleceń w imieniu innych użytkowników.
Słaby punkt umożliwia nieuwierzytelniony dostęp z uprawnieniami roota. Problem może być używany przez każdego użytkownika, niezależnie od obecności w grupach systemowych i obecności wpisu w pliku / etc / sudoers.
Atak nie wymaga podania hasła użytkownika, to znaczy, że luka może zostać wykorzystana przez osobę zewnętrzną do podniesienia uprawnień w systemie po tym, jak luka została naruszona w procesie bez uprawnień (w tym tych, które zostały uruchomione przez użytkownika „nobody”).
Aby wyszukać lukę w systemie, po prostu uruchom polecenie „sudoedit -s /”, a luka jest obecna, jeśli zostanie wyświetlony komunikat o błędzie zaczynający się od „sudoedit:”.
O podatności
Luka pojawia się od lipca 2011 roku i jest spowodowana przepełnieniem bufora w obsłudze znaków zmiany znaczenia linii w parametrach przeznaczonych do wykonywania poleceń w trybie powłoki. Tryb powłoki jest włączany przez podanie argumentów "-i" lub "-s" i powoduje, że polecenie nie jest wykonywane bezpośrednio, ale przez dodatkowe wywołanie powłoki z flagą "-c" ("sh -c polecenie»).
Najważniejsze jest to, że gdy narzędzie sudo działa normalnie, wymyka się ze znaków specjalnych, określając opcje „-i” i „-s”, ale po uruchomieniu narzędzia sudoedit parametry nie są zmieniane, jak parse_args () Funkcja ustawia zmienną środowiskową MODE_EDIT zamiast MODE_SHELL i nie resetuje wartości „valid_flags”.
Z kolei transmisja znaków bez zmiany znaczenia stwarza warunki do wystąpienia kolejnego błędu w kontrolerze, który usuwa znaki ucieczki przed sprawdzeniem reguł sudoer.
Program obsługi nieprawidłowo analizuje obecność znaku ukośnika odwrotnego bez zmiany znaczenia na końcu linii, uważa, że ten lewy ukośnik ucieka jeszcze jeden znak i kontynuuje odczytywanie danych poza granicę wiersza, kopiując je do bufora "user_args" i nadpisując obszary pamięci poza buforem.
I wspomina się, że próbując manipulować wartościami w linii poleceń sudoedit, atakujący może osiągnąć superpozycję kolejki wielokrotnego zapisu w danych, co wpływa na dalszy przebieg pracy.
Oprócz tworzenia exploita upraszcza to, że atakujący ma pełną kontrolę nad rozmiarem bufora user_args, który odpowiada rozmiarowi wszystkich przekazanych argumentów, a także kontroluje rozmiar i zawartość danych zapisywanych poza buforem za pomocą Zmienne środowiska.
Badaczom bezpieczeństwa Qualys udało się przygotować trzy exploity, których praca polega na przepisaniu zawartości struktur sudo_hook_entry, service_user i def_timestampdir:
- Po przerwaniu sudo_hook_entry plik binarny o nazwie „SYSTEMD_BYPASS_USERDB” może zostać uruchomiony jako root.
- Zastępując service_user udało się uruchomić dowolny kod jako root.
- Zastąpienie def_timestampdir umożliwiło opróżnienie zawartości stosu sudo, w tym zmiennych środowiskowych, do pliku / etc / passwd i zastąpienie użytkownika uprawnieniami roota.
Naukowcy pokazały, że exploity działają aby uzyskać pełne uprawnienia roota na Ubuntu 20.04, Debian 10 i Fedorze 33.
Słaby punkt mogą być wykorzystywane na innych systemach operacyjnych i dystrybucjach, ale weryfikacja badaczy była ograniczona do Ubuntu, Debiana i Fedory, a ponadto wspomina się, że dotyczy to wszystkich wersji sudo 1.8.2 do 1.8.31p2 i 1.9.0 do 1.9.5p1 w ustawieniach domyślnych. Sugerowane rozwiązanie w sudo 1.9.5p2.
Naukowcy powiadomili programistów z wyprzedzeniem dystrybutorzy, którzy już wydali aktualizacje pakietów w skoordynowany sposób: Debian, RHEL, Fedor, Ubuntu, SUSE / openSUSE, Arch Linux, Slackware, Gentoo i FreeBSD.
W końcu jeśli chcesz dowiedzieć się więcej na ten temat o luce, możesz sprawdzić szczegóły W poniższym linku.