Coreboot, оно же LinuxBIOS: компрометация ядра и его защита

(Июнь 2019, idb)

Агентство национальной безопасности США присоединилось к разработке одной из открытых подсистем, критично важных для общей безопасности компьютера. Имеет смысл отчетливо представлять, почему это плохо. И каким образом такие вещи лечатся.

Что происходит

В июне 2019 года стало известно, что крупнейшая в мире спецслужба, АНБ США, вполне официально подключилась к работам по развитию Coreboot, известного международного проекта ПО с открытыми исходными кодами. Суть этого проекта, если совсем кратко, сводится к созданию и продвижению свободно открытой альтернативы для закрытых проприетарных кодов в прошивках программно-аппаратного обеспечения BIOS/UEFI.

Если же чуть подробнее, то Coreboot, прежде известный под названием LinuxBIOS, – это большой и долгосрочный проект движения программистов за открытые исходные коды, нацеленный на то, чтобы всюду, где только возможно, заменять загрузочные системы BIOS или UEFI, характерные для подавляющего большинства нынешних компьютеров, на их более подходящие альтернативы. Под более подходящими имеются в виду существенно облегченные, простые и быстрые программно-аппаратные прошивки, разработанные для выполнения минимального количества задач, необходимых для загрузки и запуска современной операционной системы.

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

Нынешнее же подключение к проекту со стороны американской спецслужбы ознаменовало, в частности, такое событие. Специалист-программист АНБ Юджин Майерс (Eugene Myers) начал передавать в Coreboot исходные тексты своих программ, реализующих важную подсистему монитора-гипервизора STM или SMI Transfer Monitor для процессоров Intel x86. Согласно официальным данным с веб-сайта АНБ, Майерс работает там в составе Исследовательской группы доверяемых систем, задача которой декларируется как «проведение и спонсирование исследований в области таких технологий, которые будут защищать завтрашние инфосистемы Америки»…

Еще чуть ранее, в начале июня этого года, АНБ сделало другой щедрый жест – открыто опубликовав для всех и с исходными текстами свой инструментальный пакет ПО Ghidra, предназначенный для обратного инженерного восстановления программ по их исполняемому коду. Практически сразу же вслед за этим сообщество разработчиков Coreboot взяло этот инструментарий в использование, поскольку он сильно облегчает работы по восстановлению кодов в проприетарных прошивках микросхем.

С одной стороны, как можно видеть, здесь обозначился неожиданно благолепный процесс «единения профессионалов» из мощной государственной спецслужбы и из движения сторонников за свободное программное обеспечение. Глядя же со стороны другой, однако, нет абсолютно никаких оснований предполагать, что АНБ США делает свои щедрые подарки ради «всеобщего блага и безопасности».

Если же присмотреться к происходящему чуть более внимательно, то становится ясно, что у проекта Coreboot обозначились тут очень большие и неприятные проблемы…

Почему это плохо

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

Если говорить чуть конкретнее, то сегодня АНБ вполне способно подготовить, к примеру, такие исходные коды программ, которые незаметно, но радикально ослабляют общую защиту системы. Причем делается это столь искусно, что для выявления преднамеренного дефекта в исходном тексте кода требуются весьма опытные аналитики, глубоко понимающие тонкие нюансы в работе системы. О реальных ситуациях с такими хитростями в открытых исходниках ОС Linux и OpenBSD можно найти подробности в текстах «Такая вот паранойя»  и «Без срока давности» .

Кроме того, имея официальный доступ к обновлениям программ, АНБ может изначально предоставить вполне безопасный код, а чуть позднее, когда обостренное внимание к вкладу спецслужбы несколько ослабнет, незаметно встроить нужный бэкдор в обновленную версию. Нечто подобное – причем и без официального участия АНБ – происходило с компрометацией защиты коммуникаций в ОС компании Apple, см. материал «#gotofail: ошибка или умысел» .

Еще один хорошо известный и подробно задокументированный канал компрометации – это «давление авторитетом специалистов АНБ» на организации стандартизации. Чрезвычайно настойчивое, надо отметить, давление – как внутри США, так и в международном масштабе.

Среди сюжетов подобного рода наиболее знаменитой стала история вокруг разработки умельцев из АНБ под названием Dual_EC_DRBG или криптогенератор случайных чисел на основе эллиптических кривых. Этот алгоритм был поначалу одобрен NIST, Национальным институтом стандартов США, в качестве официально рекомендованной сильной криптографии – несмотря на обоснованные возражения независимых экспертов. А спустя еще несколько лет одобрение Dual_EC пришлось-таки скандально отменить и отозвать – когда убедительных свидетельств о преднамеренном ослаблении генератора стало совсем уж неприлично много (подробности можно найти в тексте «Параноид-генератор») .

