Luka w zabezpieczeniach roota w sudo Linux Mint i Elementary OS

W narzędziu sudo, służy do organizowania wykonywania poleceń w imieniu innych użytkowników, zidentyfikowane słaby punkt (CVE-2019-18634), co pozwala na eskalację uprawnień do użytkownika root. Problem występuje od wersji sudo 1.7.1 tylko podczas korzystania z opcji „pwfeedback” w pliku /etc/sudoers, która jest domyślnie wyłączona, ale włączona w niektórych dystrybucjach, takich jak: Linux Mint i Elementary OS. Problem został rozwiązany w wersji Sudo 1.8.31, opublikowano kilka godzin temu. Luka ta nadal nie została naprawiona w dystrybucjach.

Opcja „pwfeedback” włącza wyświetlanie symbolu „*” po każdym wprowadzonym znaku podczas wprowadzania hasła. Z powodu Błędy W implementacji funkcji getln() zdefiniowanej w pliku tgetpass.c ciąg hasła, który jest zbyt długi, aby zmieścić się w przydzielonym buforze w pewnych warunkach, może przepełnić bufor i nadpisać inne dane na stosie. Przepełnienie występuje podczas wykonywania kodu sudo z uprawnieniami roota.

Istota problemu polega na tym, że podczas korzystania ze specjalnego znaku ^U (czyszczenie wiersza) podczas procesu wprowadzania danych i gdy operacja zapisu się nie powiedzie, kod odpowiadający za czyszczenie znaków wyjściowych „*” resetuje dane o dostępnym rozmiarze bufora, ale nie przywraca wskaźnika do bieżącej pozycji w buforze do jego pierwotnej wartości. Innym czynnikiem przyczyniającym się do eksploatacji jest brak automatycznego wyłączania trybu „pwfeedback”, gdy dane są odbierane nie z terminala, a poprzez strumień wejściowy (ta wada pozwala na stworzenie warunków do wystąpienia błędu zapisu, np. w systemach z jednokierunkowym kanały bez nazwy Błąd występuje przy próbie zapisu poza końcem kanału odczytu).

Ponieważ atakujący ma pełną kontrolę nad nadpisywaniem danych w stosie, nietrudno jest stworzyć exploit umożliwiający podniesienie uprawnień do użytkownika root. Problem ten może zostać wykorzystany przez dowolnego użytkownika, niezależnie od uprawnień sudo i ustawień użytkownika w sudoers. Aby wyeliminować ten problem, upewnij się, że ustawienie „pwfeedback” nie znajduje się w pliku /etc/sudoers, a w razie potrzeby wyłącz je („Domyślne !pwfeedback”). Aby sprawdzić, czy występuje problem, możesz uruchomić kod:

$ perl -e 'wydrukuj(("A" x 100 . "\x{00}") x 50)' | sudo -S id
Hasło: Błąd segmentacji

Źródło: opennet.ru

Kup niezawodny hosting dla stron z ochroną DDoS, serwery VPS VDS 🔥 Kup niezawodny hosting stron internetowych z ochroną DDoS, serwery VPS VDS | ProHoster