Дэвид Грэхем (David Graham) из компании Errata Security, один из лучгших специалистов по бэкдорам в микросхемах, опубликовал комментарий к вчерашней новости о китайском бэкдоре в военной микросхеме США. Дэвид Грэхем довольно скептически относится к находке Сергея Скоробогатова из компьютерной лаборатории Кембриджского университета. Он обращает внимание на несколько важных моментов, которые нужно понимать при чтении таких новостей.
Во-первых, бэкдоры в оборудовании являются обычным делом. Например, 20% домашних маршрутизаторов оснащены бэкдорами, как и 50% всех промышленных контроллеров SCADA. Далеко не все бэкдоры используются во вредоносных целях, а часто их наличие объясняется просто сложностью в разработке системы. Каждый такой продукт проходит тестирование и дебаггинг перед выпуском, и зачастую разработчики забывают отключить бэкдор дебаггера перед выпуском продукта. Проблема существует для всех встроенных систем, включая VxWorks, QNX, WinCE и др. Компьютерные чипы уже приближаются по сложности к программным системам, их делают из готовых блоков, в числе которых стандартный дебаггер JTAG — контакты на микросхеме, с которых можно снимать всю информацию по USB, не вставляя микросхему в предназначенный для неё разъём. Это популярный метод у хакеров по получению контроля над любым устройством — просто найти контакты JTAG. С точки зрения производителя один из способов защититься от такого, не меняя дизайн микросхемы — это добавить криптографический ключ (обычно AES 128 бит), который отключает самые опасные из команд JTAG.
Дэвид Грэхем предполагает, что именно такой ключ смог извлечь Сергей Скоробогатов.
Речь идёт о микросхеме Microsemi/Actel ProASIC3 — типичном дешёвом процессоре FPGA, который используется не только в военных системах, но и во многих коммерческих продуктах, в том числе упомянутых Скоробогатовым промышленных системах. Отличие «военной» версии ProASIC3 в лучшей устойчивости к радиационному воздействию и перепаду температур, конструктивно они не отличаются.
Actel ProASIC3
Баг был найден методом фаззинга (fuzz testing), то есть путём посылки на порт JTAG различных команд в поиске недокументированных функций и необычного поведения: примерно такой же способ используется при поиске багов в программном обеспечении. Например, для фаззинга браузера Chrome компания Google использует несколько сотен виртуальных машин с 6000 инстансов Chrome, через которые прогоняют 50 млн тестовых случаев в сутки.
С помощью фаззинга раньше уже находили бэкдоры в ПО, но никто не предполагал, что эти бэкдоры злонамеренно внедрены китайцами. Есть и другие теории, в том числе забытый дебаггер.
Чтобы окончательно прояснить ситуацию, нужно дождаться официального ответа Microsemi/Actel.