URL: https://www.opennet.dev/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 111645
[ Назад ]

Исходное сообщение
"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."

Отправлено opennews , 02-Июл-17 21:18 
В systemd выявлена (https://github.com/systemd/systemd/issues/6237) ошибка, приводящая к выполнению сервисов с правами другого пользвователя, если в параметрах запуска указано имя пользователя, начинающееся с цифры. Например, если в сервисе указан "User=0day" и пользователь 0day присутствует в системе, то сервис будет запущен с идентификатором 0, т.е. с правами root. Леннарт Поттеринг отказался исправлять ошибку и закрыл (https://github.com/systemd/systemd/issues/6237#event-1143774643) уведомление с меткой "not-a-bug".

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

Аргументы сторонников исправления подобного поведения: Фактически ограничение на использование цифр в именах в современных реалиях повсеместно не применяется, например, начиная с RHEL 7/CentOS 7 штатный инструментарий дистрибутива позволяет создавать и использовать пользователей, имена которых начинаются с цифры. Стандарт POSIX/IEEE Std 1003.1-2001 не накладывает ограничений по использованию цифр в именах пользователей, а в ситуациях когда допускается обработка и имени и UID требует вначале проверять наличие имени пользователя, и если оно отсутствует воспринимать цифровой идентификатор как UID. В утилитах GNU рекомендуется явно выделять цифровые идентификаторы префиксом "+".

Кроме того, даже если systemd воспринимает имя некорректным, следует вывести ошибку, а не молча запускать сервис под другим пользователем. Некоторые рассматривают проблему как уязвимость, так как если кто-то убедит администратора хоста установить вредоносное ПО под именем пользователя, начинающегося с нуля, и настроить запуск сервиса systemd от этого пользователя, то данное ПО будет выполнено с правами root, а не того непривилегированного пользователя, под которым ожидает выполнения администратор.


URL: https://ma.ttias.be/giving-perspective-systemds-usernames-st.../
Новость: https://www.opennet.dev/opennews/art.shtml?num=46798


Содержание

Сообщения в этом обсуждении
"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено A.Stahl , 02-Июл-17 21:18 
>Позиция Поттеринга:

Весьма странная. Очевидно же что 0day это не 0. Очевидно, что что-то происходит не так. Нельзя выполнять что попало от имени рута при заведомо(!) некорректных входных данных. Пните его там -- он явно ещё не проснулся.


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 02-Июл-17 21:38 
Я так понял, он имеет ввиду то, что такое имя при корректной работе остальной системы до этого пункта дойти не сможет. Теоретически, должно что-то будет раньше чем произойти чем указанная ошибка.

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 02-Июл-17 21:49 
Однако может иметь место банальная опечатка, когда вместо nginx кто-то укажет 0nginx. И получит совершенно непредсказуемое поведение. Ну то есть... поттеринг говорит что 0nginx эквивалентно root. Норм че.

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Anonplus , 02-Июл-17 22:35 
Может, но это как с rm -rf

Юзер может ошибиться и стереть себе нафиг ВСЁ, нужно ли страховать его от такого или нет?

Подход "страховать" исповедуется в Windows, где с настройками по умолчанию на каждый чих нужно подтверждать действия, по мнению системы, опасные.


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним84701 , 02-Июл-17 23:52 
> Может, но это как с rm -rf
> Юзер может ошибиться и стереть себе нафиг ВСЁ, нужно ли страховать его
> от такого или нет?

"Опасные действия" и "действия с непонятным и неоднозначным вводом пользователя" вроде бы две большие разницы.
Или у вас уствновлена особая, суровая версия rm, которая для  rm -f "*.x", не найдя подходящих файлов (.x), начнет удалять все (*)?


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 17:35 
> Однако может иметь место банальная опечатка, когда вместо nginx кто-то укажет 0nginx.

Для это надо ещё что бы такой пользователь с опечаткой (0nginx) реально существовал в системе.


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено RomanCh , 04-Июл-17 17:58 
Например опечатка может случиться в одном месте, в системе автоматизации. А оттуда расползётся уже дальше. Да, конечно это "криворучье", т.е. человеческий фактор. И таки разумней было бы вываливаться с диагнозом "тут ошибка". Но...

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено A.Stahl , 02-Июл-17 21:50 
Однако произошло. Всё-таки это в масштабе одной программы можно возложить проверку входных данных на одну функцию и больше не париться по этому вопросу. А при межпрограммном взаимодействии верить никому нельзя. Даже Мюллеру. Тем более, что тут вопрос буквально пары строк кода.

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 02-Июл-17 22:43 
Это ещё что, я отправлял feature request под свои задачи, разумеется указал свою версию systemd из состава дистрибутива. А feature request относился к последней версии, что называется, на будущее, о чём я явно потом сказал. Но Поттеринг закрыл запрос, аргументировав это тем, что принимаются запросы только по последним двум версиям systemd и указав на уже существующие возможности, которые мне ну никак не подходили (т. е. человек даже не вникал в суть задачи).

systemd задала новый стандарт де факто для системы загрузки, он действительно хорошо, но когда-нибудь systemd ждёт серьёзный форк от недовольных.


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 02-Июл-17 23:25 
А в SysVinit не отправлял? Там что сказали?

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 02:35 
А в сис5 эти фичи были уже 20 лет как реализованы )))

-- другой аноним


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Совсем другой аноним , 03-Июл-17 11:43 
А что за фичи то?

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 15:42 
Все возможные фичи и парочка невозможных тоже. Это же проверенный временем безошибочный универсальный идеально заточенный под инициализацию системы sysV. Там такой фигни нет!

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 15:43 
> Все возможные фичи и парочка невозможных тоже. Это же проверенный временем безошибочный
> универсальный идеально заточенный под инициализацию системы sysV. Там такой фигни нет!

Точнее, там любая фигня есть! Это же исконно-посконный sysV.


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 17:38 
> Все возможные фичи и парочка невозможных тоже. Это же проверенный временем безошибочный
> универсальный идеально заточенный под инициализацию системы sysV. Там такой фигни нет!

