Sudo do poprawki – Debian i Canonical publikują łatki
Jeżeli ktoś jeszcze nie wykonał aktualizacji swojego Debiana lub Ubuntu (a nawet Minta), powinien zrobić to jak najprędziej. Ogłoszona wczoraj podatność w sudo może spędzić sen z powiek niektórym użytkownikom. CVE-2019-14287 to nic innego jak możliwość wywołania programu jako root, nawet jeżeli system został skonfigurowany inaczej.
Błąd jest na tyle poważny, że poprawki pojawiły się już kilka godzin po jego odkryciu. W roli głównej występuje tym razem polecenie sudo i jego niefrasobliwe traktowanie parametru ID. Jeżeli bowiem skonfigurujemy sudo tak, aby umożliwiało użytkownikowi uruchamianie komend jako dowolny (ALL) użytkownik (ale za wyjątkiem np. root), to możemy obejść tę restrykcję wywołując sudo z ID -1 lub 4294967295. Przyjmijmy, że chcemy użytkownikowi janusz (id 100) umożliwić wykonywanie komendy cowsay i id (/etc/sudoers):
janusz all=(ALL,!root) cowsay,id
Ktoś zechce wywoływać tę komendę podając numer ID użytkownika.
sudo -u#100 cowsay
I wszystko jest w porządku.
sudo -u#100 id
Powyższe da nam w wyniku 100. Ale:
sudo -u#-1 id
Zwróci 0. Do czego to prowadzi w praktyce? Ano to, że pomimo, iż zabroniliśmy użytkownikowi janusz wykonywania komend cowsay i id z ID roota, wystarczy podać trefny parametr i obejść konfigurację. Chyba nie trzeba dalej tłumaczyć, co do czego może to doprowadzić w poważniejszych środowiskach produkcyjnych.
Dzieje się tak w sudo do wersji 1.8.28. Na serwerach pojawiły się już stosowne łatki i aktualizacje:
- Ubuntu 19.04: sudo 1.8.27-1ubuntu1.1,
- Ubuntu 18.04 LTS: sudo 1.8.21p2-3ubuntu1.1,
- Ubuntu 16.04 LTS: sudo 1.8.16-0ubuntu1.8,
- Ubuntu 14.04 ESM: sudo 1.8.9p5-1ubuntu1.5+esm2,
- Ubuntu 12.04 ESM: sudo 1.8.3p1-1ubuntu3.8,
- Debian GNU/Linux 9 “Stretch”: sudo 1.8.19p1-2.1+deb9u1,
- Debian GNU/Linux 10 “Buster”: sudo 1.8.27-1+deb10u1.
Stosowne poprawki pojawiły się też w innych dystrybucjach – openSUSE, Arch Linux, itp.
Lece aktualizować.
BSD są nie podatne