LINUX.ORG.RU

Бэкдор в xz/liblzma

 , , ,


1

0

Ъ: https://openwall.com/lists/oss-security/2024/03/29/4

Не хочу писать перевод в новости, лучше почитать в оригинале про то как бэкдор попадает в код, как казалось бы liblzma влияет на ssh и как он через линкер подменяет функции openssl.

musl-based дистрам можно выдохнуть, более-менее старым тоже, так как бэкдор появился относительно недавно (?)



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

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

Зато у них в автотулзах test x"$var" = "xyes" ради совместимости с какими-то древними шеллами. Вдруг какой-нибудь анон соберёт их под оригинальный Unix!

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

ради совместимости с какими-то древними шеллами. Вдруг какой-нибудь анон соберёт их под оригинальный Unix!

Похоже что последним таким аноном который ковырялся со всем этим барахлом и началом истории autotools, был я:

Собираем Perl прямиком из 1987 года

^__^

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

Я вообще очень офигеваю с людей, кто на фоне подобных высеров начинает ругать питон. Да по сравнению с sh, питон просто божественен

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

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

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

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

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

Если не знаешь синтаксис языка - таки да, нереально. По факту, прилетает портянка на тысячу строк, мэйнтейнер пакета бегло пробежался по коду, вроде всё ок, явного system(/bin/sh) нет, все ок. Это от языка мало зависит.

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

Синтаксис бывает удобопонимаемый и неудобопонимаемый. И шелл скрипты явно неудобопонимаемый синтаксис имеют

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

Лично я про питон знаю, что он есть. Его синтаксис насколько удобочитаем? Когда в репозиторий прилетит обнова на полтыщи строк, насколько тщательно мэйнтейнеры будут проверять код? Когда я предлагал NMU обновление С++ проекта в дебиан с диффом на много сотен строк, его приняли часов так через восемь. С++ удобочитаем?

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

Его синтаксис насколько удобочитаем?

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

С++ удобочитаем?

It depends. На C++ можно писать как нормально так и абсолютно неудобопонимаемую лапшу из смеси макросов и шаблонов, а если еще и выведение типов туда засунуть, то код легко может стать самообфусцированным

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

В то время как на шелле написание нечитаемой лапши это скорее общая практика, порой ощущение что среди шелл-программистов проходит негласное соревнование кто напишет более неудобопонимаемую кашу

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

It depends

Это о любом языке. Появится в проекте автогенерируемый файл - скорее всего придется для него отключать линтер. А читаемость - понятие весьма субъективное. В языках есть свои традиции, идиомы. Например, неподготовленного конструкция типа while(*a++=*b++); может вогнать в тоску.

Человек оказался слабым звеном. Дал доступ к репозиторию мошенникам на доверии - получи, распишись. И от языка автогенеренного скрипта вот это вот все мало зависит.

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

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

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

В контексте хз-эпика язык не решает от слова совсем. Автогенеренная хрень нечитаема практически на любом языке. И психов, готовых ее разбирать, сильно не хватает. Считаю, что СОЦИАЛЬНУЮ проблему опенсорса техническими наворотами ${language_name} не решить от слова «совсем».

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

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

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

Человек оказался слабым звеном.

нейросети напустить на это дело. пусть ловят внезапные странные изменения, всякие там корреляции активностей, странных изменений и проч.

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

нет. несколько нейросетей будут проверять консистенси и промеж ними конкуренция с арбитражем. и вот уже решения арбитра тоже нейросети - кожаный мешок.

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

В оконцове кожаный мешок бегло смотрит выхлоп из сотен строк и жмет «Ok». Ибо рядом женский голос «Хочу морковки», детские голоса «давай рубиться в игрулю». Атака стала изощреннее, но прошла. Тут вспоминаются «Зенитные кодексы Аль-Эфесби» одного своеобразного аффтара.

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

На C++ можно писать как нормально так и абсолютно неудобопонимаемую лапшу из смеси макросов и шаблонов

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

В то время как на шелле написание нечитаемой лапши это скорее общая практика

На скриптоте, не только на шелле. Хотя на шелле это более всего заметно, но проблема общая.

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

Я более 10 лет работаю программистом и за эти годы видел немало и хорошего и отвратительного кода на с++. Но я ни разу не видел хорошего sh кода длиннее 50 строчек

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

Я более 10 лет

Это сразу мимо.

работаю программистом и за эти годы видел немало и хорошего и отвратительного кода на с++

Ну про отвратительный я сказал выше. А так, ты сравниваешь просто левую муру - хороший код на X vs плохой код на X. Это не имеет смысла. Сравнение должно быть такое: хороший/плохой код на X vs хороший/плохой код на Y. Там уже будет нужная разница. Только с sh сравнить не получиться, потому как

Но я ни разу не видел хорошего sh кода длиннее 50 строчек

и в целом больше 1000(не копипасты кодогеном) на sh нет. А если и есть, решаются на порядки более простые задачи. Пистон можно попробовать вместо sh(с минимумом сишных либ) - это лучше sh и может быть там хоть с объёмами кода получше.

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

Нет, на C++ нельзя написать лапшу

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

И да, макросы не являются C++

с какого перепуга? всегда являлись, а сегодня вдруг нет. это странно.

Просто в сишке они немощные

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

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

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

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

