LINUX.ORG.RU

Леннарт Поттеринг удостоен премии Pwnie Awards 2017

 , , ,


7

3

На церемонии, ежегодно проходящей в рамках конференции Black Hat USA в Лас–Вегасе, объявлены победители премии Pwnie Awards 2017, присуждаемой за выдающиеся достижения либо провалы в области компьютерной безопасности.

В категории «Самая дурацкая реакция разработчика» (Lamest Vendor Response) премии удостоен Леннарт Поттеринг за реакцию на ошибки в systemd и отказ документировать уязвимости, получившие индекс CVE: 5998 (новость), 6225, 6214, 5144, 6237 (обсуждение в Talks).

>>> Подробности



Проверено: jollheef ()
Последнее исправление: sudopacman (всего исправлений: 2)

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

, а даже наоборот - они в него еще и деньги вкладывают.

было бы странно, если бы не было иначе — сустемд корпоративный продукт редхат, его разработка ориентирована только на дистры редхата, а любое упоминание стороннего использования вызывает батхерт в стиле «это СПО, любитесь там как хотите!». И это было бы хорошо, я повторяюсь, если бы об редхат-онли говорили вслух и не стесняясь.

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

я тут в одном месте опечатался и порушил систему - Поттеринг виноват

Это сложно будет обосновать: ошибка в init-скрипте тоже может закончиться печально для сервиса.

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

Так это ж они всем суют паяльник в задницу.

идите в багтрекер своего дистрибутива и заводите баги, что после установки у вас застрял паяльник в заднем проходе, причем тут Леннарт-то? Она сам вам лично этот паяльник вставлял?

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

есть компания RH, которая только тем и занимается, что разрабатывает серверную
OC, у ребят из этой компании systemd по какой-то причине боли в заднем проходе не вызывает

Мне реально интересно, что будет, когда systemd перекочует в RHEL. Оставят ли там возможность sysvinit использовать ? Но именно интересно, я ни RHEL, ни CentOS не пользуюсь.

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

Это сложно будет обосновать

предположение о том, что будет - это всего лишь гипотеза, насколько она верна проверить сейчас невозможно, потому что Леннарт в свое время выбрал то что выбрал. Однако я уверен, что поток говен про обратную совместимость был бы не скончаемым, а по факту обратные совместимости здесь его повсюду преследуют: нужно было изначально только uid/guid в User/Group поддерживать и не париться - у пользователей логины чаще чем uid меняются.

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

Нельзя пытаться опревергать то, что не определено.

Но можно спорить на основе своих личных, внутренних определений терминов, да, alpha?

сойдемся на том что bug - это «manifestation of an error in software»

Одно из. Там целых три. И ты очень умело уводила беседу, зациклившись именно на первом, хотя там есть также и «incorrect data definition in a computer program».

что такое manfestation of an error in a software?

Ты действительно не видишь разницы между «error» и «manifestation of an error»?

Как его отличить от чего бы то ни было другого?

Не нужно сейчас говрить в общем. Есть конкретный случай.

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

Мне реально интересно, что будет, когда systemd перекочует в RHEL. Оставят ли там возможность sysvinit использовать ? Но именно интересно, я ни RHEL, ни CentOS не пользуюсь.

с разморозкой, он там уже как три года - просто глоток чистого воздуха после upstart

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

Однако я уверен, что поток говен про обратную совместимость был бы не скончаемым

Про обратную совместимость с чем ? Или ты про более ранние версии systemd ? А он там раньше никак совместимость не ломал в намного более серьёзных случаях ? К примеру, с именами сетевых интерфейсов.

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

Мне реально интересно, что будет, когда systemd перекочует в RHEL. Оставят ли там возможность sysvinit использовать ?

Как там в криокамере?

Нет, не оставили. Педальный sysvinit нельзя было использовать уже в RHEL 6.

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

Но можно спорить на основе своих личных, внутренних определений терминов, да, alpha?

Разумеется можно. Если озвучить определение, то о нем можно спорить. Если не озвучить - то нельзя. Я принесла свое, ты свое. Задача сравнить. Для этого найти общую базу на которую они бы опирались.

Или ты думаешь на возможность дать определение надо лицензию получать?

Ты действительно не видишь разницы между «error» и «manifestation of an error»?

Я не спросила про разницу между error и manifestation of error. Я спросила что такое это самое «manifestation of error».

Не нужно сейчас говрить в общем. Есть конкретный случай.

Ты понимаешь, что значит «дать определение»?

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

Про обратную совместимость с чем ? Или ты про более ранние версии systemd ?

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

А он там раньше никак совместимость не ломал в намного более серьёзных случаях ? К примеру, с именами сетевых интерфейсов.

