Linux-администратор и основатель сервиса SSLMate Эндрю Эйер (Andrew Ayer) опубликовал в своём блоге заметку, как с помощью консольной команды из 48 символов привести systemd в нерабочее состояние.
Эндрю обнаружил «поразительно банальный баг» в init-системе systemd, появившийся там более двух лет назад (в версии systemd 209). Если через systemd-notify отправить пустое (из 0 символов) сообщение в UNIX-сокет /run/systemd/notify, доступный для всех пользователей, то systemd получит сообщение и не сможет выполнить проверку на его длину. Результат — прав любого локального Linux-пользователя достаточно для отказа от обслуживания критичного системного сервиса.
Некоторые энтузиасты отмечают, что для реализации задуманного им потребовалось обернуть её в бесконечный цикл (while true). Уязвимость уже устранена (#4234 в GitHub) — пропатченная версия пакета systemd для Debian, например, получила версию 231-9, но пока имеет статус нестабильной.
Дэвид Тимоти Штраусс (David Timothy Strauss), технический директор Pantheon, отметил, что критика Эйера является преувеличенной, а описанная им уязвимость — «незначительная проблема в безопасности». По его уверениям, эта ошибка не «рушит» systemd, а приводит её в «нестабильное состояние»: «Некоторые службы, которые пытаются обратиться к systemd, в ответ получат таймаут в течение 30 секунд (по умолчанию), если systemd недоступна».
Рич Фелкер (Rich Felker), автор Linux-библиотеки musl, отмечает, что обнаруженная проблема не столько проблема безопасности, сколько тревожный звонок для нераздельной архитектуры systemd: «Systemd не создана для того, чтобы её разбивали на меньшие части, которые могут безопасно падать и восстанавливаться — ни с точки зрения безопасности, ни с точки зрения надёжности. У вас один большой монолитный процесс: если какой-то его компонент ломается, рушится всё остальное. Это большая проблема в архитектуре, на которую Эйер пролил свет. Это не большая уязвимость в безопасности, а брешь в архитектуре системной разработки».
Российская компания «Флант» представила pam_docker — модуль для PAM, позволяющий «помещать» пользователей (и группы) хостовой Linux-машины внутрь контейнеров Docker.
Созданный PAM-модуль призван упростить аутентификацию пользователей хост-системы внутри Docker-контейнеров для системных служб и серверов (su/sudo, cron, SSH, FTP и т.п.). Использовать pam_docker можно, в частности, для простой выдачи SSH-доступа в Docker-контейнеры, однако сами разработчики сообщают, что модуль является больше исследовательским — реализация позволяет улучшить понимание, как на практике работает Docker. Подробнее с устройством модуля можно познакомиться, посмотрев видео с доклада «Проникновение в Docker с примерами», представленного этим летом на встрече meetup-группы Docker Moscow в Badoo.
Исходный код pam_docker написан на языке Си, распространяется на условиях свободной лицензии GNU GPLv3, доступен для скачивания вместе с документацией на GitHub. Там же можно найти информацию о пакетах для Debian/Ubuntu и CentOS, инструкции для тестового запуска модуля через Vagrant.