Спорная ошибка в systemd, позволяющая повысить привилегии, закрыта без исправления
В systemd выявлена ошибка, приводящая к выполнению сервисов с правами другого пользвователя, если в параметрах запуска указано имя пользователя, начинающееся с цифры. Например, если в сервисе указан "User=0day" и пользователь 0day присутствует в системе, то сервис будет запущен с идентификатором 0, т. е. с правами root. Леннарт Поттеринг отказался исправлять ошибку и закрыл уведомление с меткой "not-a-bug".
Позиция Поттеринга: В Linux исторически не разрешено использовать имена пользователей, начинающиеся с цифры, которые считаются некорректными. Например, в утилитах из состава shadow-utils применяется ограничение "[a-z_][a-z0-9_-]*[$]". Подобное ограничение принято, чтобы избежать путаницы между передачей UID и имени пользователя в качестве аргументов типовых утилит. В systemd если имя начинается с цифры, то цифровая часть воспринимается как цифровой идентификатор пользователя (UID), поэтому имя 0day будет обработано как UID 0.
Аргументы сторонников исправления подобного поведения: Стандарт POSIX/IEEE Std 1003.1-2001 не накладывает ограничений по использованию цифр в именах пользователей и требует в ситуациях когда допускается обработка и имени и UID вначале проверять на наличие пользователя, и если он отсутствует воспринимать цифровой идентификатор как UID. В утилитах GNU рекомендуется выделять цифровые идентификаторы префиксом "+". Начиная с RHEL 7/CentOS 7 штатный инструментарий позволяет создавать и использовать пользователей, имена которых начинаются с цифры.
Кроме того, даже если systemd воспринимает имя некорректным, следует вывести ошибку, а не запускать сервис под другим пользователем. Тем более, что запуск осуществляется только если данный пользователь заведен в системе, а если пользователь не создан, то будет выведена ошибка. Некоторые рассматривают проблему как уязвимость, так как если кто-то убедит администратора хоста установить вредоносное ПО под именем пользователя, начинающегося с нуля, и настроить запуск сервиса systemd от этого пользователя, то данное ПО будет выполнено с правами root.