если речь идет про разные схемы наименования, то это в гайдах описано (https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html...), да и вообще считается что Леннарт наоборот все починил (по крайней мере на 6ке меня udev постоянно выбешивал и я всегда сносил 70-persistent-net.rules и 75-persistent-net-generator.rules)

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

ты свое

Ни дня без вранья? Я _своего_ ничего не приносил. Я принес стандарт, который помогает стандартизировать терминологию. И сразу же наперёд: да, для меня ieee standard > твое определение. Имхо, предвзятого.

я не спросила про разницу между error и manifestation of error

Нет, ты всего лишь подменила понятия, вот здесь:

приведенная тобой цитата определяет термин «баг» словом «ошибка», так?

Ты понимаешь, что значит «дать определение»?

Расскажи мне, пожалуйста.

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

Ни дня без вранья? Я _своего_ ничего не приносил.

«свое» - это не оскорбление. То что ты его принес из ieee - это замечательно. В моих глазах это никакого веса ему не добавляет, но ок, так и буду писать.

Я принес стандарт, который помогает стандартизировать терминологию.

А я тебя спросила развернуть каким именно образом

ты всего лишь подменила понятия

там выше я уже исправилась, так и пишу теперь «manifestation of error»

ты все-таки на вопрос, что это значит, ответишь?

И сразу же наперёд: да, для меня ieee standard > твое определение.

Да это замечательно. ты только расшифруй, в чем этот стандарт состоит. Просто так на набор букв медитировать не интересно.

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

Фигасе вы тут нафлудилы за день. Вчера увидел новость, думаю, «завтра прочту, полистаю комменты».

Что-то аж желание отпало...

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

Главное стабильно и с удобным интерфейсом

Ога, стабильно запускает пользовательский юнит от рута. Хотя нет, таки нестабильно — NOTABUG же в итоге пофиксили.

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

«свое» - это не оскорбление.

Подменять понятия у тебя талант! 8)

«manifestation of error»
ты все-таки на вопрос, что это значит, ответишь?

Если честно, то возможно, ответ есть здесь:
http://ieeexplore.ieee.org/document/139919/
но, увы, у меня нет к нему доступа.
Если ты хочешь, дай свое определение.

В моих глазах это никакого веса ему не добавляет
Просто так на набор букв медитировать не интересно.

Вероятно, если бы их написал Леннарт, то...

И да, всё же ответь мне:

Ты понимаешь, что значит «дать определение»?
Расскажи мне, пожалуйста.

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

игнорировать только ошибочные строки и пытаться запуститься

Является ли имя пользователя с циферки ошибкой — вопрос открытый.

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

Лень, тем более тут я согласен.

//Готовлю вброс в толксах. Ждите.

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

Для человека, который знает и шелл, и Си, никакого отличия нет (разве что в удобстве). А если ты знаешь одно, но не знаешь другого — то это исключительно твои проблемы.

Зачем нужны шеллы, си и прочие полумеры? Давай будем сразу в машкодах писать.

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

Если честно, то возможно, ответ есть здесь:
http://ieeexplore.ieee.org/document/139919/
но, увы, у меня нет к нему доступа.
Если ты хочешь, дай свое определение.

Я свое уже написала, три раза. Ты решил с ним несогласиться и поспорить, и принёс другое, не «своё», да, к которому у тебя нет в итоге доступа.

Тебе не кажется, что здесь что-то не так?

Вероятно, если бы их написал Леннарт, то...

Отдохните уже от Леннарта, сколько можно-то. Если бы ты их написал сам или хотя бы прочитал не важно где, но главное понял и смог бы объяснить - можно было бы что-то обсуждать.

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

Ты понимаешь, что значит «дать определение»?

Расскажи мне, пожалуйста.

Рассказываю:

Дать определние - это значит дать критерий, по которому элементы некоторой группы можно разделить по принципу «подпадает под определение» или «не подпадает».

Пример: «Багом называется поведение не соответствующее задуманному разработчиком» - это определение подгруппы багов в группе поведений программы.

Если рассматривать некоторое конкретное поведение программы при заданных условиях, и окажется что разработчик такого поведения не планировал (допустим мы планировали при любых входных данных выдать 2x2, а при вот таком конкретном наборе получили Segmentation fault), то его можно признать багом. Если же допустим разработчик планировал на любой численный ввод x выдавать x^2 а пользователь подал строку «5» и получил в ответ не 25 а много ругани - то это не баг, а отсутствие feature: разработчик работу со строками не планировал, она и не работает.

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

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

вот тот код, который выдавал uid=0 для user=0day в других бинарниках использовался? если да, то для чего?

Нет, не использовался.

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

