Открытость ПО в рпм-дистрибутиве.

Автор: OX Дата: 29.02.2008 15:44 Навеялся вопрос интересный.Да,когда собираешь ПО из исходников всегда можно(если хватает знаний) проверить код на предмет троянов и тп,а можно ли это сделать в рпм-дистрибе?Или выбирая рпм-дистрибутив,мы, как в случае с виндой, должны доверять производителю?
Re: Открытость ПО в рпм-дистрибутиве. 29.02.2008 15:52Zebra В данном случае вернее будет не производителю, а поставщику пакета, тому, кто его скомпилировал. Ты же не можешь восстановить из бинарников исходники, поэтому, либо компилишь сам, проверив код, и тогда ты уверен, что это 100% "правильная программа", либо доверяешь кому-то это сделать. Неважно кому - соседу, коллеге, фирме Red Hat или лично Торвальдсу - неважно.
Re: Открытость ПО в рпм-дистрибутиве. 29.02.2008 16:01kramer А кто мешает энто всё пересобрать энто всё? Хотя я представляю, как вы ковыряете исходник Open Office, пытаясь там вирус найти...
Re: Открытость ПО в рпм-дистрибутиве. 29.02.2008 16:16OX Говоря "Производитель" имел ввиду производителя дистрибутива.
Насчет "пересобрать все..." напрашивается вопрос:нафига тогда рпм?Улыбка
Re: Открытость ПО в рпм-дистрибутиве. 29.02.2008 16:22nektofil рпм, в первую очередь нужен для того,
чтобы в системе порядок был. чтобы
было (как минимум) видно что от чего
зависит. ну а максимум зависит от вашей
фантазии.
Re: Открытость ПО в рпм-дистрибутиве. 29.02.2008 16:26OX Да,но если пересобирать "все",то наверно о зависимочтях не очень следует беспокоиться:-)
Re: Открытость ПО в рпм-дистрибутиве. 29.02.2008 16:39lg >Да,но если пересобирать "все",то наверно о зависимочтях не очень следует беспокоиться:-)
Ну после первой же попытки обновления таким способом вы сразу поменяете свое мнение.
Re: Открытость ПО в рпм-дистрибутиве. 29.02.2008 16:44OX Ну насколько я понимаю есть вариант сборки из исходников с зависимостями,типо генту?
Re: Открытость ПО в рпм-дистрибутиве. 29.02.2008 17:04kramer Здесь одно из двух - либо пересобираете всё сами (кстати, rpm c исходниками тоже бывают), либо доверяете тем, кто собрал... Ну ещё, конечено есть вариант дизассемблирования (ИМХО, для тех, кто на голову не очень здоров).
Re: Открытость ПО в рпм-дистрибутиве. 29.02.2008 17:06kosmonavt *.src.rpm чем не устраивает?
Re: Открытость ПО в рпм-дистрибутиве. 29.02.2008 17:07kosmonavt >проверить код на предмет троянов

[khpi-iip.mipk.kharkiv.edu] Улыбка
Re: Открытость ПО в рпм-дистрибутиве. 29.02.2008 17:15OX Космонавт,спасибо за интересную ссылочку.Я правда не программер,но вывод прочитал:-)
Re: Открытость ПО в рпм-дистрибутиве. 29.02.2008 17:16kramer kosmonavt, спасибо за ссылку на блестящую статью. Хотел написать что-то подобное от себя, но лучше не скажешь...
Re: Открытость ПО в рпм-дистрибутиве. 29.02.2008 22:25Zebra В оббщем случае автор указанной статьи прав. Однако предположение о том, что каждый будет писать программы, какие ему нужно, попахивает утопией, да автор этого и не имеет в виду. Автор имеет в виду, имхо, что нельзя доверять кому попало и нужно постоянно помнить о том, что, кому и почему Вы доверили. Я понял так. Замечательная статья.
Re: Открытость ПО в рпм-дистрибутиве. 01.03.2008 12:55kramer > В оббщем случае автор указанной статьи прав. Однако предположение о том, что каждый будет писать программы, какие ему нужно, попахивает утопией, да автор этого и не имеет в виду. Автор имеет в виду, имхо, что нельзя доверять кому попало и нужно постоянно помнить о том, что, кому и почему Вы доверили.

