Luka w środowisku użytkownika Enlightenment, która umożliwia uzyskanie praw root

W środowisku użytkownika Enlightenment wykryto lukę (CVE-2022-37706), która umożliwia nieuprzywilejowanemu użytkownikowi lokalnemu wykonanie kodu z uprawnieniami roota. Luka nie została jeszcze naprawiona (0-day), ale w domenie publicznej dostępny jest już exploit, przetestowany w Ubuntu 22.04.

Problem występuje w pliku wykonywalnym oświecenie_sys, który jest dostarczany z flagą root suid i wykonuje pewne dozwolone polecenia, takie jak montowanie dysku za pomocą narzędzia mount, poprzez wywołanie system(). Ze względu na nieprawidłowe działanie funkcji generującej ciąg znaków przekazywany do wywołania system(), z argumentów uruchamianej komendy wycinane są cudzysłowy, które można wykorzystać do uruchomienia własnego kodu. Na przykład podczas uruchamiania mkdir -p /tmp/net mkdir -p "/tmp/;/tmp/exploit" echo "/bin/sh" > /tmp/exploit chmod a+x /tmp/exploit oświecenie_sys /bin/mount - o noexec,nosuid,utf8,nodev,iocharset=utf8,utf8=0,utf8=1,uid=$(id -u), „/dev/../tmp/;/tmp/exploit” /tmp// /net

w związku z usunięciem podwójnych cudzysłowów, zamiast podanego polecenia '/bin/mount ... "/dev/../tmp/;/tmp/exploit" /tmp///net' zostanie wyświetlony ciąg znaków bez cudzysłowów przekazany do funkcji system() ' /bin/mount … /dev/../tmp/;/tmp/exploit /tmp///net', co spowoduje wykonanie polecenia '/tmp/exploit /tmp///net ', który ma być wykonywany oddzielnie, a nie przetwarzany w ramach ścieżki do urządzenia. Wiersze „/dev/../tmp/” i „/tmp///net” zostały wybrane w celu ominięcia sprawdzania argumentów dla polecenia montowania w oświeceniu_sys (urządzenie montujące musi zaczynać się od /dev/ i wskazywać istniejący plik, i trzy znaki „/” w punkcie podłączenia są określone, aby osiągnąć wymagany rozmiar ścieżki).

Źródło: opennet.ru

Dodaj komentarz