Ты ничего не знаешь о C++. К тому же, это опять сравнение хороший код на C++ vs плохой код на C++. Подучи логику.

с какого перепуга? всегда являлись, а сегодня вдруг нет. это странно.

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

давай ты не будешь упоминать сишку

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

она работает уже много лет и всё там отлично

Ну и? Я где-то писал что она не работает либо к чему этот пассаж?

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

Да, это вопрос квалификации. Только здесь это не имеет смысла, здесь имеет смысл насколько коряво можно написать на языке. Вот, С++ позволяет написать, проще говоря, плохо, но безнадёжно. А макросня/скриптота позволяет написать совсем плохо.

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

Ты ничего не знаешь о C++. К тому же, это опять сравнение хороший код на C++ vs плохой код на C++. Подучи логику.

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

О сишке ты также ничего не знаешь.

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

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

Зачем ты мне это пишешь? Сколько ты там штаны протираешь ничего не значит.

Вот есть собака, ей 1000 лет. Она там бегала по помойкам, ещё когда ни тебя, ни твоих родителей и прочей домовой книги не существовало. Значит ли это, что собака что-либо понимает лучше тебя? Нет. Хотя в твоём случае, возможно, да.

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

Являются, описаны в стандарте С++.

Нет, не являются. Из «описана в X» никак не следует «является частью X».

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

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

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

Именно так.

Нет, не являются. Из «описана в X» никак не следует «является частью X».

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

Что вижу я?

libc часть стандарта ANSI C
ANSI C — стандарт языка C

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

Теперь переходим к определению части:

Предмет, являющийся составным элементом какого-н. целого, организма, механизма.

Является? Является.

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

Именно так.

Именно нет.

Верно говоришь, но она там не просто описана, поэтому к нашему разговору твой разбор никак не относится.

Ну т. е. слился. Молодец.

Давай ты лучше дашь полное определение что такое часть языка

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

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

Никакие ссылки ничего не значат, как и «никто другой не согласится». Обосновывай необходимость каких-то ссылок/согласия.

libc часть стандарта ANSI C ANSI C — стандарт языка C

Совсем плохо. Тебе нужно показать «часть языка», а не «часть стандарта языка». Стандарт частью языка не является по определению.

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

Верно говоришь, но она там не просто описана, поэтому к нашему разговору твой разбор никак не относится.

Ну т. е. слился. Молодец.

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

Никакие ссылки ничего не значат, как и «никто другой не согласится». Обосновывай необходимость каких-то ссылок/согласия.

Ты по своей тупости можешь считать «частью языка» что угодно, я не могу никак доказать тебе что stdlib, или препроцессор часть языка, если ты готов считать частью языка, только какой то свой бред, я же оперирую общедоступными, принятыми определениями, об этом ниже.

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

Совсем плохо. Тебе нужно показать «часть языка», а не «часть стандарта языка».

Когда я говорю С, я подразумеваю язык определенный каким либо из стандартов ANSI C, C99, ..., твой хоумпрожект компилятор я не рассматриваю. Если для тебя язык С, это любая наколеночная поделка не следующая стандарту, то там препроцессора может не быть, да. Я только не понимаю зачем в таком случае ты споришь, никто этими поделиями все равно не пользуется.

показывай взаимодействие языка с макросами

// Невозможно определить макрос
#define END }

// Доступ к сущностям языка
__func__
MOPKOBKA ★★★★
()
Последнее исправление: MOPKOBKA (всего исправлений: 4)
Ответ на: комментарий от MOPKOBKA

Где демонстрация оперирования макросами посредством языка? Обделался и проигнорировал, балабол?

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

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

Ты по своей тупости можешь считать «частью языка» что угодно, я не могу никак доказать тебе что stdlib, или препроцессор часть языка, если ты готов считать частью языка, только какой то свой бред, я же оперирую общедоступными, принятыми определениями, об этом ниже.

То что ты ничего не можешь доказать(или хотя бы попытаться) я и так вижу. Прятки за «общедоступными, принятыми определениями»(90% создаными овщами для овощей) без обоснований мне не интересны.

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

Это мимо. Для начала нужно ответить за противоречия в твоей теории. Как ответишь, уже будешь требовать что-то.

Когда я говорю С, я подразумеваю язык определенный каким либо из стандартов ANSI C, C99, …, твой хоумпрожект компилятор я не рассматриваю. Если для тебя язык С, это любая наколеночная поделка не следующая стандарту, то там препроцессора может не быть, да.

Какая разница, что ты там подразумеваешь?

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

Ты про «ANSI C»? Да, им никто не пользуется(за исключением хэлвордов/лаб). Опять опозорился.

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

Прятки за «общедоступными, принятыми определениями»

Понял,

1. Ты отказываешься использовать стандартные, распространенные определения для слов и терминов

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

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

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

Ну вот, совсем поломался и начал открыто врать. Что ты спастил?

Прятки за «общедоступными, принятыми определениями»

Что должен был спастить:

Прятки за «общедоступными, принятыми определениями»(90% создаными овщами для овощей) без обоснований мне не интересны.

Неудобное просто проигнорировал. Ладно, с фантазиями не ко мне.

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

Зато у них в автотулзах test x"$var" = «xyes» ради совместимости

хуес - он и вафрике хуес :о)

sunjob ★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.