Luka w zabezpieczeniach roota sudo wpływająca na Linux Mint i Elementary OS

W narzędziu sudo, służące do organizowania wykonywania poleceń w imieniu innych użytkowników, zidentyfikowane słaby punkt (CVE-2019-18634), co pozwala na zwiększenie uprawnień w systemie do użytkownika root. Problem pojawia się dopiero od wydania sudo 1.7.1, gdy używana jest opcja „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 rozwiązany w wydaniu Sudo 1.8.31, opublikowany kilka godzin temu. Luka pozostaje nienaprawiona w pakietach dystrybucyjnych.

Opcja „pwfeedback” umożliwia wyświetlanie znaku „*” po każdym wprowadzonym znaku podczas wprowadzania hasła. Z powodu Błędy W implementacji funkcji getln(), zdefiniowanej w pliku tgetpass.c, zbyt duży ciąg hasła przekazywany standardowym strumieniem wejściowym (stdin) w pewnych warunkach może nie zmieścić się w przydzielonym buforze i nadpisać inne dane na stosie. Przepełnienie występuje podczas uruchamiania kodu Sudo jako root.

Istota problemu polega na tym, że w przypadku użycia znaku specjalnego ^U (czyszczenie linii) podczas wprowadzania danych i w przypadku niepowodzenia zapisu, kod odpowiedzialny za zerowanie wyjściowych znaków „*” resetuje dane o dostępnej wielkości bufora, ale nie zwróć wskaźnik do bieżącej pozycji wartości początkowej w buforze. Dodatkowym czynnikiem przyczyniającym się do wykorzystania jest brak automatycznego wyłączania trybu „pwfeedback” w przypadku, gdy dane napływają nie z terminala, ale poprzez strumień wejściowy (wada ta pozwala stworzyć warunki do wystąpienia błędu zapisu np. na systemach z jednokierunkowy nienazwane kanały przy próbie zapisu do końca czytanego kanału wystąpi błąd).

Ponieważ atakujący ma pełną kontrolę nad nadpisywaniem danych na stosie, nie jest trudno stworzyć exploita, który pozwoli mu zwiększyć swoje uprawnienia do rootowania. Problem może wykorzystać każdy użytkownik, niezależnie od uprawnień sudo i ustawień specyficznych dla użytkownika w sudoers. Aby zablokować problem, należy upewnić się, że w /etc/sudoers nie ma ustawienia „pwfeedback” i w razie potrzeby wyłączyć je („Domyślne !pwfeedback”). Aby sprawdzić, czy wystąpił problem, możesz uruchomić kod:

$ perl -e „print((„A” x 100 . „\x{00}”) x 50)” | sudo -S identyfikator
Hasło: Błąd segmentacji

Źródło: opennet.ru

Dodaj komentarz