Обнаружены три уязвимости, позволяющие непривилегированному злоумышленнику повысить свои привилегии в системе. и запустите код от имени root в systemd-journald, который отвечает за вход в systemd.
Уязвимости проявляется во всех дистрибутивах, использующих systemd, За исключением SUSE Linux Enterprise 15, openSUSE Leap 15.0 и Fedora 28/29, в котором компоненты systemd собраны с включением "-fstack-clash-protection".
Что такое уязвимости?
Уязвимости уже зарегистрирован в CVE-2018-16864 y CVE-2018-16865 позволяют создавать условия для записи данных за пределы выделенного блока памяти, в то время как уязвимость CVE-2018-16866 позволяет читать содержимое областей внешней памяти.
Исследователи подготовили рабочий прототип эксплойта. которые, используя уязвимости CVE-2018-16865 и CVE-2018-16866.
Что подробно описано об этих уязвимостях, исследователи Они говорят нам, что это позволяет получить привилегии root примерно через 10 минут атаки на системы с архитектурой i386 и 70 минут на системы amd64.
Этот эксплойт был протестирован на Debian 9.5.
Они также объясняют, что:
Когда написан эксплойт, Используется метод Stack Сlash, суть которого заключается в создании условий, когда содержимое переполненной кучи находится в области стека или, наоборот, стек может перезаписывать область кучи.
Что проявляется в ситуациях, когда стек и куча размещаются рядом друг с другом (область стека сразу следует за памятью, выделенной для кучи).
Предлагаемый эксплойт подтверждает предположение о недостаточности защиты от атак класса Stack Сlash на уровне ядра Linux.
В то же время атака успешно блокируется перестроением GCC с включенной опцией «-fstack-clash-protection».
Об уязвимостях
Уязвимость CVE-2018-16864 была обнаружена после анализа ситуации, когда приложения, сохраняющие данные в журнале, переносятся через вызов syslog (), большое количество аргументов командной строки (несколько мегабайт) приводит к сбою процесса systemd-journald.
Анализ показал, что, манипулируя строкой с аргументами командной строки, управляемая очередь стека может быть помещена в начало стека.
Но для успешной атаки необходимо обойти технику защиты страницы защиты стека, используемую в ядре., суть которого в подмене страниц памяти лимитов. вызвать исключение (ошибка страницы).
Чтобы обойти эту защиту параллельно, systemd-journald запускается в «состоянии гонки».”, Давая время для захвата процесса управления, сворачивающегося из-за записи в страничную память, только для чтения.
В процессе изучения первой уязвимости возникли еще две проблемы.
Вторая уязвимость CVE-2018-16865 позволяет создавать условия наложения Stack Сlash аналогично, написав очень большое сообщение в файл run / systemd / journal / socket.
Третья уязвимость CVE-2018-16866 проявляется, если вы отправляете сообщение системного журнала с последним символом «:».
Из-за ошибки в синтаксическом анализе строки завершающая строка '\ 0' после нее будет отброшена, и запись будет содержать часть буфера за пределами '\ 0', что позволит вам узнать адреса стека и mmap.
- Уязвимость CVE-2018-16864 очевидна с апреля 2013 года (появилась в systemd 203), но пригодна для работы только после перехода на systemd 230 в феврале 2016 года.
- Уязвимость CVE-2018-16865 очевидна с декабря 2011 года (systemd 38) и доступна для работы с апреля 2013 года (systemd 201).
- Проблемы CVE-2018-16864 и CVE-2018-16865 были исправлены несколько часов назад в основной ветке systemd.
Уязвимость CVE-2018-16866 появилась в июне 2015 года (systemd 221) и была исправлена в августе 2018 года (не отображается в systemd 240).
Выпуск работающего эксплойта отложен до выпуска исправлений по дистрибутивам.
В настоящее время наиболее популярные дистрибутивы уязвимостей, такие как Debian, Ubuntu, RHEL, Fedora, SUSE, а также их производные, пока не исправлены.
systemd отстой!
свобода инициализации… ага !!!!