А ещё автор имеет в виду, что пытаться расковырять текст чужой программы в попытке найти там вирус - зачастую бесполезное занятие, поскольку при желании его можно там спрятать так, что не найдёт даже толковый программер, а не то что любитель вроде меня...
Re: Открытость ПО в рпм-дистрибутиве. 01.03.2008 15:51Zebra Ну, если честно сказать (я пишу достаточно аккуратно в смысле оформления) и свои программы по прошествии некоторого времени читаешь с трудом. Даже если они обильно комментированы. Что же говорить про чужие? В очень многих случаях программу легче переписать самому, чем найти в ней ошибку. А уж о специально спрятанных зловредных подпрограммах и говорить нечего, разве что сразу в глаза бросится. А будешь специально искать - не найдешь.
Re: Открытость ПО в рпм-дистрибутиве. 01.03.2008 16:28kosmonavt >А ещё автор имеет в виду, что пытаться расковырять текст чужой программы в попытке найти там вирус - зачастую бесполезное занятие

На самом деле возможно. Крякеры, которые обходят защиту лицензионных программ, все время работают с бинарниками (по отношению к крякерам защиту можно рассматривать как троян). Да и дыры в закрытом софте находят без наличия на руках исходников -- методы отработаны. Трюк с компилятором предполагает, что его исходники закрыты или не доступны исходники старых версий. Генерация трояна компилятором не гарантирует того, то вражеский код будет вставлен бинарник: достаточно немного подправить строку так, чтобы она не соответствовала "pattern", все -- нет трояна.
Re: Открытость ПО в рпм-дистрибутиве. 01.03.2008 17:46mirw > Трюк с компилятором предполагает, что его исходники закрыты или не доступны исходники старых версий.

Не совсем так. Трюк с компилятором предполагает, что недоступны исходники какой-то одной промежуточной версии. В более старых и более новых исходниках багов нет - они один раз попали в двоичный код, в нём и живут и исправить их можно только там, а не в исходных текстах.
Re: Открытость ПО в рпм-дистрибутиве. 01.03.2008 17:49kramer kosmonavt, а я и не говорю, что не возможно. Дизассемблировать то можно всё. Единственное, я не думаю, что каждую скаченую open source программу (бинарники и подавно) нужно шерстить в поисках трояна. У меня лично времени нет. Остаётся надеяться, что OpenOffice Writer или GIMP не снимут деньги со счёта... (я думаю, что разобрать их исходный текст - месяц работы как минимум).
Re: Открытость ПО в рпм-дистрибутиве. 01.03.2008 17:52mirw Тьфу, блин! Мораль в том, что если баг в двоичном коде компилятора, то бесполезно шерстить исходники - в них ничего нет.
Re: Открытость ПО в рпм-дистрибутиве. 01.03.2008 18:14kosmonavt >Мораль в том, что если баг в двоичном коде компилятора, то бесполезно шерстить исходники - в них ничего нет.

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

Т.е. баг нельзя обнаружить, если нет исходников всех версий компилятора.
Re: Открытость ПО в рпм-дистрибутиве. 01.03.2008 18:19mirw Правильно! Внесли трояна в исходники, скомпилировали, исходники уничтожили и всё. Больше ни в каких исходниках: ни в старых, ни в последующих трояна этого нет. Он жив только в двоичном коде компилятора. В текущей и в последующих версиях. И ещё в коде программ, которые создаются с помощью этого компилятора.

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

Это конечно паранойя. Открываем дружно двоичный редактор и все пишем свой собственный компилятор!
Re: Открытость ПО в рпм-дистрибутиве. 01.03.2008 18:31kosmonavt Блин, не успел отредактировать Улыбка Повторюсь

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

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

Т.е. баг нельзя обнаружить, если нет исходников всех версий компилятора.
Re: Открытость ПО в рпм-дистрибутиве. 01.03.2008 18:34kosmonavt Где гарантия, что баг вставится? Слабость метода вставки бага в его сложности. Изменили немного код -- match("pattern";-) не работает.
Re: Открытость ПО в рпм-дистрибутиве. 01.03.2008 18:47mirw В статье упрощённый пример приведён. В реальности совсем не обязательно трояна писать на Си. Его можно сразу в машинный код компилятора воткнуть так, что он будет копироваться в любой другой машинный код, создаваемый этим компилятором.


> Изменили немного код -- match("pattern";-) не работает.

Не понял, код чего изменили? Вы имеете ввиду исходный текст? В общем случае это бесполезно уже.
Re: Открытость ПО в рпм-дистрибутиве. 01.03.2008 18:54kosmonavt >Не понял, код чего изменили? Вы имеете ввиду исходный текст?

