2014-02-10

Архитектурные проблемы systemd, негативно влияющие на стабильность и безопасность

Рич Фелкер (Rich Felker), автор системной библиотеки musl, участник проекта Openwall и член группы Austin Group, развивающей и поддерживающей стандарты POSIX, опубликовал заметку "Broken by design: systemd" с критикой systemd. По мнению Фелкера, архитектура systemd изначально является ущербной из-за интеграции в init-процесс сторонних функций, непосредственно не связанных с процессом загрузки. Подобное нагромождение негативно сказывается на надёжности и безопасности.
Фелкер выделяет три основные архитектурные проблемы systemd:
  • В Unix-системах PID 1 имеет специальное назначение, в частности, PID 1 становится родителем для осиротевших процессов и поддерживает специальную семантику сигналов. В случае краха обработчика PID 1, происходит крах всей системы (kernel panic). Традиционные системы инициализации минимизируют размер кода и число функций обработчика PID 1, в то время как systemd выносит на уровень PID 1 серию демонов, реализующих вторичные функции, что приводит к общему снижению надёжности. Если традиционный init-процесс занимается лишь обработкой сигнала SIGCHLD от осиротевших процессов и реагирует на смену администратором текущего уровня запуска (runlevel), то systemd дополнительно занимается такими вещами, как управление подключением и отключением устройств, изменением точек монтирования, слежение за состоянием элементов в ФС и даже обработка запросов через DBus API.
  • В защищённой системе без systemd, обычно присутствует только один привилегированный процесс, критичный для проведения атаки, - sshd. Все остальные компоненты управляются и получают входные данные только от пользователя root. В случае systemd присутствуют каналы взаимодействия с непривилегированным пользователем. Реализация расширенных функций в systemd приводит к необходимости выполнения на привилегированном уровне лишнего кода по выделению ресурсов, обработки файлов, разбору сообщений и обработке строковых данных, что увеличивает риск возникновения уязвимостей, которые могут быть эксплуатированы непривилегированным пользователем.
  • Вынос на уровень системы инициализации дополнительных функций приводит к необходимости перезагрузки системы при установке обновлений компонентов systemd, обеспечивающих работу PID 1. 

source1
source2

Комментариев нет:

Отправить комментарий