Наконец, совсем свежий пример из того же ряда – это целая череда историй с очень настойчивым внедрением другой разработки АНБ, пары близко родственных криптоалгоритмов Simon и Speck. О бесславно провалившихся в 2017 году попытках США сделать эти алгоритмы всемирным криптостандартом под эгидой ISO, Международной организации стандартизации, с подробностями рассказывает материал «Ответственное крипто и другие формы обмана» .

Провал на этом направлении, однако, практически никак не повлиял на знаменитое упорство спецслужбы. И уже в 2018 ту же самую особенную АНБ-криптографию удалось пропихнуть в двух других местах международной стандартизации. Во-первых, в той же самой ISO – как стандарты защиты ISO/29167-21 (для Simon) и ISO/29167-22 (для Speck) – но только теперь не по криптографической линии, а в составе RFID-интерфейсов для беспроводной связи.

А во-вторых, совсем уж неожиданно почти для всех, в 2018 году алгоритм шифрования Speck стал вдруг новой неотъемлемой частью Linux, эталонной ОС с открытыми исходными кодами, – в очередном обновлении ядра операционной системы, версии Linux Kernel 4.17…

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

По той хотя бы причине, что это вполне конкретный рецепт для эффективного лечения подобных проблем. Ну а кроме того, еще и поучительное напоминание для всех, кто непременно будет сталкиваться с чем-то похожим и далее. Ни АНБ США, ни любая другая разведслужба ни под каким видом не должны присутствовать в разработке всеобщих систем защиты компьютера. Просто по той причине, что главная цель всякой шпионской спецслужбы – любыми средствами такие системы взламывать и ослаблять.

Как это лечится

Историю прошлогоднего проникновения АНБ в ядро Linux удобно и естественно сравнивать с историей нынешнего внедрения АНБ в среду разработчиков системы Coreboot, ранее известной как LinuxBIOS. Ибо между сюжетами этими имеется множество вполне отчетливых параллелей и соответствий. Отчего хотелось бы, чтобы и итог у двух историй оказался одинаковым.

У истоков обоих проектов стоят харизматичные личности, благодаря своим бесспорным достоинствам возглавляющие разработку систем и поныне. Линус Торвальдс подарил миру своё детище, свободную ОС Linux, почти тридцать лет тому назад и с тех пор благополучно пребывает у руля всемирного Linux-движения, успехи которого очевидны абсолютно для всех.

Рональд Минних в 1999 году запустил свой проект LinuxBIOS, нацеленный на создание открытого и свободного ПО для прошивки в микросхемы, инициализирующие работу железа компьютера перед загрузкой ОС. И с той поры данный проект вот уже 20 лет также возглавляет один и тот же энергичный человек, своим энтузиазмом постепенно сумевший привлечь не только большое число инженеров-разработчиков, но и интерес-поддержку со стороны заметных на рынке фирм-изготовителей оборудования (что в данном кропотливом деле принципиально важно для успеха всего мероприятия).

На каком-то из этапов развития в каждом из двух проектов обозначился совершенно особенный, сверх-влиятельный спонсор и участник в лице одной и той же мега-корпорации Google. Сколь важным стало участие Google в разработке новых версий ядра Linux даже объяснять, наверное, никому не надо. Достаточно лишь напомнить, что это ядро лежит в основе гиперпопулярной ныне мобильной ОС Android.

Что же касается LinuxBIOS, то здесь активное подключение Google к проекту произошло в 2006, и примерно тогда же Рон Минних принял приглашение стать штатным ведущим разработчиком этой корпорации. Вскоре после чего, начиная с 2007 и на протяжении последующих семи лет, создатели LinuxBIOS стали ежегодно получать от Google весьма ощутимые финансовые вливания, а попутно, в 2008, вся эта затея получила и новое название Coreboot. Найдя со временем свое место также и в Chrome, собственной программно-аппаратной платформе гугл-компьютеров.

Для нашей сдвоенной истории, однако, самым примечательным моментом является такой факт. Именно в тот же самый период около 2006 года вполне отчетливо обозначились и весьма особенные партнерские отношения между гранд-корпорацией Google и ведущими спецслужбами разведсообщества США, АНБ и ЦРУ. Подробности на данный счет можно найти в материале «Если спишь с собаками…» , а здесь этот факт непременно следует отметить по той причине, что именно Google стабильно выступает в качестве канала, по которому АНБ внедряется в движение свободного ПО.

В случае с ядром Linux достоверно известно, в частности, что именно по настоянию Google шифр АНБ Speck в августе 2018 был включен в код ядра, начиная с версии 4.17. Сделано это было, конечно же, исключительно «для повышения безопасности системы». А конкретнее, для того, чтобы обеспечить быстрое и полное низкоуровневое шифрование диска на Android-устройствах с недорогими и недостаточно быстрыми процессорами.

