LINUX.ORG.RU

Баг в systemd это не баг, а исторически сложившаяся фича

 , ,


4

5

В systemd выявлена ошибка, приводящая к выполнению сервисов с правами другого пользователя, если в параметрах запуска указано имя пользователя, начинающееся с цифры. Например, если в сервисе указан «User=0day» и пользователь 0day присутствует в системе, то сервис будет запущен с идентификатором 0, т.е. с правами root. Леннарт Поттеринг отказался исправлять ошибку и закрыл уведомление с меткой «not-a-bug».

Позиция Поттеринга: В Linux исторически не разрешено использовать имена пользователей, начинающиеся с цифры, которые считаются некорректными. Например, в утилитах из состава shadow-utils применяется ограничение «[a-z_][a-z0-9_-]*[$]». Подобное ограничение принято чтобы избежать путаницы между передачей UID и имени пользователя в качестве аргументов типовых утилит. В systemd если имя начинается с цифры, то цифровая часть воспринимается как цифровой идентификатор пользователя (UID), поэтому имя 0day будет обработано как UID 0.

Фактически ситуация такова: systemd выполняет из-под рута команды при очевидно некорректных входных данных.

Натабуго-пруф: https://github.com/systemd/systemd/issues/6237

IMHO надеяться, что данные будут правильными потому что так принято, как-то беспомощно оптимистично...

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

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

MimisGotAPlan ()

Фактически ситуация такова: systemd выполняет из-под рута команды при очевидно некорректных входных данных.

Странные у тебя выводы. Хотя я же всего лишь фанбой, да да да.

Двачую лёньку.

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

то на лицо ошибка

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

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

А? Пробел? Забей. Промахнулся.
Вот так и админ может промахнуться и получить жёваный домкрат вместо системы.

MimisGotAPlan ()

А это можно проэксплуатировать?

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

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

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

Сложно — слишком уж много странных звёзд должны встать в нужное положение.
Создать пользователя имя которого начинается с числа (в идеале с нуля), потом уболтать админа создать сервис с чем-то странным, запускающимся от этого пользователя... Но блин, голь и тролль на выдумки хитры.

MimisGotAPlan ()

Systemd — один огромный баг, поэтому багов в нём не может быть принципиально.

h578b1bde ★☆ ()

systemd выполняет из-под рута команды при очевидно некорректных входных данных.

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

karton1 ★★ ()

shadow-utils

А это пилит потеринг или ред хат?

«not-a-bug»

Не понимаю чего ты переживаешь - подобное весьма типично для линукса. Закроют когда жаренный петух клюнет, нормально расслабься и получай удовольствие от игрищ с линуксом.

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

Да тут даже без уязвимости поведение некорректное, Есть юзер 0day, запуск настроен от его имени, а запускается от рута. Необходимо запускать от указанного юзера, либо ругаться, что имя кривое.

ya-betmen ★★★★★ ()

Не баг. Хотя защита от дурака не помешала бы

Sunderland93 ★★★★★ ()
Последнее исправление: Sunderland93 (всего исправлений: 1)

нафыг нужны такие фичи.
Все таки лучше этот юнит не запускать и выкинуть в консоль какой-то варнинг

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

Не баг.

Отрицания фанатиков дырявого ненужнод такие забавные.

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

Хотя я же всего лишь фанбой, да да да.

Поздравляю, ты уже на стадии принятия.

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

Системдэ-хейтеры не видят сарказма. Фейспальм.

batya ()

цифровая часть воспринимается как цифровой идентификатор пользователя (UID), поэтому имя 0day будет обработано как UID 0

Ложь. Имя 0day игнорируется и используется дефолтный UID=0, о чём остаётся запись в логах.

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

о чём остаётся запись в логах.

Решето пишет в логи о том что оно решето? Ну хоть на этом спасибо.

h578b1bde ★☆ ()

Эта дыра – только маленькая иллюстрация, а внутри там, по-видимому, всё написано точно так же – без малейшей мысли о последствиях.

renjumin ★★★ ()

