Вразливість у systemd, що потенційно дозволяє підвищити свої привілеї

У системному менеджері systemd виявлено вразливість (CVE-2020-1712), яка потенційно дозволяє досягти виконання свого коду з підвищеними привілеями через відправлення спеціально оформленого запиту по шині DBus. Проблема виправлена ​​у тестовому випуску systemd 245-rc1 (вирішують проблему патчі: 1, 2, 3). Уразливість усунена у дистрибутивах Ubuntu, Fedora, RHEL (проявляється в RHEL 8, але не торкається RHEL 7), CentOS и SUSE/openSUSE, але на момент написання новини залишається невиправленою в Debian и Arch Linux.

Уязвимость вызвана обращением к уже освобождённой области памяти (use-after-free), возникающем при асинхронном выполнении запросов к Polkit во время обработки DBus-сообщений. Некоторые DBus-интерфейсы используют кэш для хранения объектов на короткое время и очищают элементы кэша как только шина DBus освободится для обработки других запросов. Если обработчик DBus-метода использует bus_verify_polkit_async(), ему возможно потребуется ожидать завершения действия в Polkit. После готовности Polkit обработчик вызывается повторно и обращается к уже ранее распределённым в памяти данным. Если запрос к Polkit выполняется слишком долго, то элементы в кэше успевают очистится до того, как обработчик DBus-метода будет вызван второй раз.

З сервісів, що дозволяють експлуатувати вразливість, відзначається systemd-machined, який надає DBus API org.freedesktop.machine1.Image.Clone, що призводить до тимчасового збереження даних у кеші та асинхронного звернення до Polkit. Інтерфейс
org.freedesktop.machine1.Image.Clone доступний всім непривілейованим користувачам системи, які можуть ініціювати крах сервісів systemd або потенційно домогтися виконання коду з правами root (прототип експлоїту поки не продемонстровано). Код, що дозволяє експлуатувати вразливість, був доданий у systemd-machined у 2015 році у версії systemd 220 (RHEL 7.x використовується systemd 219).

Джерело: opennet.ru

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