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

Статья PwnKit (CVE 2021-4034)

yashechka

Генератор контента.Фанат Ильфака и Рикардо Нарвахи
Эксперт
Регистрация
24.11.2012
Сообщения
2 344
Реакции
3 563
Введение

Команда Qualys обнаружила уязвимость локального повышения привилегий в инструменте pkexec setuid в PolicyKit (polkit) (https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-4034) , который позволяет пользователям с низкими привилегиями запускать команды в качестве привилегированных пользователей. Согласно Qualys, уязвимость существует в коде pkexec.c, который неправильно обрабатывает подсчет параметров вызова и завершает попытку выполнить переменные среды как команды. Таким образом, злоумышленник может создать переменные среды таким образом, что это побудит pkexec выполнить произвольный код. В этой демке мы используем старую уязвимую Ubuntu 20.04, которую можно загрузить со страницы старых выпусков Ubuntu. Более новые выпуски уже поставляются с исправленной структурой polkit. Пост от Mitre можно найти здесь ( https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-4034).

Полкит и pkexec

Polkit и pkexec:
PolicyKit также известен как polkit в системах Linux. Это API-интерфейс авторизации, используемый программами для повышения своих разрешений до прав пользователя с повышенными правами и запуска процессов от имени пользователя с повышенными правами (как правило, root). Если пользователь не указан, он пытается запустить эту команду от имени пользователя root. Sudo делает то же самое, позволяя пользователю запускать команды от имени пользователя root, однако с помощью pkexec администраторы могут точно контролировать выполнение определенных программ, определяя для него политики. Sudo не имеет ограничений, и пользователь может выполнить любую команду от имени пользователя с повышенными правами, если он знает пароль. Pkexec также требует некоторых усилий при настройке, но варианты Debian, включая популярную Ubuntu, поставляются с предустановленными polkit и pkexec. Эти правила авторизации для сторонних пакетов определены в файлах JavaScript *.rules, хранящихся в каталоге /usr/share/polkit-1/rules.d/

Вы можете прочитать больше о polkit и основах здесь (https://www.hackingarticles.in/linux-privilege-escalation-polkit-cve-2021-3560/).

Подробности о PwnKit

Код Pkexec можно посмотреть на github здесь (https://github.com/wingo/polkit/blob/master/src/programs/pkexec.c). В основной функции вы можете увидеть два передаваемых параметра, argc и argv[].

1645430998717.png


Если мы не передаем никаких аргументов этой функции, argc = 0 и argv = NULL. В цикле for n теперь установлено 1, и цикл не выполняется, так как условие не выполняется.

1645431009986.png


Когда программа выполняется, аргументы, переменные окружения и указатели размещаются в стеке непрерывно. Переменная пути имеет значение NULL. Это делает argv[argc] равным Null, и, наконец, argv[n] становится argv[1] (при n=11), который становится envp[] или переменной окружения. Автор называет это "value ". (Вы можете обратиться к исходному сообщению, чтобы понять все глубже)

1645431022035.png


Поскольку путь равен NULL, он не начинается с "/" (указывающего абсолютный путь), и, следовательно, функция g_find_program_in_path ищет значение в переменных среды.

1645431036609.png


Переменная s, наконец, устанавливает на эту переменную среды "value ".

1645431047540.png


Вектор атаки: Злоумышленник может создать переменную среды и использовать этот метод повреждения памяти для запуска своего собственного исполняемого файла с именем "value". Следовательно, злоумышленник может использовать уже существующие методы повышения привилегий переменных среды, чтобы использовать это.

Демонстрация

Доказательство концепции этой уязвимости было загружено на github, и его можно найти здесь (https://github.com/berdav/CVE-2021-4034) . Чтобы запустить атаку, нам просто нужно клонировать репозиторий, создать исполняемый файл и запустить его. Программа будет использовать эту уязвимость, связанную с повреждением памяти, как описано выше.

cd /tmp
git clone https://github.com/berdav/CVE-2021-4034 pwnkit
make
./cve-2021-4034
whoami
cat /etc/passwd

1645431107484.png


Всего двумя командами мы воспользовались уязвимостью pkexec и получили root-права!

Защита

- Уязвимость уже исправлена соответствующими производителями. В Ubuntu 20.04 policykit-1 — версия 0.105-26ubuntu1.2 устраняет эту ошибку.
- Если для вашей операционной системы нет доступных исправлений, вы можете удалить бит SUID из pkexec в качестве временной меры.

chmod 07555 /usr/bin/pkexec

Вывод


Все необновленные старые версии разновидностей Debian и разновидностей Red Hat подвержены этой атаке, что делает ее серьезным риском для организации. Простота эксплуатации этой атаки делает ее еще более опасной. Настоятельно рекомендуется, чтобы системные администраторы обновили свои установленные пакеты polkit уже сегодня. Спасибо за чтение.


Переведено специально для xss.pro
Автор перевода: yashechka
Источник: https://www.hackingarticles.in/linux-privilege-escalation-pwnkit-cve-2021-4034/
 


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