Исходник того места, которое соответствует "pattern", той проги, в которую вставляем троян. match("pattern";-) должен реагировать только на него, иначе повставляет баги по всей проге и не только в этой проге -- сразу же обнаружится неадекватное поведение компилятора. Это самое слабое место в идее.
Re: Открытость ПО в рпм-дистрибутиве. 01.03.2008 19:11kosmonavt Злоумышленник должен сделать match("pattern";-) способным распознать семантику.
Re: Открытость ПО в рпм-дистрибутиве. 01.03.2008 21:50Zebra А не проще тогда уж компилятору не нарушать структуру программы, которую он компилирует, а просто создать скриптовый текстовый файл при компиляции, лучше скрытый и запустить его на выполнение в фоне. Че голову ломать?
Re: Открытость ПО в рпм-дистрибутиве. 01.03.2008 23:31Bircoph > лучше скрытый

Насмешили. С каких это пор скрытые файлы в Unix не видны.

> и запустить его на выполнение в фоне.

Будет сразу видно в списке процессов.
Re: Открытость ПО в рпм-дистрибутиве. 02.03.2008 09:51wusup Фигня какая-то, все эти бинарные вставки легко отследить в отладчике, т.е. отлаживая любую программу, ты неизменно обнаружишь такую вставку.
Re: Открытость ПО в рпм-дистрибутиве. 02.03.2008 10:33Zebra Все правильно, Bircoph, на всякую хитрую гайку есть специальный винт, однако я ж писал не руководство к действию, а упрощенный пример
Re: Открытость ПО в рпм-дистрибутиве. 03.03.2008 11:38kramer wusup писал(а):

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

Если отлаживаешь на уровне ассемблера. А если прямо на уровне C - ни хрена, поскольку компилер может сделать и два десятка инструкций для одной строки C. Или в Linux все отлаживают только на уровне машинных кодов?
Re: Открытость ПО в рпм-дистрибутиве. 03.03.2008 11:43OX Ух,сколько про программирование написали..Но я зря наверно не упомянул суть вопроса,о которой думал.
Моя логика:
Микрософту доверяют многие,причем зря,пример обновлений это показал.Многие считают,что Микрософт это программный контроль остальных Америкой.Один из приоритетов переходу на свободное ПО,отсутствие троянов в нем и дыр для спецслужб.Но получается мы никак не можем быть уверенными в производителях дистрибутивов линукса,и в их независимости,до тех пор пока не будет создаваться действительно "российский дистрибутив",и он будет проверяться(с такой же тщательностью как ядро линукса) спецами органов:-).
А до тех пор получается,что трувей путь линуксоида=самому быть крутым программером(или уметь определять "троянские" вставки в код)+собирать все лично руками.
Re: Открытость ПО в рпм-дистрибутиве. 03.03.2008 11:59wusup >Если отлаживаешь на уровне ассемблера. А если прямо на уровне C - ни хрена,

Это как так на уровне C ? Не умею. Или имеется ввиду трассировка?

>Или в Linux все отлаживают только на уровне машинных кодов?


Ассемблер он и в Африке ассемблер, от системы не зависит.
Re: Открытость ПО в рпм-дистрибутиве. 03.03.2008 13:49BigAndy >Ассемблер он и в Африке ассемблер, от системы не зависит
????
нефкурил....
И от типа процессора не зависит?
Re: Открытость ПО в рпм-дистрибутиве. 03.03.2008 15:23kramer > Ассемблер он и в Африке ассемблер, от системы не зависит.

Ассемблер-то не зависит (mov ax, bx сработает на всех интеловских процах в любой ОС), но ведь программируя на ассемлере под Linux вы обращаетесь к системным вызовам функций Linux, под Windows - WinAPI, под DOS - int 21h, и т. п. Т. е. то, как вы программируете, как раз таки зависит.

По поводу отладки - да, я имел ввиду трассировку (возможно, сочтёте непрофессиональным, но я любитель). Хотя не понимаю, зачем отлаживать программу, написанную на C на уровне ассемблера и почему бы тогда не писать прогу сразу на ассемблере (чтобы не разбирать лишний код, который навставляет любой компилятор)
Re: Открытость ПО в рпм-дистрибутиве. 03.03.2008 16:20kosmonavt >Хотя не понимаю, зачем отлаживать программу, написанную на C на уровне ассемблера

Эх, не сталкивались вы с gcc-2.96.
>Команда GCC отрицает все связи с GCC 2.96
[linux.yaroslavl.ru]

