В systemd-journald выявлены три уязвимости, позволяющие получить права root

В кoмпoнeнтe systemd-journald, oтвeчaющeм зa вeдeниe лoгoв в systemd, выявлeны три уязвимoсти, пoзвoляющиe нeпривилeгирoвaннoму aтaкующeму пoвысить свoи привилeгии в систeмe и выпoлнить кoд с прaвaми root. Уязвимoсти прoявляются вo всex дистрибутивax, использующих systemd, из-за исключением SUSE Linux Enterprise 15, openSUSE Leap 15.0 и Fedora 28/29, компоненты systemd в которых собраны с включением в GCC защиты "-fstack-clash-protection". Уязвимости CVE-2018-16864 и CVE-2018-16865 позволяют реализовать условия для записи данных кроме границ выделенного блока памяти, а слабость CVE-2018-16866 даёт возможность прочитать предмет внешних областей памяти. Работа эксплоита проверена в Debian 9.5. Присутствие написании эксплоита использована техника Stack Сlash, квинтэссенция которой в создании условий когда содержание переполненной кучи оказывается в области стека иначе, наоборот, стек может переписать земля кучи, что проявляется в ситуациях, другой раз стек и куча размещаются смежно и прилегают кореш к другу (область стека следует (одним за памятью, выделенную под кучу). Советуемый эксплоит подтверждает предположение, что защиты через атак класса Stack Сlash в уровне ядра Linux недостаточно. Близ этом атака успешно блокируется возле пересборке в GCC с включенной опцией "-fstack-clash-protection". Слабость CVE-2018-16864 была обнаружена после разбора ситуации, часом передача приложениям, сохраняющим данные в балка через вызов syslog(), большого числа аргументов командной строки (малую толику мегабайт) приводит к краху процесса systemd-journald. Рассмотрение показал, что манипулируя строкой с аргументами командной строки позволено осуществить управляемое наложение хвоста кучи получи начало стека, но для успешной атаки нужно обойти применяемую в ядре технику защиты "stack guard-page", середыш которой в подстановке граничных страниц памяти, напоминание к которым приводит к генерации исключения (page-fault). Угоду кому) обхода данной защиты из разом выполняемого потока systemd-journald было инициировано кома гонки (race condition), позволяющее уложиться в срок захватить управление до краха процесса с-за записи в страницу памяти, доступную просто-напросто для чтения. В процессе изучения первой уязвимости всплыли до сей поры две проблемы. Вторая уязвимость CVE-2018-16865 позволяет разработать похожие условия наложения стека и кучи помощью запись очень большого сообщения в обложка /run/systemd/journal/socket. Третья небезупречность CVE-2018-16866 проявляется если отправить syslog-письмо c последним символом ":". Из-ради ошибки разбора строки следующий из-за ним символ конца строки '\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 устранены одну крош часов назад в master-ветке systemd. Небезупречность CVE-2018-16866 появилась в июне 2015 возраст (systemd 221) и устранена в августе 2018 лета (не проявляется в systemd 240). Печатание рабочего эксплоита отложена до выпуска исправлений дистрибутивами. В истый момент в дистрибутивах уязвимости пока остаются неисправленными (Debian, Ubuntu, RHEL, Fedora, SUSE).