Ну это не совсем так, просто sysV бесконечно расширяемый, за счёт скриптовости своей натуры, в отличии от того же systemd где до сих пор например нельзя задать свою команду для restart сервиса :-)


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Alex , 04-Июл-17 18:48 
ExecReload= не подходит?

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 08:49 
И куда ты лезешь? Ты что никогда не работал с CVS, SVN, git? Ну, то-то и оно. Не лезь. И мысли у тебя наверняка глупые.

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 17:22 
> systemd задала новый стандарт де факто для системы загрузки, он действительно хорошо, но когда-нибудь systemd ждёт серьёзный форк от недовольных.

И я надеюсь форк будет от Линуса.


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Led , 04-Июл-17 01:12 
>> systemd задала новый стандарт де факто для системы загрузки, он действительно хорошо, но когда-нибудь systemd ждёт серьёзный форк от недовольных.
> И я надеюсь форк будет от Линуса.

Не раньше, чем:

- Линус продаст все свои акции RedHat

или

- RedHat пошлёт ЛП на... в... в винду.


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Andrey Mitrofanov , 04-Июл-17 09:23 
>>systemd ждёт серьёзный форк от недовольных.
> И я надеюсь форк будет от Линуса.

Пока ждёте, вас порадует https://gnu.org/s/shepherd/ Ричард.


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Noteme , 03-Июл-17 11:33 
Это не сон, это гордыня. И она никого никогда к хорошему не приводила.

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 13:04 
This - http://mobile.opennet.ru/openforum/vsluhforumID3/111642.html#14

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 02-Июл-17 21:19 
Поттер сказал — нотабуг, значит нотабуг!

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 02:53 
Чую, мемасиков нарисуют, как в Bumblebee

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено anonymous , 02-Июл-17 21:33 
ЧСХ, таких нотабуг стало подозрительно много. И не только в systemd

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 09:12 
> ЧСХ, таких нотабуг стало подозрительно много. И не только в systemd

Взрослеете, однако.


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 02-Июл-17 21:47 
Вроде не впервой, о чём новость-то?

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 02-Июл-17 21:48 
>не впервой

Можно  пару примеров? Я кроме ошибки в grub2 ничего больше не помню.


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено sqrt , 02-Июл-17 23:01 
>>не впервой
> Можно  пару примеров? Я кроме ошибки в grub2 ничего больше не
> помню.

Из громких — была еще ситуация с тем, что rm -fr убивает материнку: https://github.com/systemd/systemd/issues/2402 (Поттеринг считает, что это ОК) и https://github.com/systemd/systemd/issues/5644 — удаление по маске .* удаляет и родительский каталог (Поттеринг не знал, что этого не должно происходить)


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 07:37 
Ты поцтеровы нотабуги смотри, а не в чужие программы

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено anonymous , 02-Июл-17 23:18 
Одно дело дыры, а другое, когда их игнорируют.

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 02-Июл-17 22:00 
Каюсь, раньше не понимал, за что Лёню так не любят.

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 02-Июл-17 22:16 
Любая ошибка есть ошибка, а Леня — лентяй и/или пудак.

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 00:51 
Второе, второе. Это новый аналог Ульриха "ВашеМудачество" Дреппера, с его бессмертным "stop reopening".

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 02:32 
Дреппер — автор глибца, а "стоп реопенинг" — от автора рпм. Это разные люди.

А Дреппер в своё время не хотел вставлять в глибц костыли для обхода бага во флеше и в какой-то проприетарной софтине, используемой Линусом. А ещё ругался на Линуса, что в нормальных операционках данные от ядра получаются бинарным sysctl-ем, тогда как в линуксе для этого надо парсить текстовый файл в недрах /proc. Так что Дреппер был адекватным в отличие от.


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Какаянахренразница , 03-Июл-17 07:16 
> Дреппер — автор глибца, а "стоп реопенинг" — от автора рпм. Это разные люди.

Именно Дреппер и именно в глибЦе: https://sourceware.org/bugzilla/show_bug.cgi?id=4980


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 04-Июл-17 01:52 
Млин, действительно :(

Спутал с этим: https://bugzilla.redhat.com/show_bug.cgi?id=119185


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 02-Июл-17 22:19 
> Леннарт Поттеринг отказался исправлять ошибку и закрыл уведомление с меткой "not-a-bug".
> начиная с RHEL 7/CentOS 7 штатный инструментарий дистрибутива позволяет создавать и использовать пользователей, имена которых начинаются с цифры.

он же вроде в Red Hat работает, ему там еще не настучали ?


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 00:42 
Будто вы с пульсой историю незнание? Через пару лет Лёню снимут с проекта придут тругие программам ты и все перепишут как надо.

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Девуан рулез , 03-Июл-17 01:56 
пульсу уже переписали как надо?

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 02:46 
Внезапно - да. Замечательно работает поверх JACK'а в качестве замены алсового dmix.

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 02:51 
> пульсу уже переписали как надо?

Вылезайте из криокамеры! Давно уже - теперь шипение еще более сочное и глубокое, как и жор проца! И даже, в 7 версии, решили что выход по SIGTERM не обязательно является критической ошибкой.


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Я. Р. Ош , 03-Июл-17 10:23 
> пульсу уже переписали как надо?

с разморозкой тебя. ты отсутствовал 5 лет


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено анонимшшш , 03-Июл-17 12:01 
Теперь нескучно шипит.

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено jtad , 02-Июл-17 22:24 
действительно такой эффект имеется. Сделал скрипт и запустил от 0day. В итоге

root 8746 1 0 21:17 ? 00:00:00 /bin/bash /usr/local/2.sh

от моего имени запускается как положенно. КАК МОЖНО ЭТО НЕ СЧИТАТЬ БАГОМ??


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено leap42 , 03-Июл-17 03:32 
> root 8746 1 0 21:17 ? 00:00:00 /bin/bash /usr/local/2.sh
> /usr/local/2.sh
> 2.sh

алло, это двош? тут постят несмешное!


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 13:38 
Сделай тоже самое, но от "day". Пользователь не должен существовать.

Посмотри результат. Потом задумайся.


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено sqrt , 02-Июл-17 22:37 
Я знаю, что надо сделать. Концепт многопользовательской операционной системы — это легаси UNIX'а 70-, не совместимый с новейшими принципами systemd. У каждого пользователя должен быть свой контейнер от systemd-nspawn. Это решит проблему (ну может еще пару приложений сломает, но чего не сделаешь ради прогресса).

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Crazy Alex , 02-Июл-17 23:45 
Собственно, это не так безумно, как кажется - по факту абсолютное большинство систем однопользовательские, а "пользователи" используются исключительно для разделения прав. А с приходом контейнеров на серверах (в которых часто вообще всё, что можно, от рута крутится - но этого "всего" в каждом контейнере мало) и разделение прав уходит на другие механизмы. Да и прочего legacy в POSIX хватает.

Но безумия Поттеринга - и вообще, и в данном случае - это не отменяет :-)


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 02-Июл-17 23:59 
> У каждого пользователя должен быть свой контейнер

