В далеком 1984 году легендарный Кен Томпсон, создатель языка программирования C и операционной системы UNIX (вместе с Деннисом Ритчи), опубликовал классическую лекцию «Размышления о доверии к доверию» (Reflections on Trusting Trust), в которой наглядно показал, как можно внедрить троян в бинарный файл с помощью «бага» в компиляторе.
Триггер для внедрения трояна в бинарный файл содержится в исходном коде компилируемой программы и может выглядеть как тривиальная функция. Если вы не знаете, как работает «жучок» в компиляторе, то даже самое тщательное изучение исходного кода программы не выявит в ней никаких опасностей. Но скомпилированный файл будет уже заражен.
Кен Томпсон продемонстрировал атаку подобного типа через компилятор C и программу, написанную на C. Но то же самое можно сделать и через любую другую систему интерпретации: ассемблер, загрузчик, даже аппаратный микрокод. И чем глубже сидит «жучок», тем сложнее его обнаружить, а баг, например, в аппаратном микрокоде обнаружить почти невозможно.
Главный вывод, который делает гуру компьютерной науки — никакое количество верификации исходных кодов или контроля не защитит вас от угрозы. Вы не можете доверять никакому коду, если вы только не написали его сами, особенно нельзя доверять «коду от компаний, которые берут на работу таких как я», писал Томпсон 29 лет назад (что интересно, сейчас он работает в компании Google).
Вероятно, именно классическая статья Томпсона подтолкнула голландского программиста Йоса ван ден Увера (Jos van den Oever) провести проверку популярных дистрибутивов Linux. Программист просто захотел проверить, можно ли самостоятельно из предоставленных исходных кодов скомпилировать бинарный файл, который побитно совпадает с бинарным файлом, распространяемым официально.
Ван ден Увер ни разу так и не смог скомпилировать двоичный файл, совпадающий с аутентичным. Это и не удивительно. Например, компилятор GCC из одних и тех же исходников выдает всегда разные версии бинарного файла, из-за разных меток времени. В этом смысле Clang/LLVM понадежнее: он хотя бы позволяет получить одинаковые бинарные файлы из одних и тех же исходников, даже если компилировать их на разных машинах.
Таким образом, проверить соответствие исходных кодов Linux и распространяемого бинарного файла не представляется возможным.
Все так. И это очень серьезная проблема. Поэтому я всегда и говорю, что важно не только насколько хорош дистрибутив сам по себе, но и кто именно за ним стоит и кто берет на себя ответственность за него.
Ну вот сначала новость о том, что мировые американские IT-гиганты напрямую сливают данные АНБ(предоставляют прямой доступ к любой информации через PRISM), потом новость о том, что MS за пол-миллиарда выдала АНБ свои коды, затем в SKYPE обнаружили аэнбэшный бэкдор...
Только настроился мигрировать на Linux и на тебе - он тоже опасный, вы провоцируете у меня жесточайшую паранойю.
Как страшно жить!!!
Сделал из фольги экранированный шлем, съел паспорт, порезал кредитку, поломал симку, удалил все аккаунты в соц.сетях, по окончании написания этой статьи запущу шредер, заклею эмальгамой окна, забарикадирую двери и накроюсь одеялом - меня нет - я в домике.
в дурдомике)))
Собственно, все эти новости новостями не являются и сводятся к известной поговорке о бесплатном сыре. И смысл размещения этих статей на Либератуме в том, чтобы напомнить юзерам, что в мышеловке нужно стараться вести себя по возможности осторожней, чтобы она в один совсем не прекрасный момент не сработала. ;)
Это отключается какой-то опцией (не помню). Но обычно не отключают как раз именно для подтверждения, что версия была собрана именно в это время. Это важно при отладке некоторых вещей в ядре.
Прикол в том, что это выражение верно всегда для любого случайного события, в том числе и угрозы.
Отправить комментарий