• XSS.stack #1 – первый литературный журнал от юзеров форума

Критическая уязвимость в sudo, позволяющая получить привилегии root

INC.

REVERSE SIDE OF THE MEDAL
Эксперт
Регистрация
02.02.2008
Сообщения
3 950
Реакции
1 872
Исследователи безопасности из компании Qualys выявили критическую уязвимость (CVE-2021-3156) в утилите sudo, предназначенной для организации выполнения команд от имени других пользователей. Уязвимость позволяет получить доступ с правами root без прохождения аутентификации и без наличия необходимых полномочий. Проблема может быть эксплуатирована любым пользователем, независимо от присутствия в системных группах и наличия записи в файле /etc/sudoers. Для атаки не требуется ввод пароля пользователя, т.е. уязвимость может применяться посторонним для повышения привилегий в системе после компрометации уязвимости в непривилегированном процессе (в том числе запускаемом под пользователем "nobody").

Исследователи продемонстрировали рабочие эксплоиты для получения полных привилегий root в Ubuntu 20.04, Debian 10 и Fedora 33. Не исключается возможность эксплуатации уязвимости и в других операционных системах и дистрибутивах, но проверка исследователями ограничилась Ubuntu, Debian и Fedora. Проблеме подвержены все версии sudo с 1.8.2 по 1.8.31p2 и с 1.9.0 по 1.9.5p1 в конфигурации по умолчанию. Исправление предложено в выпуске sudo 1.9.5p2.

Исследователи заранее уведомили разработчиков дистрибутивов, которые скоординировано уже выпустили обновления пакетов: Debian, RHEL, Fedora, Ubuntu, SUSE/openSUSE, Arch, Slackware, Gentoo, FreeBSD. Для проверки наличия уязвимости в своей системе достаточно запустить команду "sudoedit -s /". Уязвимость присутствует в случае вывода ошибки, начинающейся с "sudoedit:".

Уязвимость проявляется с июля 2011 года и вызвана переполнением буфера при обработке символов экранирования строки в параметрах, предназначенных для запуска команд в режиме shell. Режим shell включается при указании аргументов "-i" или "-s" и приводит к тому, что команда запускается не напрямую, а через дополнительный вызов командной оболочки с флагом "-c" ("sh -c команда"). Суть проблемы в том, что при штатном запуске утилита sudo экранирует специальные символы при указании опций "-i" и "-s", но при запуске утилиты sudoedit экранирования параметров не происходит, так как функция parse_args() выставляет переменную окружения MODE_EDIT вместо MODE_SHELL и не сбрасывает значение "valid_flags".

В свою очередь, передача неэкранированных символов создаёт условия для проявления ещё одной ошибки в обработчике, выполняющем удаление символов экранирования перед сверкой c правилами sudoers. Обработчик некорректно разбирает присутствие неэкранированного символа обратного слеша в конце строки, считает что данный обратный слеш экранирует ещё один символ и продолжает чтение данных, находящихся за границей строки, копируя их в буфер "user_args" и перезаписывая области памяти за границей данного буфера. Например, для вызова переполнения можно выполнить:

Код:
sudoedit -s '\' `perl -e 'print "A" x 65536'`

Манипулируя значениями в командной строке sudoedit можно добиться наложения перезаписываемого хвоста на данные, влияющие на дальнейший ход работы. Создание эксплоита упрощает то, что атакующий полностью контролирует размер буфера user_args, который соответствует размеру всех переданных аргументов, а также через переменные окружения контролирует размер и содержимое данных, записываемых за границу буфера. Исследователям удалось подготовить три эксплоита, работа которых строится на перезаписи содержимого структур sudo_hook_entry, service_user и def_timestampdir:

* При переопределении sudo_hook_entry удалось запустить бинарный файл с именем "SYSTEMD_BYPASS_USERDB" с правами root.

* При переопределении service_user удалось выполнить произвольный код с правами root.

* При переопределении def_timestampdir удалось добиться сброса содержимого стека sudo, включая переменные окружения, в файл /etc/passwd, и добиться подстановки пользователя с правами root.


• Source: https://blog.qualys.com/vulnerabili...p-based-buffer-overflow-in-sudo-baron-samedit

• Source: https://www.qualys.com/2021/01/26/cve-2021-3156/baron-samedit-heap-based-overflow-sudo.txt

 
Специалисты компании Qualys обнаружили в sudo уязвимость CVE-2021-3156, получившую название Baron Samedit. Баг затрагивает большинство дистрибутивов Linux и может использоваться для получения root-доступа. В настоящее время уязвимость уже исправлена в sudo версии 1.9.5p2, кроме того, исследователи заранее предупредили о проблеме и разработчиков дистрибутивов, так что для большинства из них уже доступны патчи.

В своем отчете эксперты рассказывают, что уязвимость может использоваться злоумышленником, который, к примеру, уже имеет доступ к низко привилегированной учетной записи, для получения root-доступа. При этом учетная запись может даже отсутствовать в файле конфигурации /etc/sudoers , который определяет, каким пользователям разрешен доступ к командам su или sudo. Демонстрацию эксплуатации бага можно увидеть ниже.


Интересно и то, что, по данным Qualys, баг появился в коде sudo еще в июле 2011 года и присутствует во всех версиях утилиты, выпущенных за последние десять лет. Так, экспертам удалось создать и проверить эксплоиты для этой уязвимости под Ubuntu 20.04 (sudo 1.8.31), Debian 10 (sudo 1.8.27) и Fedora 33 (sudo 1.9.2), хотя также уязвимыми могут быть другие ОС и дистрибутивы.

В отличие от других багов в sudo, найденных в последние годы (например, CVE-2019-14287 и CVE-2019-18634), Baron Samedit вполне может применяться в реальной жизни, так как не требует каких-либо необычных и сложных настроек sudo.

Источник: xakep.ru/2021/01/27/baron-samedit/
 
На прошлой неделе специалисты компании Qualys обнародовали информацию о проблеме в sudo, которой был присвоен идентификатор CVE-2021-3156 и название Baron Samedit. Тогда сообщалось, что баг, связанный с переполнением хипа, затрагивает большинство дистрибутивов Linux и может использоваться злоумышленником (уже имеющим хотя бы низкопривилегированный доступ к системе) для получения root-доступа.

Однако эксперты Qualys тестировали проблему только на Ubuntu, Debian и Fedora, а также писали об опасности для UNIX-систем. Теперь же ИБ-специалист и глава Hacker House Мэттью Хики (Matthew Hickey) сообщил в Twitter, что уязвимости Baron Samedit подвержена и macOS (в том числе самых последних версий), которая тоже укомплектована sudo.

Хики пишет, что в операционной системе Apple эксплуатировать CVE-2021-3156 можно с некоторыми изменениями, но баг точно так же может использоваться для получения root-доступа.


«Чтобы спровоцировать ошибку, вам просто нужно перезаписать argv[0] или создать символическую ссылку, которая подвергнет ОС той же локальной root-уязвимости, от которой на прошлой неделе страдали пользователи Linux», — объясняет эксперт.

Выводы Хики уже подтвердили такие известные ИБ-эксперты, как Патрик Уордл (Patrick Wardle, один из ведущих специалистов в мире по безопасности macOS) и Уилл Дорманн (Will Dormann, эксперт CERT в Университете Карнеги-Меллона).


Патча для macOS пока нет, но разработчикам Apple уже сообщили о баге, и они уже расследуют сообщения экспертов.

Источник: xakep.ru/2021/02/03/baron-samedit-macos/
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх