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)

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

Кто сделает?

Локальный рут. :D

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

Ага, чтобы эту уязвимость проэксплуатировать, надо сначала получить локального рута.

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

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

А вот тут дело не в хейтерстве. А в том, что можно использовать эту особенность злонамеренно - «root» и «&#032root»

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

А сколько таких не нашли? А если найдут, но не «добрые люди» сообщества...

Не надо увлекаться кодингом идеи(к стати у systemd вполне здравая идея), надо делать качественно, пусть и медленно, и, самое главное, не вносить лишних сущностей. Как любят тут термин «не UNIX-вейно». Просто, но качественно. Это залог стабильности и надёжности.

З.Ы. мне ещё в школе на 2м курсе вдолбили - самый надёжный инструмент - лом, т.к. он состоит из одной детали, её надёжностью и ограничивается. Топор/молоток - менее надёжны, т.к., минимум, состоят из рукояти и рабочего тела(уже из металла, а не пластика/дерева).

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

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

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

В довесок

Только комбайн не надо было делать монолитным. А использовать более менее структурированный подход. А то в этих юнитах, особенно на нижнем уровне чёрт ногу сломит.

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

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

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

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

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