В приложении userhelper и библиотеке libuser, поставляемым по умолчанию в дистрибутивах, основанных на пакетной базе Red Hat, выявлена серия уязвимостей (CVE-2015-3245, CVE-2015-3246), позволяющих выполнить код с привилегиями пользователя root. Для демонстрации проблемы приводится рабочий эксплоит, применяемый к приложениям, использующим libuser для манипуляций с учётными записями пользователей.

Первая уязвимость присутствует в программе userhelper. Программа предназначена для смены информации о пользователе и примечательна тем, что поставляется с установленным флагом setuid-root. Уязвимость вызвана тем, что при разборе передаваемых опций не осуществляется проверка на наличие символа перевода строки ('\\n'), что позволяет атакующим передать данные, добавление которых в файл /etc/passwd приведёт к появлению новой строки. Так как указание символа ":" запрещено, имеется возможность добавить только неотформатированные строковые данные, что может быть использовано для осуществления DoS-атаки.

Вторая уязвимость присутствует в библиотеке libuser и вызвана особенностью работы с файлом /etc/passwd. В отличие от классических утилит passwd, chfn и chsh которые вначале создают временный файл с копией /etc/passwd, модифицируют его и заменяют основной файл, в libuser применяется прямая модификация /etc/passwd. Если в ходе манипуляций с /etc/passwd произойдёт ошибка, файл может остаться в некорректном виде. Путём определённых манипуляций, в сочетании с первой уязвимостью, можно добиться очистки записи для пользователя root ("\\na::0:0::/:\\n") или осуществить подмену поля с shell и домашней директорией, что даёт возможность организовать выполнение кода с правами root.

Дополнительно можно упомянуть выявление уязвимости (CVE-2015-3290) в коде работы с NMI в ядре Linux, позволяющей инициировать крах ядра или выполнить код с правами root. Сообщается, что для уязвимости уже имеется готовый эксплоит, который будет опубликован только через одну-две недели, чтобы дать пользователям время обновить свои системы. Проблема проявляется на системах с архитектурой x86_64 при использовании ядра Linux 3.13 и более новых версий.

Источник: http://www.opennet.ru/opennews/art.shtml?num=42657