Linux zagrożony. Konto bez uprawnień może wszystko, jeśli ma właściwy identyfikator

Strona główna Aktualności
image
Linux

O autorze

W systemie Linux odkryta została ciekawa luka, pozwalająca zwykłemu użytkownikowi wykonywać wszystkie polecenia bez autoryzacji. Konto musi jedynie spełniać specyficzny warunek.

Konto z niskimi przywilejami może wykonać dowolne polecenie systemctl bez autoryzacji, o ile jego identyfikator (UID) jest większy niż 2147483647. Liczba ta na pewno wyda się znajoma programistom. W systemie heksadecymalnym to 0x7FFFFFFF – największa wartość, jaką może osiągnąć zmienna typu int (32-bitowa liczba całkowita ze znakiem, jest to też wartość statycznej stałej INT_MAX w języku C). Oczywiście konto z takim identyfikatorem najpierw trzeba jakoś stworzyć, na przykład przekonując użytkownika z odpowiednimi uprawnieniami do uruchomienia szkodliwego skryptu, a to nie będzie takie proste.

Luka jest obecna w większości dystrybucji Linuxa, a konkretnie w PolicyKit (polkit) – zestawie narzędzi do wykorzystania na poziomie aplikacji, pozwalający tworzyć polityki uprawnień, zarządzać uprawnieniami w całym systemie i umożliwić procesom o niższych uprawnieniach komunikację z tymi o wyższych. Polkit umożliwia między innymi korzystanie z polecenia sudo, które pozwala wykonać polecenie z wyższymi uprawnieniami, ale nie daje ich całemu procesowi.

Podatność została oznaczona jako CVE-2018-19788 i wciąż czeka na rozwiązanie. Luka została znaleziona w PolicyKit 0.115, obecnym w Red Hacie, Debianie, Ubuntu, CentOS-ie, SUSE i wielu innych dystrybucjach. W sieci znalazł się też banalnie prosty, przykładowy exploit.

© dobreprogramy