Hlavní navigace

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

14. 10. 2019

Sdílet

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?
  • Aktualita je stará, nové názory již nelze přidávat.

Byl pro vás článek přínosný?

Autor zprávičky

Petr Krčmář pracuje jako šéfredaktor serveru Root.cz. Studoval počítače a média, takže je rozpolcen mezi dva obory. Snaží se dělat obojí, jak nejlépe umí.