📌Уязвимость в systemd позволяет выполнить код с повышенными правами.
В системном менеджере systemd
выявлена уязвимость (
CVE-2020-1712), которая потенциально позволяет добиться выполнения своего кода с повышенными привилегиями через отправку специально оформленного запроса по шине DBus. Проблема исправлена в тестовом выпуске
systemd 245-rc1 (решающие проблему патчи:
1,
2,
3). Уязвимость устранена в дистрибутивах
Ubuntu,
Fedora,
RHEL (проявляется в RHEL 8, но не затрагивает RHEL 7),
CentOS,
SUSE/openSUSE и
ROSA, но на момент написания новости остаётся неисправленной в
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. Интерфейс org.freedesktop.machine1.Image.Clone доступен всем непривилегированным пользователям системы, которые могут инициировать сбой в работе systemd или потенциально добиться выполнения кода с правами суперпользователя.