Джоанна?


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Vkni , 03-Июл-17 00:16 
> Джоанна?

VM/370


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено sqrt , 03-Июл-17 00:41 
на z/VM примерно так. Пользователь == виртуалка.

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 00:48 
Лозунги - это хорошо, но только для лохов.

А я например ради прогресса встроил бы в systemd тест который в "непрогрессивных дистрах" кричал бы при первом запуске: "Галактикавопасностэ!!! 0root работает как root!! Давай-ка накати обновления друг!!!"

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

ps: А еще я подумал кем является человек который декларирует и воспринимает профанство в разработке systemd в качестве новейших принципов. И знаешь..я тебе из лучших побуждении искренне рекомендую молчать.


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Crazy Alex , 03-Июл-17 01:48 
По-моему, тут дружно не заметили в иронию в посте предлагавшего

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено freehck , 21-Сен-19 23:14 
Привет из 2019го. Мы уже оценили Ваше предложение и сделали шаги в этом направлении:
https://www.opennet.dev/opennews/art.shtml?num=51532
(Люди в шутку придумывают безумные вещи про будущее развитие systemd, но постоянно оказывается не так уж далеки от истины)

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Michael Shigorin , 02-Июл-17 22:48 
То есть о defensive programming бедный Леннарт тоже ничего не слышал?

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено ssh , 03-Июл-17 03:44 
> Programming? Шигорин? WHAT!?

На полном серьёзе, разъясни суть претензий.

Лингво утверждает, что используются обе слово-формы. https://www.lingvolive.com/ru-ru/translate/en-ru/programing

Макмиллиан знает только о "Programming". http://www.macmillandictionary.com/dictionary/british/progra...


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено jtad , 02-Июл-17 22:49 
нечто, поттеринг пишет

Yes, as you found out "0day" is not a valid username. I wonder which tool permitted you to create it in the first place. Note that not permitting numeric first characters is done on purpose: to avoid ambiguities between numeric UID and textual user names.

Я создал юзера стандартной useradd в моей федоре 25. Он удивляется какой тулзой это можно сделать. Он вообще когда в последний раз в редхатовском дистре работал, наверно сидит в своих новых проектах а на этот ему наплевать. За такое поведение достоин увольнения


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Яйцассыром , 03-Июл-17 09:55 
не только в редхетовском работает. в убунте тоже создается

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено None , 03-Июл-17 10:29 
Интересно, он реально не знает, что /etc/passwd можно править текстовым редактором?

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Sw00p aka Jerom , 03-Июл-17 17:42 
ага тока суть в том, что нуно быть рутом чтобы создать нового "0day", а потом ещё его прописывать в сервис )

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 23:44 
Он для логов бинарный формат придумал, смотреть который надо специальной утилитой. Какая уж тут правка конфигов универсальным текстовым редактором...

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено vantoo , 03-Июл-17 22:03 
> Он вообще когда в последний раз в редхатовском дистре работал...

Интересный вопрос, особенно учитывая то, что он работает в Red Hat.


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Димон , 21-Июл-17 22:39 
он просто дурачок, строящий из себя серьёзного технического специалиста. Но не очень получается. Зато Редхат компенсирует это протекторатом.

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 02-Июл-17 23:06 
Позиция Лёни Дэ подозрительна.  Сейчас модно косо смотреть на параноиков, везде усматривающих заговоры, но это уже ни в какие ворота.

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 00:22 
Если по ТЗ функция должна получать на вход целые числа от 1 до 100, то проверять на 0 нет смысла.

Поттеринг прав.

Не нравится - меняйте ТЗ.


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 00:40 
Анон такой анон, отрой уже для себя типизацию.

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 00:53 
> Если по ТЗ функция должна получать на вход целые числа от 1 до 100, то проверять на 0 нет смысла.

Верно. Но если вы вдруг использовали нечто на входе не проверив что у вас это нечто есть число от 1 до 100, то сразу надо в дворники. Notabug.


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 00:59 
Ну, во-первых нет такого типа, чтобы сам по себе имел диапазон 1-100. uint8_t - это [0,256]. Во-вторых, для целых чисел недостаточной разрядности есть опасность переполнения типа. В-третьих, пётеринг отказывается делать проверку, мотивируя тем, что "вам запрещено передавать в функцию числа больше 100". То что по факту хакеры вертели его запреты на детородном органе, сабж признавать отказывается.

Так что да, тут злостное нарушение практики defensive programming в критически важном компоненте системы, и отказ признать свою неправоту после прицельного тычка носом в получившуюся кучу.


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 01:40 
Ещё раз: есть здравый смысл (на который ты напираешь), а есть ТЗ. Если в ТЗ написано что будет, значит это БУДЕТ. Как, почему, а может всё-таки стоит - это неправильные вопросы. Если в ТЗ написано что пункт меню должен называться "Параматеры", то он ДОЛЖЕН называться "Параматеры". Это требование (ТРЕБОВАНИЕ!!!!!) и ты обязан (ОБЯЗАН) его выполнить.

Это как описание API: не надо додумывать и переиначивать то, что написано прямым текстом.

Напр. функция поиска подстроки в php должна вернуть "Возвращает указанную подстроку. Если подстрока не найдена, возвращается FALSE". Не может быть числа на выходе. Не может быть массива на выходе. Не может и всё тут. Но ты ведь всё равно проверишь что это не число и не массив, да?


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Crazy Alex , 03-Июл-17 01:52 
Чувак, иди учись дальше. Входные данные, за которые ты не можешь поручиться головой (то есть пришедшие откуда угодно извне) всегда проверяются. Это основа основ.

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


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 04:40 
Если проверка параметров нужна (а обычно она нужна), то делается функция-обёртка, которая только и делает что проверяет параметры и вызывает функцию-обработчик. Обёртка может выполнять кэширование, проверку прав доступа и многое другое.

