Hlavní navigace

Chyba v sudo umožňuje navýšení práv, stačí jako UID nastavit -1 nebo 4294967295

Sdílet

Petr Krčmář
sudo

Vážná zranitelnost byla objevena v příkazu sudo  (superuser do), což je velmi oblíbený a mocný nástroj pro cílené získávání správcovských oprávnění běžnými uživateli. Správce (root) má možnost v konfiguraci vybraným uživatelům či skupinám udělit vyšší práva, kterých pak mohou využívat právě pomocí  sudo.

Objevená chyba CVE-2019–14287 dovoluje spouštět příkazy s rootovským oprávněním, i když k tomu uživatel nedostal od roota patřičné svolení. Uživateli k tomu stačí nastavit user ID na -1 nebo 4294967295. Při následném použití syscallů setresuid(2) a setreuid(2) pak nedojde k žádané změně UID, ale samotné sudo už běží pod UID 0 a spuštěný příkaz jej zdědí. Navíc nebude uživatel ani požádán o heslo, protože původně zadané UID není nalezeno v databázi uživatelů.

Ke zneužití je potřeba, aby uživatel byl zadán v /etc/sudoers  s hodnotou ALL v části Runas. Nezáleží pak na dalších podmínkách, například zákazu spouštět příkazy jako root ( !root). Tato omezení je výše uvedeným postupem možné obejít a spustit zvolený příkaz pod rootem. Stačí k tomu zavolat jeden z následujících příkazů:

$ sudo -u#-1 id -u
$ sudo -u#4294967295 id -u

Patch už existuje, distribuce už začaly se záplatováním. Chyba je také opravená v čerstvě vydaném sudo 1.8.28. Protože je sudo součástí mnoha běžných prostředí a protože je chyba triviálně zneužitelná, doporučujeme co nejdříve záplatovat.

Našli jste v článku chybu?
Ochrana proti spamovacím robotům. Odpovězte prosím na následující otázku: Jaký je letos rok?