Błąd w sudo zagrożeniem dla systemów uniksopodobnych. Każdy może być rootem

Strona główna Aktualności
(fot. Shutterstock.com)
(fot. Shutterstock.com)

O autorze

Programu sudo chyba nikomu zaznajomionemu z GNU/Linuksem czy FreeBSD przedstawiać nie trzeba. Służy do wykonywania komend z uprawnieniami innego użytkownika, w tym roota – administratora. Właśnie z jego czołową funkcjonalnością związany jest błąd bezpieczeństwa CVE-2019-14287, prowadzący do eskalacji uprawnień.

Gdy sudo jest skonfigurowane tak, aby umożliwić użytkownikowi uruchamianie poleceń jako dowolny użytkownik za pomocą parametru ALL w specyfikacji Runas, możliwe jest uruchamianie poleceń jako root, podając ID użytkownika -1 lub 4294967295. Może to być wykorzystane przez każdego użytkownika z dostępem do sudo do uruchamiania poleceń jako root, nawet jeśli specyfikacja Runas zabrania mu tego – czytamy na w raporcie.

Jest to spowodowane tym, że identyfikatory -1 lub jego odpowiednik 4294967295 są interpretowane jako ID 0, czyli root. Choć, co zrozumiałe, wykorzystanie luki wymaga uprawnień do uruchamiania poleceń z dowolnym identyfikatorem. Zazwyczaj oznacza to właśnie wartość ALL w pliku /etc/sudoers.

Nawet nie zapyta o hasło

Joe Vennix z Apple Information Security, który wykrył i przeanalizował błąd, operuje przykładem konfiguracji alice myhost = (ALL) / usr / bin / id. W takim wypadku, używając składni #uid, można łatwo doprowadzić do eskalacji uprawnień. Jak pisze, wywołania systemowe setresuid (2) i setreuid (2), których sudo używa do zmiany ID użytkownika przed uruchomieniem polecenia, traktują ID użytkownika -1 (lub jego niepodpisany odpowiednik 4294967295) specjalnie i w ogóle nie przyjmują wówczas identyfikatora.

Co ciekawe, exploit zadziała nawet w przypadku, gdy root stanowi wyjątek od uprawnień przez ALL, !root. To dlatego, że sama komenda sudo nominalnie działa na ID 0, a jakby tego było mało, wobec braku w bazie identyfikatorów określonych za pomocą opcji -u, nie zapyta o hasło. Plus jest taki, że błąd został już wyeliminowany. Nie zawierają go sudo 1.8.28 i nowsze.

© dobreprogramy