Кто будет писать обёртку тебя не касается, это не ты.

А того, кто будет писать обёртку, не касается кем, где и как будет реализован функционал.

Есть паттерны, которые называются Заместитель и Декоратор, но ты с ними явно не знаком. И к проектной работе ты тоже не готов.


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 04:53 
У царя Мидаса всё в золото превращалось, а у вас - в дерьмо. Вечно хотите запихать в функцию и проверку параметров, и функционал, и отрисовку, и кэширование.

Подходишь, ничего не сделано. "А я тут занимался ***". Ну вот на *** ты этим занимался?????!!!!! Тебя просили? Тебе прямым текстом сказали "не надо". Ты дурак???? "Но ведь это тоже надо делать..." Надо. Но не тебе. И не так.


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 05:16 
> У царя Мидаса всё в золото превращалось, а у вас - в
> дерьмо. Вечно хотите запихать в функцию и проверку параметров, и функционал,
> и отрисовку, и кэширование.
> Подходишь, ничего не сделано. "А я тут занимался ***". Ну вот на
> *** ты этим занимался?????!!!!! Тебя просили? Тебе прямым текстом сказали "не
> надо". Ты дурак???? "Но ведь это тоже надо делать..." Надо. Но
> не тебе. И не так.

Подходишь такой к Поттерингу, попросил показать инит. "А я сделал комбайн. Тут DNS-сервер, сканер QR-кодов, бинарные логи, и ещё 20 ненужных вещей"


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено angra , 03-Июл-17 18:10 
Подходишь, ничего не сделано. "А я тут занимался проектированием с применением десятка патернов, о которых на днях прочитал в умной книжке. Ну вот на *** ты этим занимался?????!!!!! Тебя просили? Тебе прямым текстом сказали "не надо". Ты дурак????"

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено anon3000 , 03-Июл-17 11:06 
Ничо, ничо. Начнёшь проверять все данные сразу после первого серьёзного факапа из-за некорректных данных.

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено angra , 03-Июл-17 18:16 
Не начнет, он же манагер по образу мышления. Отбрехается тем, что в ТЗ этого не было, а ТЗ согласовали, вот подписи. А то, что проверка данных ожидается по умолчанию от качественного кода, его не колышет, он без понятия об этих умолчаниях, у него бумажка с ТЗ есть.


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 11:21 
>Ещё раз: есть здравый смысл (на который ты напираешь), а есть ТЗ.

А где оно, ТЗ на системду, не подскажешь?


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Crazy Alex , 03-Июл-17 01:50 
Вообще-то такие типы есть - в Аде, например (хм, init на Аде - интересная мысль, в принципе). В остальном - согласен.

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 02:20 
> Вообще-то такие типы есть - в Аде, например

Паскальщина же, ну и заодно модула.


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 19:33 
Модулу не знаю, а на паскалях (FP и Delphi) это делается только через аналог enum. Внутри там те же integer-ы с разрядностью как у процессора. Более того, рантайм может не отлавливать получение числа, не попадающего в разрешённый диапазон.

То есть проверять надо.


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Led , 04-Июл-17 01:19 
> Модулу не знаю, а на паскалях (FP и Delphi) это делается только через аналог enum.

Садись - "двойка"!

var I:1..100;

> Внутри там те же integer-ы с разрядностью как
> у процессора. Более того, рантайм может не отлавливать получение числа, не
> попадающего в разрешённый диапазон.

А может и "отлавливать". Начиная с... врать не буду, но начиная с TurboPascal 5.0 for DOS - точно мог "отлавливать".

> То есть проверять надо.

Т.е. уроки прогуливать не надо.


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 10:35 
>нет такого типа, чтобы сам по себе имел диапазон 1-100

ты не умеешь в типизацию


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 12:22 
enum?

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Pilat , 14-Июл-17 14:43 
> Ну, во-первых нет такого типа, чтобы сам по себе имел диапазон 1-100.
> uint8_t - это [0,256].

Скоро кто-то прочитает Ваш пост и поверит что это именно так. И сделает очередную чудо-приблуду, с которой Поттерингу придётся разбираться.


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено dq0s4y71 , 03-Июл-17 15:19 
Дело в том, что реальный мир - это не ТЗ. Его трудно изменить, и его свойства приходится учитывать. А позиция "если факты противоречат моей теории, тем хуже для фактов" инфантильная.

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 04-Июл-17 01:47 
В реальном мире платят за точность исполнения ТЗ. когда мы собирали один девайс в тз был уровень шума, мы смогли его снизить и чуть не нарвались на штрафы. Как сказал заказчик: не ваше собачье дело почему девайс должен шуметь. Он должен, поэтому это написано в тз. Пришлось вставлять в девайс шумелку.

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено EHLO , 04-Июл-17 07:35 
И теперь ты ходишь в каске и улыбаешься.

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 04-Июл-17 10:25 
Cool story, bro. Теперь спрошу еще раз: где ТЗ на systemd? Где в нем пункт, где прямо описано сабжевое поведение?

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 04-Июл-17 11:17 
Там же, где ТЗ на Линукс. Мотивировочную часть Поттеринг представил. Читай пока не поймёшь его позицию, там всего 10 слов.

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Andrey Mitrofanov , 04-Июл-17 11:42 
>Читай пока не поймёшь его позицию, там всего 10 слов.

Как он растянул их на 148 блогов-постов? Активно использовал воду и знаки переносов?...

Поможете нам отделить те 10 слов от тех-тех 148 блог-постов? Типа, мучаемся же.


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Andrey Mitrofanov , 04-Июл-17 11:51 
>Мотивировочную часть Поттеринг представил. Читай пока
> не поймёшь его позицию, там всего 10 слов.

Девять?! Не десять??7

""Poettering describes systemd development as "never finished, never complete, but tracking progress of technology".""  --https://en.wikipedia.org/wiki/Systemd#Design


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 04-Июл-17 11:57 
Раз его нет, то какого черта ты тут тогда про ТЗ задвигаешь?

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено dq0s4y71 , 05-Июл-17 17:57 
Я так понимаю, с вашим участием пока что было разработано не много девайсов :)