Всем прогрессивным пользователям GNU/Linux прекрасно известно, что Поттеринг всегда прав, а systemd идеален, и если опыт показывает обратное, то усомниться надо не во мнении Поттеринга, а в самом опыте.

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

Минуточку. Допустим, в системе есть пользователь someuser. Есть сервис, который запускает что-то с правами someuser. Потом пользователя someuser удалили, а про сервис забыли. Теперь он будет стартовать от root?

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

Нет. Почитать исходный репорт не дано?

intelfx ★★★★★ ()

Больше валидации богу валидации

Если указанное имя пользователя начинается с цифры, в то время как такие имена недопустимы, то правильным будет не пытаться угадать, что там имелось ввиду, а сообщать об ошибке в конфигурации. Мне казалось, это очевидно.

Все данные конфигурации должны быть провалидированы перед использованием, если существуют невалидные варианты.

cvs-255 ★★★★ ()
Последнее исправление: cvs-255 (всего исправлений: 2)
Ответ на: Больше валидации богу валидации от cvs-255

Так оно и валидируется, и в логе это оказывается. Если опустить всё 4.2 здесь и на опеннете, то претензия к systemd в том, что в случае заведомо невалидного имени пользователя (as opposed to «валидного, но несуществующего») оно не фейлит запуск юнита, а «просто» ругается в лог.

intelfx ★★★★★ ()

Вполне в духе Линукса. Откуда возмущения?

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

а «просто» ругается в лог.

И запускает от рута...

o- ()
Ответ на: комментарий от goingUp

Легко, используя нетиповые утилиты или напрямую вмешиваясь в систему. И Поцеринг это официально разрешает, тем самым официально обеспечивая огроменную уязвимость.

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

Всем пофиг, так как начинать имя пользователя будет злоумышленник.

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

То есть, systemd не в состоянии обработать имя пользователя в общем случае? Офигенно.

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

Офигенная валидация. Найти ошибку в конфиге и при её присутствии выставить компьютер голой жопой для всех. Браво, Поцеринг! Даёшь садо-мазо для всех подряд!

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

Добавил, но он какой-то дохлый этот тег. Зачем он такой вообще нужен?

MimisGotAPlan ()

Если так, то «0day» невозможно принять ни как имя пользователя, ни как UID. Значит, нужно выдавать ошибку. Считаю, что Леннарт не прав.

dimss ★★★★★ ()

Когда уже красношляпа отрядит инженеров для переработки системд от ленькиной гениальности?

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

Когда уже красношляпа отрядит инженеров для переработки системд от ленькиной гениальности?

Там и так по всей видимости целый отдел сидит, systemd для нужд энтерпрайза стабилизирует:

[d_a@work tmp]$ cd systemd-219-30.el7_3.9.src/
[d_a@work systemd-219-30.el7_3.9.src]$ ls -l *.patch | wc -l
423
Четыреста патчей, Карл!

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

Ну так это норма - Поцтеринг поделие свое наговнякаяет, а отряд индусов дописывает что он там накорябал. А потом, когда будет достигнуто минимальное рабочее состояние поделия допиливают патчами уже почти белые люди.

Вот так красношапка и работает.

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

А должно фейлить. Юнит заведомо неправильный. Какой смысл его запускать? Неправильный юнит может какую угодно ерунду наделать

cvs-255 ★★★★ ()
Ответ на: комментарий от MimisGotAPlan

А? Пробел? Забей. Промахнулся.
Вот так и админ может промахнуться и получить жёваный домкрат вместо системы.

Что ты хочешь. Лёнька - это серьёзный бизнес. У них даже логотип есть с шляпой.

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

Это настраиваемый дефолт или хардкодед-дефолт?

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

takino ★★★★ ()
Последнее исправление: takino (всего исправлений: 1)

Рут заводит забагованного юзера с правами рут... Это не баг, это ошибка админа.

Shadow ★★★★★ ()

В systemd если имя начинается с цифры, то цифровая часть воспринимается как цифровой идентификатор пользователя (UID), поэтому имя 0day будет обработано как UID 0.

И эти люди ещё ругаются на PHP! А проверочку то бы добавить не помешало, конечно же.

WARNING ★★★★ ()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)