Как journald поставить отдельно? не какой-то там левый форк, а именно оригинальный от Лёни?

Берёшь и ставишь. Тебя научить пользоваться автотулзами?

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

заиметь nspawn без systemd

Собрать и поставить nspawn без systemd. Возможно, написать альтернативную реализацию каких-то там интерфейсов, которые нужны nspawn'у (я не знаю, есть ли таковые).

заменить journald на syslog?

Ещё проще: удалить из системы journald и поставить любимую реализацию syslog.

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

Я свое уже написала, три раза. Ты решил с ним несогласиться и поспорить, и принёс другое, не «своё», да, к которому у тебя нет в итоге доступа.

Странно, ведь я принес то, к чему у меня доступ есть. И процитировал. Вероятно ты видишь то, что хочешь видить.

Отдохните уже от Леннарта

Тебе бы этот совет, да в начале треда...

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

Чем отличается догма от аксиомы?

соответствующее задуманному разработчиком

Ладно, подойдём с другой стороны. Как узнать, что разработчик задумал, а что нет?

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

в проприетарщине это Зафиксировано во внутренних функциональных требованиях и тест-кейсах и мануале. В СПО в тесткейсах и мануале.

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

Так что, повышение привилегий для юзера с циферки у поттеров таки задуманное поведение?

Перестаём врать и по-детски желтить. «Повышение привилегий» — это сказка для ЛОРчика. Задуманное поведение — игнорирование такой директивы с выдачей предупреждения в момент загрузки юнита.

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

Странно, ведь я принес то, к чему у меня доступ есть. И процитировал.

И не можешь пояснить что имеешь в виду.

Чем отличается догма от аксиомы?

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

Догму можно только цитировать.

Как узнать, что разработчик задумал, а что нет?

Внезапно, спросить.

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

В СПО в тесткейсах и мануале.

Тогда повторю то, что задавал alpha

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