В реальном мире как-то так: http://ekimoff.ru/download/job/1.jpg


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 02:32 
И... количество вопросов "зачем?" к создателям Devuan становится меньше.

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 02:45 
Поттеринг всего лишь "послал" выскочку, который кто такой вообще, чтобы репортить баги? Удивительно что вообще обосновал позицию, а не закрыл страничку молча. В своё время так же "послали" Кона Коливаса, только в тот раз Ingo Molnár. "Кто ты такой вообще, пролетарий, ветеринар, чтобы учить меня как ядро писать?"

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 03:14 
> man 3 strtoul

Если исправлять баг, то тут:)

Думаю каждый хоть раз парсил текст в числа этой функцией.
И многие знают про этот баг не первый год.


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Ordu , 03-Июл-17 03:31 
strtoul тут не при чём. Поттеринг же объяснил, что имя пользователя начинающееся с цифры systemd рассматривает как ошибку и игнорирует соответствующую строчку конфига. Пишет в лог об ошибке и продолжает работать так, будто этой строчки и не было. А если user не указан, то по дефолту используется root.

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 13:26 
Это была ирония...

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Ordu , 03-Июл-17 13:34 
Отмазывайся теперь.

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Иван , 16-Янв-18 15:49 
> имя пользователя начинающееся с цифры systemd рассматривает как ошибку
> и игнорирует соответствующую строчку конфига. Пишет в лог об ошибке
> и продолжает работать так, будто этой строчки и не было.
> А если user не указан, то по дефолту используется root.

Это только если пользователя с таким именем не существует. А если существует, то должен использовать его, а использует root. Хотя наверное и при несуществующем пользователе запуск происходить не должен. И наверное не происходит.


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено wins proxy , 03-Июл-17 13:09 
И какой же там баг?

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 13:31 
Бага там как раз нету:)
Функция делает то, что и должна делать.

Она кстати вернет 0 в случаях, когда первая цифра не 0.
Например, 'day0' или '-day'.


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено L.P. , 03-Июл-17 21:39 

> Она кстати вернет 0 в случаях, когда первая цифра не 0.
> Например, 'day0' или '-day'.

Ну вернет 0 для day0 и что? В мане отлично описано, что нужно делать в таком случае.


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним84701 , 03-Июл-17 14:34 
>> man 3 strtoul
> Если исправлять баг, то тут:)
> Думаю каждый хоть раз парсил текст в числа этой функцией.
> И многие знают про этот баг не первый год.

Да все там есть:
https://github.com/systemd/systemd/blob/7e867138f586a7113f43...


int safe_atou(const char *s, unsigned *ret_u) {
        char *x = NULL;
        unsigned long l;
...
errno = 0;
        l = strtoul(s, &x, 0);
        if (errno > 0)
                return -errno;
        if (!x || x == s || *x)
                return -EINVAL;

Как и целая куча копипасты "safe_atoXX" с вариациями в одну-две строки -- все  в лучших традициях.


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено dq0s4y71 , 03-Июл-17 15:30 
Хм, интересно. А то, что эта функция для строки "0" выдаёт ошибку - это так задумано художником?

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним84701 , 03-Июл-17 15:59 
> Хм, интересно. А то, что эта функция для строки "0" выдаёт ошибку

Хм, а с чего вы так решили?



"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено dq0s4y71 , 03-Июл-17 20:28 
С того, что strtoul возвращает 0 как в результате ошибки, так и в результате корректного преобразования строки "0".

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним84701 , 03-Июл-17 20:38 
> С того, что strtoul возвращает 0 как в результате ошибки, так и
> в результате корректного преобразования строки "0".


unsigned long int strtoul(const char *nptr, char **endptr, int base);

Хм, а использовать/проверять endptr не позволяют религиозные убеждения (и вообще, душа просит эмуляции старого доброго атоя)?

> If endptr is not NULL, strtoul() stores the address of the first invalid character in *endptr.
> If there were no digits at all, strtoul() stores the original value of nptr in *endptr (and returns 0).
> In particular, if *nptr is not '\0' but **endptr is '\0' on return, the entire string is valid.

Ну или если в более разжеванном виде:
http://www.gnu.org/software/libc/manual/html_node/Parsing-of...
> You should not check for errors by examining the return value of strtol, because the string might be a valid representation of 0l, LONG_MAX, or LONG_MIN. Instead, check whether tailptr points to what you expect after the number (e.g. '\0' if the string should end after the number). You also need to clear errno before the call and check it afterward, in case there was overflow.
>


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено dq0s4y71 , 05-Июл-17 18:00 
Это вы не мне, а автору кода, процитированного выше, рассказывайте.

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним84701 , 05-Июл-17 19:56 
>>> эта функция для строки "0" выдаёт ошибку
>> С того, что strtoul возвращает 0 как в результате ошибки, так и в результате корректного преобразования строки "0".
> Это вы не мне, а автору кода, процитированного выше, рассказывайте.

И правда -- рассказывать вам, похоже, бесполезно.
http://ideone.com/SEriLl


input: 0day, err: -22, val: 1337
input: day0, err: -22, val: 1337
input: 42, err: 0, val: 42
input: -0, err: -34, val: 42
input: -1, err: -34, val: 42
input: 0, err: 0, val: 0
input: 1337, err: 0, val: 1337
input: 0p3nn3, err: -22, val: 1337


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Led , 04-Июл-17 01:21 
> С того, что strtoul возвращает 0 как в результате ошибки, так и
> в результате корректного преобразования строки "0".

man errno


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено dq0s4y71 , 05-Июл-17 18:01 
Ещё один. Автору кода выше расскажите.

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено ОМДЗТ , 03-Июл-17 03:15 
В systemd выявлена ошибка, приводящая к выполнению сервисов с правами другого пользвователя
У меня в системе нету пользвователей, так что не страшно.

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Kodir , 03-Июл-17 18:52 
> У меня в системе нету пользвователей, так что не страшно.

Вам в DOS'е хорошо! А у нас тут интыпрайз :)


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 03:38 
Эпичненько. Всетаки входной контроль данных должен быть.

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Andrey Mitrofanov , 03-Июл-17 07:15 
> Эпичненько. Всетаки входной контроль данных должен быть.

если вы намекаете на отдел кадров рехатта, то, как тут уже писали, там тз совсем не про вас.


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 04:52 
Всё правильно. В Linux нет багов, есть только фичи.. :)

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 06:06 
Пожалуй, это и есть причина появления "Лёни".

