PDA

Просмотр полной версии : Уязвимость в systemd, потенциально позволяющая повысить свои привилегии


Suicide
09.02.2020, 20:32
В системном менеджере systemd выявлена (https://www.openwall.com/lists/oss-security/2020/02/05/1) уязвимость (CVE-2020-1712 (https://security-tracker.debian.org/tracker/CVE-2020-1712)), которая потенциально позволяет добиться выполнения своего кода с повышенными привилегиями через отправку специально оформленного запроса по шине DBus. Проблема исправлена в тестовом выпуске systemd 245-rc1 (https://github.com/systemd/systemd/commit/ea0d0ede03c6f18dbc5036c5e9cccf97e415ccc2) (решающие проблему патчи: 1 (https://github.com/systemd/systemd/commit/1068447e6954dc6ce52f099ed174c442cb89ed54), 2 (https://github.com/systemd/systemd/commit/637486261528e8aa3da9f26a4487dc254f4b7abb), 3 (https://github.com/systemd/systemd/commit/bc130b6858327b382b07b3985cf48e2aa9016b2d)). Уязвимость устранена в дистрибутивах Ubuntu (https://people.canonical.com/~ubuntu-security/cve/CVE-2020-1712), Fedora (https://bugzilla.redhat.com/show_bug.cgi?id=1798414), RHEL (https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2020-1712) (проявляется в RHEL 8, но не затрагивает RHEL 7), CentOS (https://lists.centos.org/pipermail/centos-announce/2020-February/035631.html), SUSE/openSUSE (https://bugzilla.suse.com/show_bug.cgi?id=CVE-2020-1712) и ROSA (https://bugzilla.rosalinux.ru/show_bug.cgi?id=10451), но на момент написания новости остаётся неисправленной в Debian (https://security-tracker.debian.org/tracker/CVE-2020-1712) и Arch Linux (https://security.archlinux.org/CVE-2020-1712).

Уязвимость вызвана обращением к уже освобождённой области памяти (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 (прототип эксплоита пока не продемонстрирован). Код, позволяющий эксплуатировать уязвимость, был добавлен (https://github.com/systemd/systemd/commit/70244d1d25eb80b57e160ea004d0e6bf793d4caf) в systemd-machined в 2015 году в версии systemd 220 (https://www.opennet.ru/opennews/art.shtml?num=42278) (в RHEL 7.x используется systemd 219).

09.02.2020

http://www.opennet.ru/opennews/art.shtml?num=52340​