(Об этом имеется ввиду — https://github.com/systemd/systemd/issues/6237)

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

просто глоток чистого воздуха после upstart

Хо хо хо. Фу таким быть.

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

Зачем она мне нужна ?

Ну я не знаю, ты же поднял этот вопрос (о необходимости экспорта логов в remote syslog).

Я должен в каждой дерьморассылке теперь регистрироваться ради ненужного ? Поттеринг уже всё сказал в том баге.

Ты вообще в курсе, что существует процесс, и нарушение процесса — это, как было выше сказано, либо неуважение, либо невежество?

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

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

Внезапно, спросить.

Очень удобно, ведь:

задуманное != задокументированное

И если кто не согласен, можно ссылаться на тебя, ведь у тебя есть отличное определение бага:

Багом называется поведение не соответствующее задуманному разработчиком

Круг замкнулся.

А потом рапортовать перед начальством, нуль багов за целый %PERIOD%

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

Это не круг замкнулся. Это у тебя в голове каша.

Баги - это не маркетинговая игрушка, и не способ вывести разработчика на чистую воду (что это за бред вообще).

Баги и rfe - это рабочий инструмент разработчиков софта. Они определяют чем вообще занимается их программа и зачем. Что входит в scope, а что нет.

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

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

Задуманное поведение — игнорирование такой директивы с выдачей предупреждения в момент загрузки юнита.

Мне всегда казалось, что игнорирование и запуск от рута - весчи разные. Когда игнорируют, - просто не запускают. А когда запускают от рута, - это уже не игнор, а неочевидное поведение по дефолту. Вот пример из программирования:

float a;
a="Hello World";
printf("%f\n", a);

Если компилятор в ответ на такое выдаст что-то вроде

ошибка: incompatible types when assigning to type «float» from type «char *»

и откажется компилять дальше, то это будет игнор моего кривого кода. Если же вместо этого он выведет ворнинг в какой-нибудь лог, который обычно смотрят, только когда что-то не работает, и откомпилит, то это не игнор, а неочевидное поведение, чреватое серьёзными проблемами в дальнейшем.

И можно сколько угодно называть подобное поведение «фичей» и во всём винить криворуких программистов и админов, но большинство багов и уязвимостей проявляются не сами по себе, а в сочетании с ошибкой пользователя/админа/программёра и т. д. Поэтому защита от дурака - очень важный момент. Иногда ради гибкости ею жертвуют (например, в том же си для возможности создания хаков), тогда это действительно можно считать фичей. Но какие преимущества даёт запуск демона от рута, если это не было явно указано в конфиге? Иначе говоря, в чём тут «фича»?

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

Они определяют чем вообще занимается их программа и зачем. Что входит в scope, а что нет.

Опять 25. Где определяют? У себя в голове? И при неудобных случаях можно всегда сказать что это так и было задумано.

Баги - это не маркетинговая игрушка, и не способ вывести разработчика на чистую воду (что это за бред вообще).

Какие баги? Багов нет. Я ссылаюсь на твое определение. А разработчик говорит just as planned.

Но соглашается на эти изменения разработчик.

Или кто-то выше приходит, даёт по шапке и гордый разработчик исправляет, ой пардон, _меняет_.

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

Отбрасывание невалидных директив в конфигурационных файлах - не ошибка, а задуманное поведение. Так делают очень многие сервисы, включая saltstack, git и т.п.

В git это приводит к запуску кода от рута вместо обычного пользователя?

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

И тут истерика и заговор разработчиков.

Пожалуй хватит на сегодня. Как перестанете играть в войнушку в багтрекерах, приходите.

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

заговор разработчиков

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

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

В git уже не помню с какой конкретно опцией была проблема. В saltstack например если не применяется опция merge_all это приводит к другому способу мерджа двух деревьев параметров, что может привести к некорректной конфигурации целого парка машин.

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

Вы сначала придумываете врагов, а потом придумываете еще более страшных врагов-из-тени, которые первым «дадут по шапке».

Да, это конечно проще чем почитать открытый лист рассылки на freedesktop.org где взрослые люди обсуждают и решают спорные вопросы. Мы-то здесь на ЛОРе вывели их уже на чистую воду.

В общем мне пора уже к этому привыкнуть конечно.

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

взрослые люди обсуждают и решают спорные вопросы.

А в чём «спорность» вопроса? Я задавал вопрос intelfx в каменте Леннарт Поттеринг удостоен премии Pwnie Awards 2017 (комментарий) . Процитирую его ещё раз:

Мне всегда казалось, что игнорирование и запуск от рута - весчи разные. Когда игнорируют, - просто не запускают. А когда запускают от рута, - это уже не игнор, а неочевидное поведение по дефолту. Вот пример из программирования:

float a;
a="Hello World";
printf("%f\n", a);

Если компилятор в ответ на такое выдаст что-то вроде

ошибка: incompatible types when assigning to type «float» from type «char *»

и откажется компилять дальше, то это будет игнор моего кривого кода. Если же вместо этого он выведет ворнинг в какой-нибудь лог, который обычно смотрят, только когда что-то не работает, и откомпилит, то это не игнор, а неочевидное поведение, чреватое серьёзными проблемами в дальнейшем.

И можно сколько угодно называть подобное поведение «фичей» и во всём винить криворуких программистов и админов, но большинство багов и уязвимостей проявляются не сами по себе, а в сочетании с ошибкой пользователя/админа/программёра и т. д. Поэтому защита от дурака - очень важный момент. Иногда ради гибкости ею жертвуют (например, в том же си для возможности создания хаков), тогда это действительно можно считать фичей. Но какие преимущества даёт запуск демона от рута, если это не было явно указано в конфиге? Иначе говоря, в чём тут «фича»?

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

Спорный потому что вызвал спор. Аргументы сторон есть в баге и в листе рассылки.

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

К этому аргументу есть контр-аргументы, там же.

Можно их не перечислять здесь опять, а пойти наконец посмотреть исходное обсуждение и к чему оно в итоге пришло?

P.S. в твоем примере падение компилятора это не игнор. Игнор это когда например браузер отображает верстку несмотря на незакрытые теги html

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

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

Ещё раз: пропуск, это когда невалидный код не запускается, а в лог/на консоль вываливается сообщение об ошибке. Тогда админ сразу увидит, что сервис не поднялся, посмотрит в лог, поймёт причину ошибки (а если не поймёт, то зайдёт на тот же ЛОР и спросит) и всё исправит.

Если же невалидный код запускается с небезопасными дефолтными настройками, то это не пропуск, а неочевидное поведение, как я уже говорил. В этом случае у админа всё заработает, и он вообще не полезет в лог. А когда-нибудь это может очень серьёзно аукнуться.

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

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

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

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

P.S. в твоем примере падение компиляторв

Падение, это когда программа (в данном случае компилятор) падает с созданием core-файла. А у меня не падение, а адекватная реакция на ошибку.

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

Тебе казалось.

Очень содержательное и конструктивное замечание. Я так понимаю, что других аргументов нет? Хотя о чём я спрашиваю? Очевидно же, что ответом будет:

Ты так понимаешь.

:-)

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

Какой вопрос — такой и ответ. Если у тебя в голове помойная яма из понятий и собственных представлений, приправленная подходом «МНЕВСЕДОЛЖНЫ», и ты даже не в силах следить за контекстом спора (или специально его игнорируешь), что я могу сделать?

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.