Можно сколько угодно кидаться на с-д, но ошибки, всё-таки, в консерватории. А именно, стойкое игнорирование мелочей и фидбека юзеров, которые, якобы, тупее "светлейшего разработчика". На место "светлейшего" претендует и Лёня и тысячи других гениев-основателей, которые из-за ЧСВ не признают своих косяков. Лёня - дитя системы и отлично вписывается  linux-мир


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 06:15 
Лене на пенсию пора уже, по состоянию душевного здоровья. А анонимным опеннетовцам, одобряющим "not a bug" в данном случае - пора, наконец, перестать противоречить любой критике святых мощей systemd, а сначала включить мозг. Леня зарвался, а тут находятся люди, готовые любой его высер оправдать.

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Ordu , 03-Июл-17 13:11 
По состоянию душевного здоровья на пенсию по инвалидности надо отправлять 95% населения opennet'а, которое даже не попытавшись въехать в тему обвиняет Поттеринга во всех смертных грехах. Как и написано в заголовке новости -- это спорная ошибка. Ошибка она или не ошибка? Ошибка в unit-файле, об этой ошибке админу сообщается. Весь сыр-бор в том, что может быть надо не просто сообщать об ошибке, но ещё и сервис не запускать. И, по-моему, это было бы здравым решением. Наверное.
Но, с другой стороны, Лёню тоже можно понять -- у него там в issues сидят толпы обезьян с развитием на уровне opennet'а. Обсуждать с ними такие тонкости -- совершенно непродуктивная практика: глянь на это обсуждение и ты поймёшь. Проще закрыть issue, а если будет очень надо, то либо переоткрыть, либо открыть новый, либо молча исправить тип ошибки с синтаксической на семантическую и обваливать запуск сервиса. Но молча. Или обсуждая со своими. Не с имбецилами в интернете.

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 18:06 
Леня заслуживает такое коммьюнити ровно по той же самой причине, по которой лично вы заслуживаете такой опеннет.

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


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Ordu , 03-Июл-17 19:16 
> Леня заслуживает такое коммьюнити ровно по той же самой причине, по которой
> лично вы заслуживаете такой опеннет.

Нет, ситуации различны. Я могу покинуть опеннет в любой момент.

> Вы сами оттолкнули от себя конструктивно критикующих людей, не оставив им никакой
> другой формы диалога, кроме как пообезьянничать. А теперь обиженно наблюдаете вокруг
> одних обезьян. Чему же тут удивляться-то?
> конструктивно критикующих
> конструктивно

Хы. Можно конкретные ссылки на этих конструктивно критикующих, чтобы я мог оценить масштабы тех потерь, которые я понёс в результате своего опрометчивого поведения? Я не вижу ни одного, везде, вместо рациональных аргументов, сплошной эмоциональный ad hominem типа "если Лёня, значит мyдaк, значит любое принятое им решение мудацкое". На ad hominem ответим ad hominemom. Но если я не прав, я покаюсь. Ссылки в студию.


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Kodir , 03-Июл-17 18:50 
Сознательное создание дыры, под предлогом "всё равно таких юзеров нет" - полная безалаберность, простительная школоте. Если это предлагает чел старше 30 лет, то он полный му****к.

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Ordu , 03-Июл-17 19:20 
> Сознательное создание дыры, под предлогом "всё равно таких юзеров нет" - полная
> безалаберность, простительная школоте. Если это предлагает чел старше 30 лет, то
> он полный му****к.

Если возможность для рута запускать сервисы от своего имени -- это дыра, то я с вами соглашусь стопроцентов. Но я не согласен с первой частью утверждения. А раз так, то меня гложут сомнения в том, что этот баг является дырой. То есть, как я уже сказал выше, я всё же скорее склонен не соглашаться с Поттерингом по этому вопросу, но у меня нет твёрдой уверенности. В отличие от 95% местного населения, которое всегда поражено синдромом Даннинга-Крюгера по самые гланды, и всегда имеет определённое мнение по любому вопросу и всегда твёрдо уверено в своей правоте.


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 06:49 
В системах, в которых Системд, уже исправили работу патча Бармина? Раньше стирало UEFI BIOS. Если нет - то и эту багофигу не исправят и подавно! Ну, будет ещё один способ получения рута :-) Это как в Windows 98: Введите логин и пароль. Ввёл. Неправильный пароль. Нажал отмена. Успешный вход!

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено iPony , 03-Июл-17 08:50 
> Ну, будет ещё один способ получения рута

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


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Anonminus , 03-Июл-17 09:12 
>> Ну, будет ещё один способ получения рута
> Это типа, чтоб получить рут права надо для начала с рут правами
> записать конфигурацию сервиса?
> Гениальное хакерство.

Видимо, предлагается ногами притопать к руту и попросить его добавить пользователя 0day прям как в https://xkcd.com/327/


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 11:27 
>> Ну, будет ещё один способ получения рута
> Это типа, чтоб получить рут права надо для начала с рут правами
> записать конфигурацию сервиса?
> Гениальное хакерство.

Пакетируем какой-нибудь софт, который использует init-скрипты, например TeamViewer.


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено soarin , 03-Июл-17 13:46 
> Пакетируем какой-нибудь софт, который использует init-скрипты, например TeamViewer.

И? так и без этой штуки можно напакетировать туда сервис рутовый.


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Какаянахренразница , 03-Июл-17 07:00 
> Леннарт Поттеринг отказался исправлять ошибку и закрыл уведомление с
> меткой "not-a-bug".

