Уразлівасць у sudo, якая дазваляе падвысіць прывілеі пры выкарыстанні спецыфічных правіл

Ва ўтыліце судо, якая выкарыстоўваецца для арганізацыі выканання каманд ад імя іншых карыстальнікаў, выяўлена уразлівасць (CVE-2019-14287), якая дазваляе дамагчыся выкананні каманд з правамі root, пры наяўнасці ў наладах sudoers правіл, у якіх у секцыі праверкі ідэнтыфікатара карыстача пасля які дазваляе ключавога слова «ALL» варта відавочная забарона запуску з правамі root («… (ALL, !root) …» ). У канфігурацыях па змаўчанні ў дыстрыбутывах уразлівасць не выяўляецца.

Пры наяўнасці ў sudoers дапушчальных, але вельмі рэдка сустракаемых на практыку кіраваў, дазваляльных выкананне вызначанай каманды пад UID-ідэнтыфікатарам любога карыстача, акрамя root, атакавалы, мелы паўнамоцтвы выканання дадзенай каманды, можа абыйсці ўсталяванае абмежаванне і выканаць каманду з правамі root. Для абыходу абмежавання дастаткова паспрабаваць выканаць паказаную ў наладах каманду з UID «-1» або «4294967295», што прывядзе да яе выканання з UID 0.

Напрыклад, калі ў наладах маецца правіла, якое дае любому карыстачу права на выкананне праграмы /usr/bin/id пад любым UID:

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

або варыянт, які дазваляе выкананне толькі канкрэтнаму карыстальніку bob:

myhost bob = (ALL, !root) /usr/bin/id

Карыстальнік можа выканаць "sudo -u '#-1' id" і ўтыліта /usr/bin/id будзе запушчана з правамі root, нягледзячы на ​​відавочную забарону ў наладах. Праблема выкліканая недаглядам з увагі спецзначэнняў "-1" ці "4294967295", якія не прыводзяць да змены UID, але бо сам sudo ужо выконваецца пад root, то без змены UID і мэтавая каманда таксама запускаецца з правамі root.

У дыстрыбутывах SUSE і openSUSE без указання ў правіле "NOPASSWD" уразлівасць не эксплуатуецца, бо ў sudoers па змаўчанні ўключаны рэжым "Defaults targetpw" пры якім выконваецца праверка UID па базе пароляў з высновай запыту ўводу пароля мэтавага карыстача. Для падобных сістэм напад можа быць здзейснена толькі пры наяўнасці правіл выгляду:

myhost ALL = (ALL, !root) NOPASSWD: /usr/bin/id

Праблема ўхіленая ў выпуску Sudo 1.8.28. Выпраўленне таксама даступна ў форме патча. У дыстрыбутывах уразлівасць ужо ўхіленая ў Debian, Arch Linux, SUSE/openSUSE, Ubuntu, Gentoo и FreeBSD. На момант напісання навіны праблема застаецца нявыпраўленай у RHEL и Мяккая фетравы капялюш. Уразлівасць выяўлена даследнікамі бяспекі з кампаніі Apple.

Крыніца: opennet.ru

Дадаць каментар