А как путался бормановский компилятор в вызове виртуальных функций -- это ж песня!
Re: Открытость ПО в рпм-дистрибутиве. 03.03.2008 16:57kramer kosmanavt, это точно. Компиляторы которыми я пользовался, генерировали код без ошибок. Слушайте, а что можно напутать с таблицей виртуальных функций? Ну сидит себе массив адресов (на этапе выполнения) и массив соответсвий имён и индексов в первом массиве (на этапе компиляции, ну или что-то в этом роде). Неужели разработчики компиляторов не могут по человечески заполнить эти таблицы?
Re: Открытость ПО в рпм-дистрибутиве. 03.03.2008 17:22kosmonavt >Неужели разработчики компиляторов не могут по человечески заполнить эти таблицы?

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

ЗЫ

Если под рукой окажется 6-й билдер, сравните sizeof(BITMAPINFO) с тем что должно быть (это мелочь всякая;-))
Re: Открытость ПО в рпм-дистрибутиве. 03.03.2008 20:48wusup >>Ассемблер он и в Африке ассемблер, от системы не зависит
>????
>нефкурил....
>И от типа процессора не зависит?

Да, на любом типе процессора, на любой операционной системе --- ассемблер называется ассемблером.
Re: Открытость ПО в рпм-дистрибутиве. 03.03.2008 22:11mirw Вы только отличайте ассемблер от машинного кода.
Трансляторов ассемблера всё, сказанное здесь про компиляторы, тоже касается.

Хотите спать спокойно? Пишите сразу машинный код. Улыбка
Re: Открытость ПО в рпм-дистрибутиве. 04.03.2008 00:23Bircoph Народ, вы белизны что ли объелись?

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

Уж что-то, а эти вещи проверяются тщательнейшим образом.
Я не раз видел, как разработчики разных проектов изучали
дизассемблированный код (обычно собственной) программы,
сгенерированной gcc, с целью понять, как и что это чудо
природы наоптимизировало. Так что, если бы в бинарных gcc
распостранённых дистрибутивов были подобные заклыдки, об этом
уже давно все бы орали. Кстати, аналогичные веши делают с
icc, bcc и т.п..

К тому же, gcc -- это не единственный компилятор, да и
исторически независимых сборок gcc много; мало того, сам
процесс компиляции gcc многоступенчатый (минимум 3 этапа) --
и утверждать, что закладка выживает все 3 этапа, да ещё и на
многих версиях и дистрибутивах -- чушь собачья.

Приведённый выше код исследование имеет академический
интерес, но не более того. На практике вероятность того, что
такая штука есть в gcc не больше вероятности того, что всех
сотрудников m$ и билла гея лично убъёт в течении суток
ударами молний.

А вот про доверие к "отечественному" дистрибутиву -- это
вообще нонсенс. Если допустить к модификации бинариев
определённые органы, то я более чем уверен, что они сделают
всё возможное, чтоб модифицировать, правда, специалистов у
них уже почти нет. Но в принципе нельзя создавать
изолированный дистрибутив под предлогом "отечественности",
т.к. существенно уменьшенная база пользователей приведёт
к существенно замедленному и ухудшенному процессу доводки
и отладки, который никогда не завершится; что приведёт к
обратному результату: дырявости и низкой работоспособности
вследствие нехватки человеческой силы для поддкржки системы.
Re: Открытость ПО в рпм-дистрибутиве. 04.03.2008 01:32Sm@cker > Народ, вы белизны что ли объелись?

Отбеливателя? о_О
Re: Открытость ПО в рпм-дистрибутиве. 04.03.2008 08:47beduin Sm@cker писал(а):

> > Народ, вы белизны что ли объелись?
>
> Отбеливателя? о_О
>
Тогда напились...
Re: Открытость ПО в рпм-дистрибутиве. 04.03.2008 09:15wusup >Хотите спать спокойно? Пишите сразу машинный код. Улыбка

Как-то прикололся на работе, в году вроде 2000 с помощью hex-редактора перевел программы на падонковский к 1 апреля. Сменившая меня бригада, вызывала программистов, в субботу, те репы чесали весь день, но так и не догадались, как так без исходников, без компилятора...
Re: Открытость ПО в рпм-дистрибутиве. 04.03.2008 11:59kramer > Они скрещивали бульдога с носорогом -- С++ и библиотеки дельфи.

Значит я был прав в том, что никогда не использовал C++ Builder - только Delphi, поскольку в первом здорово искажалась природа самого языка C++, а в Delphi саоразработанный язык Object Pascal работал прилично...
RSS-материал