Чё-то он меня бесит. Когда я предложил смерджить все его поделки в один пакет и затолкать ему в гузно во имя мира на земле, модеры меня потёрли. Обидно.


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Мое , 03-Июл-17 07:59 
Да, обидно. Но даже не то, что ваше сообщение потерли, а не прислушались к вашему совету.

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Kodir , 03-Июл-17 18:48 
Потому что шакал Поццеринг работает на кого-то ещё, им НУЖНЫ дыры, которые помогут спецслужбам. Не удивительно, КАК ДРУЖНО мир лину|~|с подхватил казалось бы самую бестолковую идею, противоречащую всему!

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Иван , 16-Янв-18 16:10 
> КАК ДРУЖНО мир лину|~|с подхватил казалось
> бы самую бестолковую идею, противоречащую всему!

Это не мир. В основном это боты для раскачивания. А от них уже заражаются психически неустойчивые. "Все пошли и я пошёл". Теперь они агенты Смиты, и пока не выздоровят, надо стараться от них изолироваться (игнорировать) и изгонять из защищаемых сообществ.


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Anonminus , 03-Июл-17 08:24 
Акела промахнулся! Промахнулся Акела!

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 15:17 
Шакал шакала ставит идеалом...

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 08:27 
А как должна работать
# chown 0day anyfile.txt

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Иван , 16-Янв-18 16:22 
> А как должна работать
> # chown 0day anyfile.txt

servant# ls -l tmp.txt
-rw-r--r--  1 ivan  ivan  1821  1 янв 00:57 tmp.txt
servant# grep 0day /etc/passwd
servant# pw useradd 0day
servant# grep 0day /etc/passwd
0day:*:1003:1003:User &:/home/0day:/bin/sh
servant# chown 0day tmp.txt
servant# ls -l tmp.txt
-rw-r--r--  1 0day  ivan  1821  1 янв 00:57 tmp.txt
servant#

Правда у меня FreeBSD.


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено iPony , 03-Июл-17 08:46 
> ошибка закрыта без исправления

Какой наркоман заголовок писал?
Закрыта не ошибка, а отчет об ошибке.


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Anonminus , 03-Июл-17 08:52 
> Закрыта не ошибка, а отчет об ошибке

Закрыт не отчет об ошибке, а issue, содержащий в себе отчет об ошибке.


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено iPony , 03-Июл-17 08:55 
По английски и я могу, а по-русски слабо?

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Anonminus , 03-Июл-17 09:06 
яПони

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено номия , 03-Июл-17 09:50 
если ты сделал пользователя 0day то ты конечно уже скомпрометировал всё.. можно же сразу всё под рутом делать.

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Линукс нужен не только Ли , 03-Июл-17 10:17 
Ну хоть бы под nobody запускал по умолчанию что-ли.

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 13:57 
А смысл? Что бы букв было больше?
Вообще убрать этот параметр из юнит файла.

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено L29Ah , 03-Июл-17 10:19 
Ответ от энтузиастов openbsd: https://marc.info/?l=openbsd-tech&m=149902196520920&w=2

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Нанобот , 03-Июл-17 11:58 
>В Linux исторически не разрешено использовать имена пользователей, начинающиеся с цифры, которые считаются некорректными

да хрен с этими цифрами. когда в linux можно будет создать пользователя с именем кириллицей? а то в винде вот уже лет двадцать как можно...


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 18:13 
Надеюсь, никогда.

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Pilat , 14-Июл-17 14:46 
> да хрен с этими цифрами. когда в linux можно будет создать пользователя
> с именем кириллицей? а то в винде вот уже лет двадцать
> как можно...

И с пробелами неплохо бы, а то как-то скучно стало жить


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 11:58 
В чем бугурт? С точки зрения systemd строка User=0day неверна _синтаксически_. Строка отбрасывается, но в логе появляется отметка о косяке. User=notexists - верна синтаксически, но неверна семантически, поэтому берется во внимание, но при запуске скажет - user not found. По мне, так вроде логично всё. В любом случае косяк не уходит молча в пустоту, а в лог кидается предупреждение.

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 13:13 
>В чем бугурт? С точки зрения systemd строка User=0day неверна _синтаксически_

Сам спросил - сам ответил.
По стандарту POSIX 0day - корректное имя пользователя. С чего вдруг такая запись должна быть синтаксически неверна?


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 14:11 
Наверно "бугурт" в том, что Леня набросал код, даже не думая о том как он должен работать.
Теоретически если к примеру в какой-то момент случайно удалить пользователя, то сервис запустится под рутом. В нормальной программе это может регулироваться параметром.
Тут же пробелы в логике в работе(запуск сервисов). По умолчанию следовало не запускать сервис, если в нем есть синтаксические(или любые другие). А вот если пользователь хочет, то скажем неким параметром указывать системе запускать сервис, если информации для запуска сервиса достаточно. То есть напрочь отсутствует политика безопасности запуска сервисов.

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено B , 04-Июл-17 02:44 

> Теоретически если к примеру в какой-то момент случайно удалить пользователя, то сервис
> запустится под рутом.

Нет, не запустится. Несуществующий пользователь != невалидный пользователь.



"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 12:01 
>При этом расчёт делается на то, что создание некорректного пользователя, подобного "0day", не должно быть допущено другими компонентами дистрибутива.

ЗАТКНИТЕСЬ ВСЕ! Пость поттеринг лучше игнорирует этот баг, чем заменяет /etc/{passwd,shadow,group} на бинарную поделку прибитую к systemd


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 12:13 
>>При этом расчёт делается на то, что создание некорректного пользователя, подобного "0day", не должно быть допущено другими компонентами дистрибутива.
> ЗАТКНИТЕСЬ ВСЕ! Пость поттеринг лучше игнорирует этот баг, чем заменяет /etc/{passwd,shadow,group}
> на бинарную поделку прибитую к systemd

разве ещё не заменил?


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 04-Июл-17 20:29 
Ни капли не удивлюсь, если оно так в скором времени и станет.

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Andrey Mitrofanov , 04-Июл-17 20:58 
> Ни капли не удивлюсь, если оно так в скором времени и станет.

Креста на http://openwall.com/tcb/ вас нет, ироды !


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 05-Июл-17 00:12 
Так как бы наоборот, ничего хорошего из этого не выйдет. Просто после systemd меня вообще мало чем можно удивить.

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Нанобот , 03-Июл-17 12:04 
>Кроме того, даже если systemd воспринимает имя некорректным, следует вывести ошибку, а не молча запускать сервис под другим пользователем

