html текст
All interests
  • All interests
  • Design
  • Food
  • Gadgets
  • Humor
  • News
  • Photo
  • Travel
  • Video
Click to see the next recommended page
Like it
Don't like
Add to Favorites

Кто компилирует компилятор и можно ли доверять открытому коду?

В далеком 1984 году легендарный Кен Томпсон, создатель языка программирования C и операционной системы UNIX (вместе с Деннисом Ритчи), опубликовал классическую лекцию «Размышления о доверии к доверию» (Reflections on Trusting Trust), в которой наглядно показал, как можно внедрить троян в бинарный файл с помощью «бага» в компиляторе. Триггер для внедрения трояна в бинарный файл содержится в исходном коде компилируемой программы и может выглядеть как тривиальная функция. Если вы не знаете, как работает «жучок» в компиляторе, то даже самое тщательное изучение исходного кода программы не выявит в ней никаких опасностей. Но скомпилированный файл будет уже заражен.

Кен Томпсон продемонстрировал атаку подобного типа через компилятор C и программу, написанную на C. Но то же самое можно сделать и через любую другую систему интерпретации: ассемблер, загрузчик, даже аппаратный микрокод. И чем глубже сидит «жучок», тем сложнее его обнаружить, а баг, например, в аппаратном микрокоде обнаружить почти невозможно.

Главный вывод, который делает гуру компьютерной науки — никакое количество верификации исходных кодов или контроля не защитит вас от угрозы. Вы не можете доверять никакому коду, если вы только не написали его сами, особенно нельзя доверять «коду от компаний, которые берут на работу таких как я», писал Томпсон 29 лет назад (что интересно, сейчас он работает в компании Google).

Вероятно, именно классическая статья Томпсона подтолкнула голландского программиста Йоса ван ден Увера (Jos van den Oever) провести проверку популярных дистрибутивов Linux. Программист просто захотел проверить, можно ли самостоятельно из предоставленных исходных кодов скомпилировать бинарный файл, который побитно совпадает с бинарным файлом, распространяемым официально.

Ван ден Увер ни разу так и не смог скомпилировать двоичный файл, совпадающий с аутентичным. Это и не удивительно. Например, компилятор GCC из одних и тех же исходников выдает всегда разные версии бинарного файла, из-за разных меток времени. В этом смысле Clang/LLVM понадежнее: он хотя бы позволяет получить одинаковые бинарные файлы из одних и тех же исходников, даже если компилировать их на разных машинах.

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


Читать дальше
Twitter
Одноклассники
Мой Мир

материал с xakep.ru

3

      Add

      You can create thematic collections and keep, for instance, all recipes in one place so you will never lose them.

      No images found
      Previous Next 0 / 0
      500
      • Advertisement
      • Animals
      • Architecture
      • Art
      • Auto
      • Aviation
      • Books
      • Cartoons
      • Celebrities
      • Children
      • Culture
      • Design
      • Economics
      • Education
      • Entertainment
      • Fashion
      • Fitness
      • Food
      • Gadgets
      • Games
      • Health
      • History
      • Hobby
      • Humor
      • Interior
      • Moto
      • Movies
      • Music
      • Nature
      • News
      • Photo
      • Pictures
      • Politics
      • Psychology
      • Science
      • Society
      • Sport
      • Technology
      • Travel
      • Video
      • Weapons
      • Web
      • Work
        Submit
        Valid formats are JPG, PNG, GIF.
        Not more than 5 Мb, please.
        30
        surfingbird.ru/site/
        RSS format guidelines
        500
        • Advertisement
        • Animals
        • Architecture
        • Art
        • Auto
        • Aviation
        • Books
        • Cartoons
        • Celebrities
        • Children
        • Culture
        • Design
        • Economics
        • Education
        • Entertainment
        • Fashion
        • Fitness
        • Food
        • Gadgets
        • Games
        • Health
        • History
        • Hobby
        • Humor
        • Interior
        • Moto
        • Movies
        • Music
        • Nature
        • News
        • Photo
        • Pictures
        • Politics
        • Psychology
        • Science
        • Society
        • Sport
        • Technology
        • Travel
        • Video
        • Weapons
        • Web
        • Work

          Submit

          Thank you! Wait for moderation.

          Тебе это не нравится?

          You can block the domain, tag, user or channel, and we'll stop recommend it to you. You can always unblock them in your settings.

          • XakepVideo
          • домен xakep.ru

          Get a link

          Спасибо, твоя жалоба принята.

          Log on to Surfingbird

          Recover
          Sign up

          or

          Welcome to Surfingbird.com!

          You'll find thousands of interesting pages, photos, and videos inside.
          Join!

          • Personal
            recommendations

          • Stash
            interesting and useful stuff

          • Anywhere,
            anytime

          Do we already know you? Login or restore the password.

          Close

          Add to collection

             

            Facebook

            Ваш профиль на рассмотрении, обновите страницу через несколько секунд

            Facebook

            К сожалению, вы не попадаете под условия акции