Вразливість у 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 и Fedora. Вразливість виявлена ​​дослідниками безпеки з Apple.

Джерело: opennet.ru

Додати коментар або відгук