![sudo](https://i.iinfo.cz/images/158/sudo-1.jpg)
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.