LINUX.ORG.RU
ФорумTalks

Баг в 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



Последнее исправление: Pinkbyte (всего исправлений: 3)

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

Нда… Он совсем идиот.

we are not the folks who came up with the strict rules, we just enforce them in order to keep our unit files universally acceptable

Какое нахрен enforce strict rules, если у тебя при некорректных данных (как ты считаешь, потому что кто-то ещё так решил, ок) происходит совершенно неожиданное — сервис запускается с правами рута, а не написанного юзера. Не ошибку выдаёт, а даёт права суперпользователя. И главное он этого, походу, не понимает вообще. Он не хочет поддерживать имена, начинающиеся с цифры (ок, ну допустим пусть они будут запрещены), но и выдавать ошибку на такое тоже не хочет, потому что думает, что… Не знаю, думать он, похоже, не умеет вообще. Я и раньше-то был невысокого мнения об этом индивиде, но не думал, насколько всё плохо. Можете записывать теперь официально в поттерингохейтеры.

Psych218 ★★★★★
()

Например, в утилитах из состава shadow-utils применяется ограничение «[a-z_][a-z0-9_-]*[$]»

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

ldap? - не, не слышал!

Вот интересно они тестируют это всё с pam_ldap и т.п.?

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

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

WoW! Это такое логичное поведение! Я вот не понимаю, сейчас всех что ли учат так програмить? Давайте игнорить любую ошибку в конфигах и просто шпарить все от рута с дефолтными настройками! А че? Нормально!

crypt ★★★★★
()

Человек со знаниями кодинга и привилегиями пушить код, но без здорового критического восприятия опасен, как обезъяна с гранатой.

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

Poettering> Yes, as you found out «0day» is not a valid username. I wonder which tool permitted you to create it in the first place.

witch ~ # useradd -r 0day
witch ~ # useradd -r 0day
useradd: user '0day' already exists
witch ~ # userdel -f 0day

Я же говорил. Поттеринг реально не шарит. Он, как маковод, спрашивает: «а какооой программмооой это дееелать???» Да на любом хакнутом сервере это сделают прямы редактированием файлов!

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

Так Лёня известный мастер неочевидного поведения и альтернативных (здравому смыслу) решений

ya-betmen ★★★★★
()
Ответ на: комментарий от torvn77

Я там читал по ссылки, чтобы понять, как это ему пришло в голову.

Поттеринг> In systemd we generally follow the rule that when we encounter a unit setting that does not validate syntax-wise we'll log about it and ignore it, for compat reasons.

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

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

Можете записывать теперь официально в поттерингохейтеры.

Только этим горю не помочь, надо ещё и в -филы чего подходящего записаться.

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

Еще прикол по ссылке на git hub:

 mbiebl locked and limited conversation to collaborators 2 days ago
  poettering deleted a comment from jrmithdobbs 2 days ago
  poettering deleted a comment from sergeyfrolov 2 days ago

Видать, ему уже кто-то что-то написал=)))

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

poettering deleted a comment

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

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

Как такому человеку удается вести OpenSource разработку в своем направлении? Вот чего я не пойму. Может, он просто единственный, кто предложил рабочий код? Или что вообще?

crypt ★★★★★
()

Почитал комменты по ссылке.

Оно фейлит старт с отсутствующим пользователем, и запускать от рута при провале валидации? Кто-нибудь уже проверял?

Что-то это нифига не предсказуемое поведение.

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

Как такому человеку удается вести OpenSource разработку в своем направлении?

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

Deleted
()

Если это имя невалидно, нахрена использовать его часть и интерпретировать по-своему?
Если имена, начинающиеся на цифру МОГУТ быть допустимы в системе, но запрошенного юзера нет, нахрена использовать его часть и интерпретировать как UID?

Он упоролся? Да дропать нужно такой файл, Геральд!

Ну и удаление комментариев порадовало, конечно. Это при том, что там ни оскорблений ни тупняка не было.

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

Ну и удаление комментариев порадовало, конечно. Это при том, что там ни оскорблений

Оскорбительное (на взгляд Поттеринга, а на мой вполне справедливое) высказывание в адрес проекта:

jrmithdobbs commented 2 days ago

Typical systemd response: Ignore decades of precedent and blame the user for expecting sane results.

ни тупняка не было.

Очевидный тупняк:

sergeyfrolov commented 2 days ago

Coming soon:
Issue "systemd can't handle the process privilege of usernames, which have 0 in them, such as root0" is rejected as 'not-a-bug'
crypt ★★★★★
()
Последнее исправление: crypt (всего исправлений: 2)
Ответ на: комментарий от NextGenenration

Потому что необычность мышления Поттеринга и его своеобразное отношение к багам давно уже ни для кого не новость:)

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

Разве если бы это было офрмленно как новость, то сюда бы не зашло больше людей? И устроили бы более бурный срач?

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

Да на любом хакнутом сервере это сделают прямы редактированием файлов

Это в смысле хакеры, используя права рута, отредактируют файлы так, чтобы получить потом права рута?

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

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

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

Да на любом хакнутом сервере это сделают прямы редактированием файлов!

Кто сделает? Это скорее блестящая возможность прострелить себе ногу, чем легко эксплуатируемая уязвимость.

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

Я хотел сказать, что «хакеры», т.е. те, кто реально используют и знают ОС, могут это сделать, а Поттеринг не обладает знанием ОС.

Это скорее блестящая возможность прострелить себе ногу

Да ладно! Чего там делать-то? Мне случается править вручную. Никаких проблем уже много лет.

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

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

К сожалению, в интернете полно негативных отзывов именно от тех, кто давно и часто профессионально имеет дело с Linux. А вот на диване, похоже, ты сидишь.

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

К чему это вообще? Посмотрите, с чего начался разговор

Deleted
()

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

VolleyFire
()

Тем временем драма не закончилась, и на «not-a-bug» выдали идентификатор уязвимости CVE-2017-1000082.

Deleted
()

Ну вот обострение у «творца».

psv1967 ★★★★★
()

Станно, что никто еще не написал новость про релиз systemd 234. По поводу сабжа:

Что касается проблемы, приводящей к выполнению сервисов с правами пользователя root, если в параметрах запуска указано имя пользователя, начинающееся с цифры, ранее закрытой без исправления, то она получила идентификатор CVE-2017-1000082 и рассматривается дистрибутивами как уязвимость (Debian, Red Hat, Fedora, SUSE). Для включения в systemd было предложено исправление, блокирующее загрузку unit-ов с некорректными именами пользователей. Леннарт Поттеринг в целом одобрил данный патч, но выразил сомнение в целесообразности его распространения на опции «PrivateTmp=», «PrivateNetwork=», «PrivateUsers=», предназначенные для работы в изолированных окружениях. В итоге Леннарт Поттеринг признал проблему и патч был включён в состав выпуска systemd 234.

https://www.opennet.ru/opennews/art.shtml?num=46843

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