вот это было бы правильным решением


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 14:15 
Правильным решением было бы не запускать сервис, если в нем(юнит файл) допущены ошибки.

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Andrey Mitrofanov , 03-Июл-17 14:39 
> Правильным решением было бы не

Так, ша! Тут лёнарт решает, что правильно.


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 04-Июл-17 02:31 
Поддержу.
К примеру, тот же nginx не запустится, если в конфиге ошибка.

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 12:19 
> В Linux исторически не разрешено

В языке C исторически сложилось так, что memcpy() копирует данные "от начала к концу". 35 лет подряд так и делали. А потом вдруг внезапно решили, что "от конца к началу" тоже будет зашибись, потому что иначе не ускорить memcpy() с помощью SSE4 на системах x86_64. А всем несогласным сказали "нам плевать как там сложилось исторически - есть стандарт, вот и следуйте ему".

Что за двойные стандарты в мире Open Source? В проекте Glibc сказали "плевать что так исторически сложилось", а в проекте Systemd говорят "плевать что есть стандарт". Проект X11 демонтируют инноваторы, потому что там есть сетевая прозрачность, поэтому Wayland лучше. Проект PulseAudio добавляют потому что там есть сетевая прозначность, поэтому PulseAudio лучше. И таких ситуаций - полно!


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 12:50 
"If developers don't force themselves into the constraints of the POSIX API, they could develop some really innovative software, like systemd shows" (C) L.P., 2011

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Led , 04-Июл-17 01:05 
> исторически сложилось так

Иди в винду, ламер.


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 04-Июл-17 02:33 
По моему, еще Кениган и Ричи в своей книжке писали, что поверение memcpy зависит от реализации.

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено ыы , 03-Июл-17 12:53 
Поттеринг поступил совершенно верно. Описанное поведение не является ошибкой.

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено анонанонанонанино , 03-Июл-17 14:58 
Скачал Fedora. Установил Fedora. Загрузилась FreeBSD. Вот так нет никаких ошибок.

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено amonymous , 03-Июл-17 15:57 
Хэш-то надо было сверять...

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Andrey Mitrofanov , 03-Июл-17 16:45 
> Хэш-то надо было сверять...

Неверный хеш был по-лёнартовки проверен-и-отброшен. Есть путь.


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Led , 04-Июл-17 01:06 
> Описанное поведение не является ошибкой.

Тогда это бэкдор.


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено B , 04-Июл-17 02:24 
Расскажи что ли, где бекдор-то.

По факту в юнит-файле игнорируется директива User, если указанный пользователь невалидный.

В чем уязвимость?


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 03-Июл-17 18:17 
Итак, господа, возникает вопрос!
Все ли хорошо в openrc и стоит ли выкинуть сустемд (и пульсу заодно)?

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Ненужно , 03-Июл-17 18:25 
1. Да, все хорошо, но количество программ, зависящих от него, колеблется в зависимости от заинтересованности мейнтеров конкретного дистрибутива.
2. Если В Вашем дистре достаточно openrc пакетов, то конечно стоит. Ну а пшшшаудио ненужно априори. На крайний случай можете выкинуть сервер и оставить libpulse в качестве плагина для альсы, если есть программы, которые зависят от сабжа и лень перекомпилять их/искать альтернативы.

Алсо есть еще runit, но он, вроде, в глубокой разработке и еще далек от идеала. Ну и, банально, проблематично его найти вне войда


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 04-Июл-17 01:13 
>оставить libpulse

https://github.com/i-rinat/apulse
>есть еще runitесть еще runit

Этих систем инициализаций вагон и маленькая тележка. Бери любуй, подпиливай под неё свои скрипты и пользуйся. Хоть sinit, хоть uselessd, хоть самописный на баше. Просто делай как тебе удобно и всё.


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено vantoo , 03-Июл-17 22:06 
"Исторически сложилось...", конечно, аргумент серьезный, но POSIX все таки важнее.

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 04-Июл-17 13:48 
Регексп, приведённый в комментарии, матчит любое число.
https://gist.github.com/bloerwald/a482791395114fa82636e2ab20...

То есть можно создать юзера с именем (не uid) 0, 123 или любым другим, не отличимым от uid.
Как предполагается обрабатывать данную ситуацию ВСЕМУ софту, который не использует раздельные параметры для user и uid (а это значительная часть софта и подавляющее большинство утилит для администрирования) и какой стандарт регламентирует, что должно иметь приоритет для такого параметра?

В качестве домашнего задания попробуйте сделать:
useradd 0
pkill -9 -u 0

И уже на базе этого подумайте, кто именно и где неправ.


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 04-Июл-17 14:18 
> В качестве домашнего задания попробуйте сделать:
> useradd 0
> pkill -9 -u 0
> И уже на базе этого подумайте, кто именно и где неправ.

В качестве домашнего задания попробуйте почитать внимательно багтрекер. Подсказка:
Невалидный пользователь отбрасывается при парсинге и сервис запускается от рута. А вот если пользватель валидный, но его нет в системе, тогда никто ничего не запускет. Классно, ага.


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 04-Июл-17 15:35 
Ответ на твой вопрос содержится прямо в тексте новости.

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено www2 , 09-Июл-17 10:14 
А теперь попробуйте в качестве домашнего задания внимательнее прочитать новость и сделать вот так:
useradd 0day
pkill -9 -u 0day

Убьются ли у вас процессы пользователя 0day, или процессы пользователя root, как это сделал бы systemd?

И уже на базе этого подумайте, кто именно и где неправ. На мой взгляд всё очевидно - пользователь с именем 0day - это не пользователь с uid 0.


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено northbear , 05-Июл-17 16:45 
Вообще пользователи могут появляться в системе не только из /etc/passwd но и через сетевые сервисы типа Kerberos или YP/NIC. А там таких ограничений нет. Странно что Леннарт работая на RedHat, не рассматривает такой вариант.
Похоже у парня крыша едет от очущения собственной крутизны.

"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 06-Июл-17 11:40 
> не рассматривает такой вариант

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


"Спорная ошибка в systemd, позволяющая повысить привилегии, з..."
Отправлено Аноним , 06-Июл-17 03:39 
Страница автора systemd - http://0pointer.de/lennart/

Феерично - 0pointer !