Учитывая уже общеизвестную репутацию АНБ во всем, что касается компрометации систем инфозащиты, а также и громкую историю с отвергнутым Speck в ISO, совсем неудивительно, что в сообществе разработчиков Linux-ядра тут же стала нарастать волна с острой критикой такой новации. Наиболее интересные подробности дискуссий в высшем эшелоне лидеров проекта, включая, естественно, и Линуса Торвальдса, остались за закрытыми дверями, впрочем.

Но вовсе не секрет, что именно в это время, в сентябре 2018, Торвальдс публично извинился перед всеми, с кем был излишне резок и груб в личном общении при обсуждении рабочих вопросов. И попутно объявил, что на какое-то время полностью отходит от дел, дабы с помощью специалистов серьезно подкорректировать свою манеру общения и «научиться понимать эмоции людей»… Тогда же, в сентябре 2018, стало известно, что в проекте принято решение о полном удалении криптоалгоритма Speck из ядра Linux, а уже в октябре начались и реальные работы в этом направлении – для версии Linux Kernel 4.20…

Что же касается текущей ситуации с развитием проекта Coreboot, то здесь общая картина с участием почти всех тех же самых персонажей – АНБ США и корпорация Google плюс главный лидер Рональд Минних – пока что находится в фазе, примерно соответствующей Linux Kernel в версии 4.17. В какую сторону отсюда двигаться дальше, в целом понятно, наверное.

Вопрос лишь в том, хватит ли на это воли и энергии у лидеров и разработчиков международного сообщества Coreboot.

Вместо эпилога

Как только в СМИ появились известия о подключении АНБ США к проекту Coreboot, на одной из дискуссионных веб-площадок профессионалов инфобезопасности имел место такой диалог.

Некто анонимный, укрывшись под псевдонимом «Who?», прокомментировал интересную новость так:

Если мне позволят поделиться моей личной точкой зрения относительно миссии АНБ, то я полагаю, что необходимы как наступательные, так и оборонительные возможности этого агентства. [… затем идут несколько возвышенных идей автора о том, как работают настоящие профессионалы спецслужб … ] Я думаю, что их работа над проектом Coreboot будет очень хорошо воспринята сообществом, которое нуждается в прошивках с открытым исходным кодом как альтернативе для UEFI.

В ответ на эти соображения другой участник дискуссии, под фламандским именем Gerard van Vooren, сказал следующее:

Если вы полагаете, что нам «необходимы как наступательные, так и оборонительные возможности АНБ», то вы наверняка янки. Иначе быть не может.
Если вы считаете, что «их работа над Coreboot будет очень хорошо воспринята сообществом», то вы, опять-таки, наверняка янки.
[… затем идут несколько комментариев о том, чего реально не хватает Coreboot, чтобы быть системой с правильной и просто устроенной безопасностью … ]
И позвольте мне сказать еще кое-что. НИ ОДИН человек, если он не американец, не любит то, что делает АНБ!

Здесь, конечно же, было бы к месту процитировать для полноты картины и совсем других профессионалов-американцев, которым тоже совершенно не нравится то, что на систематической основе делают с инфозащитой и АНБ США, и многие другие влиятельные спецслужбы разных стран.

Но вряд ли есть смысл пережевывать лишний раз и так вполне очевидное.

# # #

Дополнительное чтение:

Про то, как часто мир защиты информации оказывается похож на странный зоопарк. Где хитрость носорогов неотличима от их тупости, а лисам доверяют охранять курятник: «Плохой носорог, хороший носорог» , «Куриная слепота»

Про Google в постели с разведслужбами США: «Если спишь с собаками…»

Про изощренные бэкдоры, замаскированные под баги. В ОС с открытым исходным кодом: «Такая вот паранойя» (Linux) и «Без срока давности» (OpenBSD) . В закрытых проприетарных системах: «#gotofail: ошибка или умысел» (Apple) и «Хитрости крипторемесла» (Microsoft) . В компьютерном «железе»: «Параноид-генератор»

Про принцип NOBUS как шизофренический подход к укреплению инфобезопасности: «Шизо-криптография» , «Никто кроме нас»

Про активные попытки внедрения Speck и других криптоалгоримов АНБ в качестве мировых стандартов: «Ответственное крипто и другие формы обмана»

Про очень давние и глубокие традиции в делах компрометации BIOS и UEFI: «BadBIOS или Большие Проблемы» , «UEFI как SNAFU»

# #

Основные источники:

«NSA Starts Contributing Low-Level Code to UEFI BIOS Alternative,»
by Lucian Armasu. Tom’s Hardware, June 21, 2019

Google Sponsors the LinuxBIOS project (2006)

«NSA’s Encryption Algorithm in Linux Kernel is Creating Unease in the Community». It’s FOSS. August 12, 2018

«Linus Torvalds Reflects On How He’s Been Hostile To Linux Community Members Over the Years, Issues Apology, and Announces He Will Be Taking Some Time Off», Slashdot, September 16, 2018

«The Linux Kernel’s Speck Death Sentence Finally Being Carried Out», by Michael Larabel. Phoronix, 23 October 2018