Инъекционные атаки
Резюме
Использование беспилотных летательных аппаратов (БПЛА), обычно называемых дронами, продолжает расти. Дроны реализуют различные уровни безопасности, а более продвинутые модули устойчивы к типичным атакам на встроенные устройства. IOActive заинтересован в разработке одной или нескольких жизнеспособных атак Fault Injection против защищенных БПЛА.
В этом документе рассматривается работа IOActive по созданию платформы для запуска атак по сторонним каналам и внедрения ошибок с использованием коммерчески доступного БПЛА. Мы описываем, как мы разрабатывали модель угрозы, выбирали предварительную цель и готовили компоненты для атаки, а также обсуждаем, чего мы надеялись достичь и конечный результат проекта.
Краткое содержание
IOActive намеревалась изучить возможность выполнения кода на коммерчески доступном беспилотнике с публично раскрытыми уязвимостями с использованием неинвазивных методов, таких как электромагнитные (ЭМ) атаки по сторонним каналам и внедрение электромагнитных сбоев (EMFI). В случае успеха мы могли бы применить извлеченные уроки к подходу полностью черного ящика и попытаться скомпрометировать устройства без известных уязвимостей.
В качестве цели мы выбрали DJI, опытного производителя, который уделяет особое внимание безопасности своих продуктов1, таких как подписанное и зашифрованное встроенное ПО, Trusted Execution Environment (TEE) и Secure Boot. Мы использовали контролируемую среду для исследования влияния атак по сторонним каналам и методов EMFI.
Мы продемонстрировали, что можно скомпрометировать целевое устройство, внедрив определенный сбой EM в нужное время во время обновления прошивки. Это позволит злоумышленнику получить выполнение кода на основном процессоре, получив доступ к ОС Android, реализующей основные функции дрона.
Введение
Дроны, также известные как беспилотные летательные аппараты (БПЛА), все чаще используются в таких отраслях, как авиация, сельское хозяйство и правоохранительные органы. По мере расширения использования этих устройств возникают проблемы с кибербезопасностью. Эти универсальные машины предлагают много преимуществ, но они также создают уникальные проблемы, когда речь идет о поддержании безопасности.
Одной из ключевых проблем является тот факт, что дроны часто управляются дистанционно. Это означает, что внешние субъекты могут получить доступ к системам управления дроном путем перехвата беспроводных сигналов, используемых для управления дроном, компрометации наземных компьютерных систем, используемых для управления дроном, или получения доступа к самому устройству; если дрон будет украден, вор может собрать конфиденциальную информацию или внедрить вредоносное ПО в систему.
В этом техническом документе рассказывается об исследовании IOActive текущего состояния безопасности в индустрии дронов. Для этой работы мы выбрали одну из самых распространенных моделей дронов DJI Mavic Pro.
Цели этого исследования заключались в том, чтобы:
• Узнать об архитектуре БПЛА
• Исследовать самые слабые места БПЛА
• Определить, какие подходы целесообразны при атаках в реальном мире.
• Получить опыт проведения атак EMFI на высокопроизводительные многоядерные системы, работающие под управлением полнофункциональных многозадачных операционных систем, а также на микроконтроллеры, работающие на «голом железе».
Этот технический документ охватывает следующие области:
• Поверхность атаки: предоставляет обзор компонентов дрона и идентифицирует ценные активы.
• Технический фон: вводит понятия о целевом беспилотнике и испытательной установке.
• Первый подход: описывает попытки IOActive использовать атаки по сторонним каналам для получения ключей расшифровки встроенного ПО.
• Второй подход: описывает попытки IOActive использовать EMFI для выполнения кода.
• Будущая работа: обсуждаются следующие шаги в исследованиях IOActive.
• Меры по защитей: рекомендации по устранению выделенной проблемы.
Поверхность атаки
Дроны используются в самых разных сферах, включая военные, коммерческие и развлекательные.
Как и любая другая технология, дроны уязвимы для различных типов атак, которые могут поставить под угрозу их функциональность и безопасность.
Как видно на Рисунке 1, дроны подвержены нескольким атакам, в зависимости от их конкретных возможностей. Некоторые распространенные поверхности атаки включают в себя:
1) Серверная часть. Как и почти любая другая современная система, дроны уязвимы для различных атак на свои серверные системы. Злоумышленники могут использовать ряд проблем (например, внедрение SQL-кода или подделку запросов на стороне сервера), чтобы получить доступ к конфиденциальным данным, манипулировать системой или нарушить работу. Кроме того, злоумышленники могут использовать серверную систему в качестве опорной точки для запуска дальнейших атак на другие компоненты экосистемы.
2) Мобильные приложения: Злоумышленники могут использовать уязвимости в мобильных приложениях, чтобы получить доступ к конфиденциальным данным или удаленно управлять дроном. Распространенными способами проникновения в них могут быть уязвимости в приложениях или операционной системе и даже целевые атаки.
3) Радиочастотная (РЧ) связь. Системы радиочастотной связи используются дронами для приема и передачи команд, данных и видео. Радиочастотные атаки могут использовать различные методы, такие как глушение, спуфинг и вмешательство, чтобы нарушить или манипулировать радиочастотными сигналами, используемыми дронами. DJI реализует собственный радиочастотный протокол OcuSync для отправки видео и команд на пульт дистанционного управления, используемый для управления дроном, и с него.
4) Физическое устройство: аппаратные или программные уязвимости могут позволить злоумышленнику получить доступ к ключевым аспектам дрона, таким как прошивка и конфиденциальная информация, и потенциально изменить его поведение.
OcuSync
OcuSync — это протокол беспроводной связи, разработанный DJI. Он используется во многих дронах DJI, включая популярную серию Mavic, для обеспечения надежной связи с малой задержкой между дроном и связанным с ним пультом дистанционного управления.
Одной из ключевых особенностей протокола OcuSync является его способность поддерживать несколько каналов связи. Это позволяет дрону автоматически переключаться между каналами, чтобы поддерживать надежное и стабильное соединение даже в сложных условиях, где могут присутствовать радиопомехи.
Протокол OcuSync также включает в себя функции безопасности для защиты беспроводной связи (OTA). Это включает в себя использование шифрования для защиты беспроводной связи между дроном и пультом дистанционного управления, а также механизмы аутентификации для предотвращения доступа неавторизованных пользователей к системам управления дроном.
Мобильные приложения
Мобильные приложения доступны как для устройств iOS, так и для Android, и они позволяют пользователям легко управлять и контролировать свои дроны со смартфона или планшета.
Некоторые из ключевых функций мобильных приложений DJI — это возможность удаленного управления движением дрона, доступ к настройкам камеры и управление камерой, а также просмотр видео в реальном времени с камеры дрона.
В дополнение к этим основным функциям управления мобильные приложения DJI также предлагают ряд расширенных возможностей, таких как автоматическое планирование полета, создание пользовательского маршрута полета, а также возможность доступа и управления журналами полетов дрона и другими данными.
Ресурсы
Первоначальная цель IOActive состояла в том, чтобы получить доступ к прошивке дрона и найти уязвимости в открытой поверхности атаки. Ниже перечислены активы, на которые может нацелиться злоумышленник, в зависимости от желаемого результата.
Прошивка
Программное обеспечение, работающее на платформе System-on-Chip (SoC) целевого устройства, является святым Граалем для исследования уязвимостей. Путем обратного проектирования самой последней версии программного обеспечения, управляющего коммуникациями, можно получить более полное представление о системе и выявить потенциальные недостатки и уязвимости в системе безопасности.
Для Mavic Pro DJI предоставляет только подписанные и зашифрованные пакеты прошивки. Общедоступный эксплойт для Mavic Pro3 позволил IOActive разрешить отладочный доступ к устройству. Эта информация позволила нам лучше понять внутренности устройства и продолжить наше исследование.
Бесполетные зоны
Большинство БПЛА имеют несколько «запретных для полетов зон», чтобы предотвратить несчастные случаи и несанкционированное использование. Эти бесполетные зоны — это области, где беспилотнику не разрешается взлетать или летать, и они предназначены для защиты важных мест, таких как аэропорты, военные базы и другие области, где работа дрона может представлять угрозу безопасности.
Конфиденциальная информация
Использование дронов для хранения информации, такой как планы полета, изображения и другие потенциально конфиденциальные данные, требует рассмотрения в определенных контекстах.
Архитектура дронов
DJI включает в свои дроны ряд датчиков и периферийных устройств, чтобы обеспечить расширенные возможности и повысить производительность.
• Гироскопы и акселерометры используются для измерения ориентации и движения дрона, предоставляя информацию, необходимую для поддержания стабильности и контроля.
• Барометры измеряют атмосферное давление, позволяя дрону определять свою высоту и поддерживать постоянную высоту полета.
• Датчики глобальной системы позиционирования (GPS) используются для определения местоположения дрона и включения таких функций, как автоматический взлет и посадка и геозоны.
• Датчики компаса используются для определения направления дрона и включения таких функций, как автоматическая навигация по путевым точкам.
• Ультразвуковые датчики используются для измерения расстояния до земли или других объектов и включения таких функций, как автоматическое зависание и обход препятствий.
• Камеры используются для съемки фотографий или видеоматериалов с высоты птичьего полета. Дроны оснащены камерами, которые позволяют пользователям видеть то, что видит дрон, в режиме реального времени, а также снимать изображения и видео с уникальных ракурсов, которые были бы невозможны с помощью традиционной камеры.
Два основных процессора в DJI Mavic Pro:
1) Процессор обработки видео и изображений: этот SoC производится Ambarella International LP (Ambarella), технологической компанией, которая специализируется на проектировании и разработке маломощных полупроводников для обработки видео высокой четкости. Компания была основана в 2004 году, ее штаб-квартира находится в Санта-Кларе, Калифорния. Продукты Ambarella используются в различных приложениях, включая камеры видеонаблюдения, дроны и спортивные камеры. Чипы компании известны своей способностью захватывать и передавать видео высокого качества, потребляя при этом очень мало энергии.
2) Управляющий процессор на базе Android: это SoC на базе ARM Cortex-A7 от Leadcore Technology Co. Ltd. (Leadcore), китайской телекоммуникационной компании, базирующейся в Пекине. Компания известна своей работой в области разработки телекоммуникационных технологий, включая чипсеты для мобильных телефонов и другие сопутствующие товары. Leadcore работает с 2009 года, и его продукция включает линейку чипсетов для мобильных телефонов, используемых в различных смартфонах и других устройствах.
Техническое описание
Атаки по сторонним каналам основаны на косвенном получении информации о целевой системе путем проведения различных типов измерений во время выполнения определенных операций. Вот некоторые распространенные атаки, использующие анализ побочных каналов:
• Атаки по времени: анализируется и используется время, необходимое для выполнения целевой операции, например, для угадывания персонального идентификационного номера (PIN) или взлома криптографических реализаций.
• Анализ мощности: простой анализ мощности (SPA) и дифференциальный анализ мощности (DPA) используют мощность, потребляемую целевыми операциями. Измерения обычно проводятся путем постукивания по цепи напряжения микросхемы. Захваченные данные математически обрабатываются для восстановления секретов, обычно криптографических ключей.
• Электромагнитный анализ: вместо того, чтобы измерять потребляемую мощность непосредственно с шин напряжения оборудования, электромагнитный датчик размещается достаточно близко к микросхеме для получения данных об электромагнитном излучении. Преимущество этого метода в том, что он менее инвазивен и более локализован, чем анализ мощности.
Введение электромагнитных сбоев (EMFI) направлено на то, чтобы вызвать сбой в работе оборудования при выполнении определенных операций. Металлическая катушка (электромагнитный зонд) помещается близко к поверхности целевого процессора. Ток, протекающий через эту катушку, вызовет изменения тока внутри процессора. Ожидается, что это вызовет изменения в поведении ЦП таким образом, что его можно будет использовать для получения преимущества; например, путем изменения значения в ячейке памяти или регистре до или после его обработки.
Как упоминалось выше, преимущества EMFI включают его неинвазивный характер и то, что возмущение более локализовано, в отличие от сбоев питания, когда печатная плата обычно требует физических модификаций, а сбой влияет на все внутренние периферийные устройства и процессоры, подключенные к целевому источнику питания рельс.
Для этой работы компания IOActive использовала широко признанный набор FI/Side-Channel Analysis (SCA) от Riscure. В частности, мы использовали компоненты, описанные в оставшейся части этого раздела, которые сопровождаются мощным комплексным программным пакетом, предназначенным для поддержки исследователей в области безопасности.
При использовании методов анализа энергопотребления данные извлекаются путем касания пути напряжения, который целевой процессор использует для питания всех внутренних процессоров. Одной из проблем при переходе от показаний напряжения к показаниям ЭМ является определение правильного положения на поверхности чипа. Для этого мы использовали таблицу XYZ, показанную на рис. 2, для сканирования области чипа и определения оптимальных мест, где происходит утечка дополнительной информации.
Чтобы правильно использовать это устройство, необходимо правильно настроить ось Z. Это критический фактор, так как если наконечник ЭМ находится слишком близко к цели, то сам наконечник может быть поврежден при перемещении по корпусу чипа. С другой стороны, если наконечник ЭМ находится слишком высоко, измеренный сигнал будет слишком слабым, чтобы его можно было использовать.
Компания IOActive использовала два метода для решения этой проблемы. Первый включал использование микрокамеры USB для наблюдения за зазором между наконечником ЭМ и поверхностью. Второй был метод, обычно используемый в 3D-печати: помещение тонкого листа бумаги между наконечником ЭМ и чипом, позиционирование наконечника ЭМ, а затем попытка вытащить бумагу. Если зазор слишком мал, бумага не будет двигаться; и наоборот, если он слишком велик, он будет двигаться свободно. Небольшое трение при движении бумаги указывает на оптимальную высоту наконечника.
После того, как ось Z была установлена в фиксированное положение, следующим шагом будет указание прямоугольника на оси XY, то есть области чипа для сканирования.
ЭМ зонд
Высокоточный ЭМ-зонд IOActive, использованный в данном исследовании, предназначен для обнаружения ЭМ-излучения полупроводниковых цепей и оснащен тремя наконечниками разного диаметра (0,2 мм, 0,5 мм и 1,2 мм), имеющими направленную катушку и защитную тефлоновую оболочку. Этот инструмент способен улавливать электромагнитные поля с частотой до 6 ГГц и преобразовывать их в сигнал переменного тока.
Электромагнитный датчик подключается к усилителю, как показано на рис. 3, а выход направляется на осциллограф через кабель BNC. Затем программный пакет интерпретирует измерения ЭМ для создания тепловой карты, чтобы точно определить область максимального излучения.
Осциллограф
Компания IOActive использовала осциллограф, показанный на рис. 4, в качестве ключевого элемента как в части SCA, так и в части проекта FI.
Во время SCA осциллограф использовался для регистрации утечек сигнала при вычислениях, выполняемых в целевом ЦП. Во время EMFI он использовался для проверки того, что сбои генерируются с желаемой формой и временем.
Паук и зонд EM-FI
Для EMFI компания IOActive использовала инструмент Riscure Spider и переходный зонд EM-FI, как показано на рисунке 5.
Spider снижает сложность SCA и EMFI, создавая единую точку управления со всеми линиями ввода-вывода и сброса для пользовательских или встроенных интерфейсов. В рамках этого проекта IOActive использовала инструмент Spider для создания произвольных волн сбоев. Инструмент позволяет регулировать выходное напряжение, синхронизацию, частоту/частоту повторения и длительность импульса.
EM-FI Transient Probe от Riscure индуцирует быстрые, мощные электромагнитные импульсы в определенном пользователем месте чипа. Быстрые и короткие импульсы настраиваются программно, обеспечивая быструю и предсказуемую реакцию на запуск.
Целевой дрон
Подход IOActive заключался в том, чтобы использовать контролируемую среду тестирования, чтобы выяснить, возможно ли атаковать защищенный беспилотник с помощью бокового канала или методов EMFI. Чтобы обеспечить контролируемую среду, IOActive нацелился на модель дрона и версию прошивки с общеизвестными уязвимостями. Это позволило бы нам лучше понять и контролировать каждый из различных этапов путем обратного проектирования компонентов программного обеспечения, задействованных в процессе обновления прошивки. Кроме того, это даст возможность получить представление о потенциальных неисправностях устройства или других действиях, которые могут задержать тестирование. В случае успеха мы могли бы воспользоваться уроками, извлеченными на этом этапе, и попытаться провести атаки такого типа на устройствах без широко известных уязвимостей, используя подход «черный ящик». Кроме того, если какие-либо будущие цели используют тот же SoC, что и первоначальная цель, мы могли бы даже повторно использовать область поиска, определенную в ходе этого проекта. Это сэкономит драгоценное время, избавив от необходимости сканировать всю поверхность SoC и настраивать такие параметры, как продолжительность, задержка и мощность.
Учитывая эти факторы, IOActive выбрала DJI Mavic Pro. В дополнение к утечке ключей, он широко доступен на рынке подержанных автомобилей, что может быть полезно в случае аварии, приводящей к повреждению устройства во время нашего исследовательского процесса.
Подготовка печатной платы дрона
Первым шагом было определение основной печатной платы дрона и создание изолированной среды, в которой он мог бы питаться без оригинальной батареи и помещаться под датчики для анализа.
После удаления пластиковых корпусов, периферийных устройств и датчиков результат показан на рисунке 6. Интересующий нас компонент обведен красным: SoC Leadcore. Этот SoC работает под управлением пользовательской версии Android и обрабатывает USB-соединение и процесс обновления прошивки.
На рис. 7 показана анализируемая печатная плата. Следует отметить, что IOActive должен был включать внешний вентилятор для рассеивания тепла, выделяемого компонентами печатной платы. Без него температура быстро повышалась бы после включения питания, что приводило к перезагрузке.
Первый подход
Как уже упоминалось ранее, одним из основных приоритетов любого злоумышленника при доступе к системе является получение доступа к незашифрованному встроенному ПО. Поэтому нашей первой целью было изучить возможность восстановления ключей, используемых для шифрования/дешифрования пакетов встроенного ПО с использованием утечек мощности по сторонним каналам.
Утечки мощности в криптографических алгоритмах связаны с математическими операциями с использованием полезной нагрузки, контролируемой злоумышленником, и неизвестного ключа. Инструкции, в которых вычисляются данные обоих элементов, будут потреблять больше или меньше энергии в зависимости, например, от количества битов в результате. Обычно это называется моделью утечки и иногда моделируется как расстояние Хэмминга.
Цель IOActive состояла в том, чтобы построить систему, в которой мы могли бы:
1) Отправлять случайные данные в цель для последующего использования в криптографических вычислениях.
2) Выполняйть повторные тесты, чтобы собрать тысячи следов питания.
3) Проанализировать полученные данные и восстановите ключ шифрования.
Как упоминалось в шаге 1, ключевая часть использования утечки по сторонним каналам заключается в том, чтобы целевая операция обрабатывала данные с достаточной энтропией для статистического анализа. В этом случае у нас была возможность отправлять случайные данные, которые попадали бы в целевые операции криптографического алгоритма. Для этого мы проанализировали формат пакета и сгенерировали действительные пакеты, которые можно было передать в процесс расшифровки. На рис. 8 показан один из пакетов и некоторые значения, которые были изменены для передачи приложению проверки.
Сгенерированные пакеты содержат случайные данные, которые будут использоваться во время статистического анализа для сопоставления с захваченными трассировками ЭМ. Поэтому нам нужно было сгенерировать большое количество «поддельных» пакетов обновлений.
Работа над шагом 2 включала в себя понимание процесса обновления, чтобы мы могли автоматизировать задачу отправки измененных пакетов и записи электромагнитных излучений для последующего анализа.
На рис. 9 показаны этапы процесса обновления прошивки дрона DJI. Поскольку нам посчастливилось получить модель с работающей на ней оболочкой ADB, мы смогли идентифицировать процесс, связанный с подписью и расшифровкой программного пакета.
Проверка подписи и расшифровка выполнялись приложением dji_verify. Этот исполняемый файл предназначен для запуска в качестве инструмента командной строки и принимает различные аргументы, включая путь к файлу, содержащему пакет прошивки.
Дальнейший анализ бинарника позволил выявить точку, в которой производилась проверка подписи. Поскольку одна из задач — найти место на поверхности чипа, где электромагнитный сигнал сильнее, мы решили пропатчить бинарник dji_verify, чтобы обойти проверку подписи и напрямую выполнить расшифровку пакета прошивки.
На высоком уровне весь процесс состоит из следующих шагов:
1) Сгенерировать модифицированный пакет прошивки (хотя на первом этапе сканирования мы используем фиксированный).
2) Скопировать файл на дрон через ADB.
3) Выполнить пропатченный dji_verify.
4) Записать данные ЭМ и верниться к шагу 1.
Шаг 3 объединяет аппаратное и программное обеспечение, необходимое для выполнения анализа мощности. На рис. 10 показана часть установки, используемой для регистрации утечки электроэнергии. Электромагнитный зонд прикрепляется к столу XYZ и располагается поверх SoC Leadcore, где выполняются криптографические операции.
Одной из ключевых функций инструментов, поставляемых с оборудованием Riscure, был Inspector, мощный программный пакет, который реализует весь статистический, математический анализ и преобразование данных, необходимые для выполнения SCA.
Единственными отсутствующими частями являются те, которые необходимы для взаимодействия с каждым из различных устройств в области исследования. Для этого проекта IOActive разработала код Java (включенный в Приложение B), который принимает входные аргументы, такие как повторения, и координирует запуск целевого двоичного файла. Инспектор позаботится о позиционировании таблицы XYZ, считывании электромагнитных сигналов и построении графика результатов.
На этом этапе первой целью было найти область с сильным электромагнитным сигналом, чтобы мы могли разместить зонд и записать тысячи следов, чтобы получить достаточно информации для извлечения ключа.
После того, как место с самым сильным сигналом было определено, мы перешли от пропатченного двоичного файла dji_verify к исходной настройке, которая включает проверку подписи прошивки. Затем мы начали изучать возможность обхода проверки подписи с помощью EMFI.
На этом этапе мы перешли с Inspector на FI Python (FIPy), веб-фреймворк, предоставляемый Riscure для помощи в процессе FI. Это описано более подробно в разделе «Второй подход» данного документа. На рис. 11 представлен график, созданный FI Spotlight и показывающий результаты этого раунда тестирования.
После нескольких дней испытаний и анализа данных мы обнаружили, что вероятность успешного обхода сигнатуры составляет менее 0,5%. Это делает восстановление ключа невозможным, поскольку аппаратные криптографические механизмы, подобные тому, который используется в SoC Leadcore, требуют сбора сотен тысяч трассировок для выполнения атаки SCA.
В этот момент мы приостановили дальнейшие усилия по этому первому подходу, снова проанализировали цель и придумали второй сценарий атаки.
Второй подход
Было несколько потенциальных путей обхода механизмов безопасности с помощью физических атак, но большинство из них требовали модификации печатной платы. Обычно мы использовали EMFI в надежде, что JTAG сможет реализовать возможности отладки; однако вместо этого мы выбрали путь, предложенный в исследовательской статье от Riscure8.
Исследователи Riscure описывают различные результаты, которых они достигли при применении FI к целевому SoC. Был один интересный результат, применимый к исследованию IOActive, когда сбои заставляли процессор изменять содержимое регистров назначения во время операций с памятью.
Если бы приведенные выше результаты можно было воспроизвести, мы потенциально могли бы выполнить нашу собственную полезную нагрузку в процессе обновления. Отсюда вытекают следующие два требования:
1) У нас есть возможность предоставить пользовательскую полезную нагрузку для целевой системы. Мы уже знаем, что это верно из нашей работы с использованием Первого Подхода.
2) Процесс скопирует память из одного места в другое. Также из нашей работы над dji_verify мы знаем, что предоставленная полезная нагрузка сначала копируется в память, чтобы вычислить криптографическую подпись и проверить, соответствует ли она подписанной.
В этом новом пути атаки мы попытались продемонстрировать, что получение выполнения кода с использованием EMFI было правдоподобно на целевом устройстве. Общий обзор процесса выглядит следующим образом:
1) Процесс обновления копирует контролируемую злоумышленником полезную нагрузку из одной области памяти в другую.
2) Пока идет копирование, сгенерировать глюк с целью изменить поведение обрабатываемых инструкций.
3) Проанализировать результат, чтобы определить, какой тип модификации инструкции имел место.
Чтобы продолжить этот подход, нам нужно было выполнить следующие задачи:
1) Сгенерироватье пакет прошивки, который обработает программа dji_verify.
2) Получите трассировку стека и зарегистрируйте информацию, чтобы упростить процесс понимания того, была ли атака успешной. Для этого шага мы использовали GDB; это было одним из преимуществ контролируемой среды.
3) Настройте глючное оборудование Riscure и адаптируйте FIPy для работы с нашей целью.
Для выполнения задачи 1 мы изменили заголовок пакета и добавили в качестве полезной нагрузки файл, содержащий 10 МБ 0x41 байт, как описано в первом подходе. Это помогает оценить фактическую пригодность инъекции при анализе вывода GDB.
Одним из ограничений настройки EMFI является поиск точного аппаратного триггера. Плотность компонентов и многослойная печатная плата затрудняют поиск правильного сигнала без риска разрушения образцов (одно из ограничений для этого проекта). Чтобы преодолеть эту проблему, мы полагались на время, исходя из момента, когда мы получили информацию через вывод ADB; однако этот подход снижает повторяемость инъекции, что затрудняет поиск успешного попадания.
На рис. 12 показана установка, которую мы использовали для EMFI для выполнения задачи 3. Электромагнитный датчик подключен к таблице XYZ, а инструмент Spider подключен к компьютеру, который обеспечивает синхронизацию триггера. Осциллограф используется для проверки того, что мы вводим правильные формы импульсов в нужное время, и его выходные данные показаны на рисунке 13.
Между работой с Inspector и FIPy есть одно различие: первый предоставляет интерфейс Java, а второй выполняет скрипт Python. На этот раз мы собрали сценарий Python (включенный в Приложение C), который управляет взаимодействием с целевым устройством, запрашивает инструмент Spider для запуска сбоя и сохраняет результаты.
Как только вся установка заработала безупречно, нам нужно было запустить тест несколько раз вокруг оси XY с разной силой сбоев и временем, пока мы не идентифицировали успешную или потенциальную ошибку, которая могла бы помочь нам сузить область поверхности.
Определив достаточно небольшую область, мы изменили форму и время сбоя, пока не увидели успешный сбой. После многочисленных попыток мы получили то, что искали: произошел сбой программы dji_verify, как показано в следующем выводе.
Наша полезная нагрузка появилась в нескольких регистрах. Изучив код по целевому адресу, мы определили, что попали в выигрышную комбинацию времени, позиции и формы сбоя.
На рис. 14 ясно показана инструкция загрузки, копирующая данные IOActive в регистры R0 и R1. Выходные данные GDB выше показывают, что регистры R3 и R4 также оказались с контролируемыми данными.
Вместо копирования данных в буфер назначения следующие две инструкции копируют R0 и R1 в контролируемый адрес.
Скорее всего, здесь произошло то, что мы смогли изменить инструкцию загрузки, и вместо чтения только двух регистров она закончила чтение четырех. Исходная кодировка инструкции:
В то время как кодировка инструкции, которая привела бы к результатам, которые мы наблюдали, была:
Это означало, что сбой мог изменить один байт, перевернув два последовательных бита и преобразовав одну инструкцию в другую.
Достигнув этого результата, следующим шагом будет написание правильной полезной нагрузки, которая превращает это повреждение памяти в эксплойт для выполнения кода. Это может позволить злоумышленнику полностью контролировать одно устройство, слить весь его конфиденциальный контент, включить доступ к ADB и, возможно, слить ключи шифрования.
Будущая работа
В этой статье мы описали материалы и методы, которые мы использовали для успешной реализации атаки на БПЛА (беспилотный летательный аппарат) с использованием методов ЭМП.
Целью этого проекта было изучение возможности таких атак на сложном и современном устройстве. Поскольку нам удалось доказать, что при обработке обновления прошивки на устройстве можно получить контроль во время выполнения, следующим шагом будет применение полученных знаний на другой модели от DJI, не имеющей ранее известных уязвимостей.
Чтобы выполнить эту задачу и создать надежный эксплойт в рамках ограничений по времени и бюджету, необходимо улучшить несколько элементов:
1) Аппаратный триггер: это, вероятно, единственный элемент, который наиболее значительно сократит время и сложность проекта. Как упоминалось в этой статье, мы использовали исключительно программный триггер на основе времени, что затрудняет надежное знание того, как выявить успешный сбой.
Есть два разных способа реализовать желаемый аппаратный триггер: (i) найти светодиод или доступную трассировку печатной платы, по которой мы могли бы обнаружить изменение уровня при обработке обновления прошивки, или (ii) использовать ICWaves от Riscure для определения сигнатуры питания, совпадающую с обрабатываемым пакетом обновления микропрограммы.
2) Интеграция: интегрируйте все элементы, представленные в этом отчете, вместе с аппаратным триггером и пакетом прошивки, отправляемым на дрон, поскольку он будет работать при фактическом обновлении прошивки.
3) Полезная нагрузка: Создайте полезную нагрузку, которую можно было бы легко проверить, чтобы определить, был ли сбой успешным. Существуют разные варианты, но одним из наиболее очевидных было бы включение ADB, чтобы мы могли проверить, активно ли USB-соединение с хоста, запускающего атаки.
Защита
Растущее количество опубликованных исследований показало многообещающие результаты применения EMFI для компрометации целевой системы. Это открывает новый ландшафт потенциальных атак и слабых мест в текущих и будущих продуктах.
IOActive рекомендует разработчикам продуктов реализовывать меры противодействия EMFI в своих продуктах, защищая эти атаки путем реализации аппаратных и программных мер противодействия. Аппаратные меры противодействия очень эффективны для предотвращения атак ЭМП, но могут быть дорогостоящими и должны планироваться на ранних этапах проектирования. С другой стороны, программные средства противодействия могут быть добавлены на заключительных этапах разработки, но они могут оказаться менее эффективными для защиты определенных атак. Информация о реализации контрмер EMFI общедоступна в научных статьях, презентациях на конференциях и в сообщениях в блогах.
Мы также рекомендовали оценить эффективность контрмер EMFI с помощью сторонней лаборатории, такой как IOActive.
Переведено специально для xss.pro
Автор перевода: yashechka
Источник: Gabriel Gonzalez Director of Hardware Security
Резюме
Использование беспилотных летательных аппаратов (БПЛА), обычно называемых дронами, продолжает расти. Дроны реализуют различные уровни безопасности, а более продвинутые модули устойчивы к типичным атакам на встроенные устройства. IOActive заинтересован в разработке одной или нескольких жизнеспособных атак Fault Injection против защищенных БПЛА.
В этом документе рассматривается работа IOActive по созданию платформы для запуска атак по сторонним каналам и внедрения ошибок с использованием коммерчески доступного БПЛА. Мы описываем, как мы разрабатывали модель угрозы, выбирали предварительную цель и готовили компоненты для атаки, а также обсуждаем, чего мы надеялись достичь и конечный результат проекта.
Краткое содержание
IOActive намеревалась изучить возможность выполнения кода на коммерчески доступном беспилотнике с публично раскрытыми уязвимостями с использованием неинвазивных методов, таких как электромагнитные (ЭМ) атаки по сторонним каналам и внедрение электромагнитных сбоев (EMFI). В случае успеха мы могли бы применить извлеченные уроки к подходу полностью черного ящика и попытаться скомпрометировать устройства без известных уязвимостей.
В качестве цели мы выбрали DJI, опытного производителя, который уделяет особое внимание безопасности своих продуктов1, таких как подписанное и зашифрованное встроенное ПО, Trusted Execution Environment (TEE) и Secure Boot. Мы использовали контролируемую среду для исследования влияния атак по сторонним каналам и методов EMFI.
Мы продемонстрировали, что можно скомпрометировать целевое устройство, внедрив определенный сбой EM в нужное время во время обновления прошивки. Это позволит злоумышленнику получить выполнение кода на основном процессоре, получив доступ к ОС Android, реализующей основные функции дрона.
Введение
Дроны, также известные как беспилотные летательные аппараты (БПЛА), все чаще используются в таких отраслях, как авиация, сельское хозяйство и правоохранительные органы. По мере расширения использования этих устройств возникают проблемы с кибербезопасностью. Эти универсальные машины предлагают много преимуществ, но они также создают уникальные проблемы, когда речь идет о поддержании безопасности.
Одной из ключевых проблем является тот факт, что дроны часто управляются дистанционно. Это означает, что внешние субъекты могут получить доступ к системам управления дроном путем перехвата беспроводных сигналов, используемых для управления дроном, компрометации наземных компьютерных систем, используемых для управления дроном, или получения доступа к самому устройству; если дрон будет украден, вор может собрать конфиденциальную информацию или внедрить вредоносное ПО в систему.
В этом техническом документе рассказывается об исследовании IOActive текущего состояния безопасности в индустрии дронов. Для этой работы мы выбрали одну из самых распространенных моделей дронов DJI Mavic Pro.
Цели этого исследования заключались в том, чтобы:
• Узнать об архитектуре БПЛА
• Исследовать самые слабые места БПЛА
• Определить, какие подходы целесообразны при атаках в реальном мире.
• Получить опыт проведения атак EMFI на высокопроизводительные многоядерные системы, работающие под управлением полнофункциональных многозадачных операционных систем, а также на микроконтроллеры, работающие на «голом железе».
Этот технический документ охватывает следующие области:
• Поверхность атаки: предоставляет обзор компонентов дрона и идентифицирует ценные активы.
• Технический фон: вводит понятия о целевом беспилотнике и испытательной установке.
• Первый подход: описывает попытки IOActive использовать атаки по сторонним каналам для получения ключей расшифровки встроенного ПО.
• Второй подход: описывает попытки IOActive использовать EMFI для выполнения кода.
• Будущая работа: обсуждаются следующие шаги в исследованиях IOActive.
• Меры по защитей: рекомендации по устранению выделенной проблемы.
Поверхность атаки
Дроны используются в самых разных сферах, включая военные, коммерческие и развлекательные.
Как и любая другая технология, дроны уязвимы для различных типов атак, которые могут поставить под угрозу их функциональность и безопасность.
Как видно на Рисунке 1, дроны подвержены нескольким атакам, в зависимости от их конкретных возможностей. Некоторые распространенные поверхности атаки включают в себя:
1) Серверная часть. Как и почти любая другая современная система, дроны уязвимы для различных атак на свои серверные системы. Злоумышленники могут использовать ряд проблем (например, внедрение SQL-кода или подделку запросов на стороне сервера), чтобы получить доступ к конфиденциальным данным, манипулировать системой или нарушить работу. Кроме того, злоумышленники могут использовать серверную систему в качестве опорной точки для запуска дальнейших атак на другие компоненты экосистемы.
2) Мобильные приложения: Злоумышленники могут использовать уязвимости в мобильных приложениях, чтобы получить доступ к конфиденциальным данным или удаленно управлять дроном. Распространенными способами проникновения в них могут быть уязвимости в приложениях или операционной системе и даже целевые атаки.
3) Радиочастотная (РЧ) связь. Системы радиочастотной связи используются дронами для приема и передачи команд, данных и видео. Радиочастотные атаки могут использовать различные методы, такие как глушение, спуфинг и вмешательство, чтобы нарушить или манипулировать радиочастотными сигналами, используемыми дронами. DJI реализует собственный радиочастотный протокол OcuSync для отправки видео и команд на пульт дистанционного управления, используемый для управления дроном, и с него.
4) Физическое устройство: аппаратные или программные уязвимости могут позволить злоумышленнику получить доступ к ключевым аспектам дрона, таким как прошивка и конфиденциальная информация, и потенциально изменить его поведение.
OcuSync
OcuSync — это протокол беспроводной связи, разработанный DJI. Он используется во многих дронах DJI, включая популярную серию Mavic, для обеспечения надежной связи с малой задержкой между дроном и связанным с ним пультом дистанционного управления.
Одной из ключевых особенностей протокола OcuSync является его способность поддерживать несколько каналов связи. Это позволяет дрону автоматически переключаться между каналами, чтобы поддерживать надежное и стабильное соединение даже в сложных условиях, где могут присутствовать радиопомехи.
Протокол OcuSync также включает в себя функции безопасности для защиты беспроводной связи (OTA). Это включает в себя использование шифрования для защиты беспроводной связи между дроном и пультом дистанционного управления, а также механизмы аутентификации для предотвращения доступа неавторизованных пользователей к системам управления дроном.
Мобильные приложения
Мобильные приложения доступны как для устройств iOS, так и для Android, и они позволяют пользователям легко управлять и контролировать свои дроны со смартфона или планшета.
Некоторые из ключевых функций мобильных приложений DJI — это возможность удаленного управления движением дрона, доступ к настройкам камеры и управление камерой, а также просмотр видео в реальном времени с камеры дрона.
В дополнение к этим основным функциям управления мобильные приложения DJI также предлагают ряд расширенных возможностей, таких как автоматическое планирование полета, создание пользовательского маршрута полета, а также возможность доступа и управления журналами полетов дрона и другими данными.
Ресурсы
Первоначальная цель IOActive состояла в том, чтобы получить доступ к прошивке дрона и найти уязвимости в открытой поверхности атаки. Ниже перечислены активы, на которые может нацелиться злоумышленник, в зависимости от желаемого результата.
Прошивка
Программное обеспечение, работающее на платформе System-on-Chip (SoC) целевого устройства, является святым Граалем для исследования уязвимостей. Путем обратного проектирования самой последней версии программного обеспечения, управляющего коммуникациями, можно получить более полное представление о системе и выявить потенциальные недостатки и уязвимости в системе безопасности.
Для Mavic Pro DJI предоставляет только подписанные и зашифрованные пакеты прошивки. Общедоступный эксплойт для Mavic Pro3 позволил IOActive разрешить отладочный доступ к устройству. Эта информация позволила нам лучше понять внутренности устройства и продолжить наше исследование.
Бесполетные зоны
Большинство БПЛА имеют несколько «запретных для полетов зон», чтобы предотвратить несчастные случаи и несанкционированное использование. Эти бесполетные зоны — это области, где беспилотнику не разрешается взлетать или летать, и они предназначены для защиты важных мест, таких как аэропорты, военные базы и другие области, где работа дрона может представлять угрозу безопасности.
Конфиденциальная информация
Использование дронов для хранения информации, такой как планы полета, изображения и другие потенциально конфиденциальные данные, требует рассмотрения в определенных контекстах.
Архитектура дронов
DJI включает в свои дроны ряд датчиков и периферийных устройств, чтобы обеспечить расширенные возможности и повысить производительность.
• Гироскопы и акселерометры используются для измерения ориентации и движения дрона, предоставляя информацию, необходимую для поддержания стабильности и контроля.
• Барометры измеряют атмосферное давление, позволяя дрону определять свою высоту и поддерживать постоянную высоту полета.
• Датчики глобальной системы позиционирования (GPS) используются для определения местоположения дрона и включения таких функций, как автоматический взлет и посадка и геозоны.
• Датчики компаса используются для определения направления дрона и включения таких функций, как автоматическая навигация по путевым точкам.
• Ультразвуковые датчики используются для измерения расстояния до земли или других объектов и включения таких функций, как автоматическое зависание и обход препятствий.
• Камеры используются для съемки фотографий или видеоматериалов с высоты птичьего полета. Дроны оснащены камерами, которые позволяют пользователям видеть то, что видит дрон, в режиме реального времени, а также снимать изображения и видео с уникальных ракурсов, которые были бы невозможны с помощью традиционной камеры.
Два основных процессора в DJI Mavic Pro:
1) Процессор обработки видео и изображений: этот SoC производится Ambarella International LP (Ambarella), технологической компанией, которая специализируется на проектировании и разработке маломощных полупроводников для обработки видео высокой четкости. Компания была основана в 2004 году, ее штаб-квартира находится в Санта-Кларе, Калифорния. Продукты Ambarella используются в различных приложениях, включая камеры видеонаблюдения, дроны и спортивные камеры. Чипы компании известны своей способностью захватывать и передавать видео высокого качества, потребляя при этом очень мало энергии.
2) Управляющий процессор на базе Android: это SoC на базе ARM Cortex-A7 от Leadcore Technology Co. Ltd. (Leadcore), китайской телекоммуникационной компании, базирующейся в Пекине. Компания известна своей работой в области разработки телекоммуникационных технологий, включая чипсеты для мобильных телефонов и другие сопутствующие товары. Leadcore работает с 2009 года, и его продукция включает линейку чипсетов для мобильных телефонов, используемых в различных смартфонах и других устройствах.
Техническое описание
Атаки по сторонним каналам основаны на косвенном получении информации о целевой системе путем проведения различных типов измерений во время выполнения определенных операций. Вот некоторые распространенные атаки, использующие анализ побочных каналов:
• Атаки по времени: анализируется и используется время, необходимое для выполнения целевой операции, например, для угадывания персонального идентификационного номера (PIN) или взлома криптографических реализаций.
• Анализ мощности: простой анализ мощности (SPA) и дифференциальный анализ мощности (DPA) используют мощность, потребляемую целевыми операциями. Измерения обычно проводятся путем постукивания по цепи напряжения микросхемы. Захваченные данные математически обрабатываются для восстановления секретов, обычно криптографических ключей.
• Электромагнитный анализ: вместо того, чтобы измерять потребляемую мощность непосредственно с шин напряжения оборудования, электромагнитный датчик размещается достаточно близко к микросхеме для получения данных об электромагнитном излучении. Преимущество этого метода в том, что он менее инвазивен и более локализован, чем анализ мощности.
Введение электромагнитных сбоев (EMFI) направлено на то, чтобы вызвать сбой в работе оборудования при выполнении определенных операций. Металлическая катушка (электромагнитный зонд) помещается близко к поверхности целевого процессора. Ток, протекающий через эту катушку, вызовет изменения тока внутри процессора. Ожидается, что это вызовет изменения в поведении ЦП таким образом, что его можно будет использовать для получения преимущества; например, путем изменения значения в ячейке памяти или регистре до или после его обработки.
Как упоминалось выше, преимущества EMFI включают его неинвазивный характер и то, что возмущение более локализовано, в отличие от сбоев питания, когда печатная плата обычно требует физических модификаций, а сбой влияет на все внутренние периферийные устройства и процессоры, подключенные к целевому источнику питания рельс.
Для этой работы компания IOActive использовала широко признанный набор FI/Side-Channel Analysis (SCA) от Riscure. В частности, мы использовали компоненты, описанные в оставшейся части этого раздела, которые сопровождаются мощным комплексным программным пакетом, предназначенным для поддержки исследователей в области безопасности.
При использовании методов анализа энергопотребления данные извлекаются путем касания пути напряжения, который целевой процессор использует для питания всех внутренних процессоров. Одной из проблем при переходе от показаний напряжения к показаниям ЭМ является определение правильного положения на поверхности чипа. Для этого мы использовали таблицу XYZ, показанную на рис. 2, для сканирования области чипа и определения оптимальных мест, где происходит утечка дополнительной информации.
Чтобы правильно использовать это устройство, необходимо правильно настроить ось Z. Это критический фактор, так как если наконечник ЭМ находится слишком близко к цели, то сам наконечник может быть поврежден при перемещении по корпусу чипа. С другой стороны, если наконечник ЭМ находится слишком высоко, измеренный сигнал будет слишком слабым, чтобы его можно было использовать.
Компания IOActive использовала два метода для решения этой проблемы. Первый включал использование микрокамеры USB для наблюдения за зазором между наконечником ЭМ и поверхностью. Второй был метод, обычно используемый в 3D-печати: помещение тонкого листа бумаги между наконечником ЭМ и чипом, позиционирование наконечника ЭМ, а затем попытка вытащить бумагу. Если зазор слишком мал, бумага не будет двигаться; и наоборот, если он слишком велик, он будет двигаться свободно. Небольшое трение при движении бумаги указывает на оптимальную высоту наконечника.
После того, как ось Z была установлена в фиксированное положение, следующим шагом будет указание прямоугольника на оси XY, то есть области чипа для сканирования.
ЭМ зонд
Высокоточный ЭМ-зонд IOActive, использованный в данном исследовании, предназначен для обнаружения ЭМ-излучения полупроводниковых цепей и оснащен тремя наконечниками разного диаметра (0,2 мм, 0,5 мм и 1,2 мм), имеющими направленную катушку и защитную тефлоновую оболочку. Этот инструмент способен улавливать электромагнитные поля с частотой до 6 ГГц и преобразовывать их в сигнал переменного тока.
Электромагнитный датчик подключается к усилителю, как показано на рис. 3, а выход направляется на осциллограф через кабель BNC. Затем программный пакет интерпретирует измерения ЭМ для создания тепловой карты, чтобы точно определить область максимального излучения.
Осциллограф
Компания IOActive использовала осциллограф, показанный на рис. 4, в качестве ключевого элемента как в части SCA, так и в части проекта FI.
Во время SCA осциллограф использовался для регистрации утечек сигнала при вычислениях, выполняемых в целевом ЦП. Во время EMFI он использовался для проверки того, что сбои генерируются с желаемой формой и временем.
Паук и зонд EM-FI
Для EMFI компания IOActive использовала инструмент Riscure Spider и переходный зонд EM-FI, как показано на рисунке 5.
Spider снижает сложность SCA и EMFI, создавая единую точку управления со всеми линиями ввода-вывода и сброса для пользовательских или встроенных интерфейсов. В рамках этого проекта IOActive использовала инструмент Spider для создания произвольных волн сбоев. Инструмент позволяет регулировать выходное напряжение, синхронизацию, частоту/частоту повторения и длительность импульса.
EM-FI Transient Probe от Riscure индуцирует быстрые, мощные электромагнитные импульсы в определенном пользователем месте чипа. Быстрые и короткие импульсы настраиваются программно, обеспечивая быструю и предсказуемую реакцию на запуск.
Целевой дрон
Подход IOActive заключался в том, чтобы использовать контролируемую среду тестирования, чтобы выяснить, возможно ли атаковать защищенный беспилотник с помощью бокового канала или методов EMFI. Чтобы обеспечить контролируемую среду, IOActive нацелился на модель дрона и версию прошивки с общеизвестными уязвимостями. Это позволило бы нам лучше понять и контролировать каждый из различных этапов путем обратного проектирования компонентов программного обеспечения, задействованных в процессе обновления прошивки. Кроме того, это даст возможность получить представление о потенциальных неисправностях устройства или других действиях, которые могут задержать тестирование. В случае успеха мы могли бы воспользоваться уроками, извлеченными на этом этапе, и попытаться провести атаки такого типа на устройствах без широко известных уязвимостей, используя подход «черный ящик». Кроме того, если какие-либо будущие цели используют тот же SoC, что и первоначальная цель, мы могли бы даже повторно использовать область поиска, определенную в ходе этого проекта. Это сэкономит драгоценное время, избавив от необходимости сканировать всю поверхность SoC и настраивать такие параметры, как продолжительность, задержка и мощность.
Учитывая эти факторы, IOActive выбрала DJI Mavic Pro. В дополнение к утечке ключей, он широко доступен на рынке подержанных автомобилей, что может быть полезно в случае аварии, приводящей к повреждению устройства во время нашего исследовательского процесса.
Подготовка печатной платы дрона
Первым шагом было определение основной печатной платы дрона и создание изолированной среды, в которой он мог бы питаться без оригинальной батареи и помещаться под датчики для анализа.
После удаления пластиковых корпусов, периферийных устройств и датчиков результат показан на рисунке 6. Интересующий нас компонент обведен красным: SoC Leadcore. Этот SoC работает под управлением пользовательской версии Android и обрабатывает USB-соединение и процесс обновления прошивки.
На рис. 7 показана анализируемая печатная плата. Следует отметить, что IOActive должен был включать внешний вентилятор для рассеивания тепла, выделяемого компонентами печатной платы. Без него температура быстро повышалась бы после включения питания, что приводило к перезагрузке.
Первый подход
Как уже упоминалось ранее, одним из основных приоритетов любого злоумышленника при доступе к системе является получение доступа к незашифрованному встроенному ПО. Поэтому нашей первой целью было изучить возможность восстановления ключей, используемых для шифрования/дешифрования пакетов встроенного ПО с использованием утечек мощности по сторонним каналам.
Утечки мощности в криптографических алгоритмах связаны с математическими операциями с использованием полезной нагрузки, контролируемой злоумышленником, и неизвестного ключа. Инструкции, в которых вычисляются данные обоих элементов, будут потреблять больше или меньше энергии в зависимости, например, от количества битов в результате. Обычно это называется моделью утечки и иногда моделируется как расстояние Хэмминга.
Цель IOActive состояла в том, чтобы построить систему, в которой мы могли бы:
1) Отправлять случайные данные в цель для последующего использования в криптографических вычислениях.
2) Выполняйть повторные тесты, чтобы собрать тысячи следов питания.
3) Проанализировать полученные данные и восстановите ключ шифрования.
Как упоминалось в шаге 1, ключевая часть использования утечки по сторонним каналам заключается в том, чтобы целевая операция обрабатывала данные с достаточной энтропией для статистического анализа. В этом случае у нас была возможность отправлять случайные данные, которые попадали бы в целевые операции криптографического алгоритма. Для этого мы проанализировали формат пакета и сгенерировали действительные пакеты, которые можно было передать в процесс расшифровки. На рис. 8 показан один из пакетов и некоторые значения, которые были изменены для передачи приложению проверки.
Сгенерированные пакеты содержат случайные данные, которые будут использоваться во время статистического анализа для сопоставления с захваченными трассировками ЭМ. Поэтому нам нужно было сгенерировать большое количество «поддельных» пакетов обновлений.
Работа над шагом 2 включала в себя понимание процесса обновления, чтобы мы могли автоматизировать задачу отправки измененных пакетов и записи электромагнитных излучений для последующего анализа.
На рис. 9 показаны этапы процесса обновления прошивки дрона DJI. Поскольку нам посчастливилось получить модель с работающей на ней оболочкой ADB, мы смогли идентифицировать процесс, связанный с подписью и расшифровкой программного пакета.
Проверка подписи и расшифровка выполнялись приложением dji_verify. Этот исполняемый файл предназначен для запуска в качестве инструмента командной строки и принимает различные аргументы, включая путь к файлу, содержащему пакет прошивки.
Дальнейший анализ бинарника позволил выявить точку, в которой производилась проверка подписи. Поскольку одна из задач — найти место на поверхности чипа, где электромагнитный сигнал сильнее, мы решили пропатчить бинарник dji_verify, чтобы обойти проверку подписи и напрямую выполнить расшифровку пакета прошивки.
На высоком уровне весь процесс состоит из следующих шагов:
1) Сгенерировать модифицированный пакет прошивки (хотя на первом этапе сканирования мы используем фиксированный).
2) Скопировать файл на дрон через ADB.
3) Выполнить пропатченный dji_verify.
4) Записать данные ЭМ и верниться к шагу 1.
Шаг 3 объединяет аппаратное и программное обеспечение, необходимое для выполнения анализа мощности. На рис. 10 показана часть установки, используемой для регистрации утечки электроэнергии. Электромагнитный зонд прикрепляется к столу XYZ и располагается поверх SoC Leadcore, где выполняются криптографические операции.
Одной из ключевых функций инструментов, поставляемых с оборудованием Riscure, был Inspector, мощный программный пакет, который реализует весь статистический, математический анализ и преобразование данных, необходимые для выполнения SCA.
Единственными отсутствующими частями являются те, которые необходимы для взаимодействия с каждым из различных устройств в области исследования. Для этого проекта IOActive разработала код Java (включенный в Приложение B), который принимает входные аргументы, такие как повторения, и координирует запуск целевого двоичного файла. Инспектор позаботится о позиционировании таблицы XYZ, считывании электромагнитных сигналов и построении графика результатов.
На этом этапе первой целью было найти область с сильным электромагнитным сигналом, чтобы мы могли разместить зонд и записать тысячи следов, чтобы получить достаточно информации для извлечения ключа.
После того, как место с самым сильным сигналом было определено, мы перешли от пропатченного двоичного файла dji_verify к исходной настройке, которая включает проверку подписи прошивки. Затем мы начали изучать возможность обхода проверки подписи с помощью EMFI.
На этом этапе мы перешли с Inspector на FI Python (FIPy), веб-фреймворк, предоставляемый Riscure для помощи в процессе FI. Это описано более подробно в разделе «Второй подход» данного документа. На рис. 11 представлен график, созданный FI Spotlight и показывающий результаты этого раунда тестирования.
После нескольких дней испытаний и анализа данных мы обнаружили, что вероятность успешного обхода сигнатуры составляет менее 0,5%. Это делает восстановление ключа невозможным, поскольку аппаратные криптографические механизмы, подобные тому, который используется в SoC Leadcore, требуют сбора сотен тысяч трассировок для выполнения атаки SCA.
В этот момент мы приостановили дальнейшие усилия по этому первому подходу, снова проанализировали цель и придумали второй сценарий атаки.
Второй подход
Было несколько потенциальных путей обхода механизмов безопасности с помощью физических атак, но большинство из них требовали модификации печатной платы. Обычно мы использовали EMFI в надежде, что JTAG сможет реализовать возможности отладки; однако вместо этого мы выбрали путь, предложенный в исследовательской статье от Riscure8.
Исследователи Riscure описывают различные результаты, которых они достигли при применении FI к целевому SoC. Был один интересный результат, применимый к исследованию IOActive, когда сбои заставляли процессор изменять содержимое регистров назначения во время операций с памятью.
Если бы приведенные выше результаты можно было воспроизвести, мы потенциально могли бы выполнить нашу собственную полезную нагрузку в процессе обновления. Отсюда вытекают следующие два требования:
1) У нас есть возможность предоставить пользовательскую полезную нагрузку для целевой системы. Мы уже знаем, что это верно из нашей работы с использованием Первого Подхода.
2) Процесс скопирует память из одного места в другое. Также из нашей работы над dji_verify мы знаем, что предоставленная полезная нагрузка сначала копируется в память, чтобы вычислить криптографическую подпись и проверить, соответствует ли она подписанной.
В этом новом пути атаки мы попытались продемонстрировать, что получение выполнения кода с использованием EMFI было правдоподобно на целевом устройстве. Общий обзор процесса выглядит следующим образом:
1) Процесс обновления копирует контролируемую злоумышленником полезную нагрузку из одной области памяти в другую.
2) Пока идет копирование, сгенерировать глюк с целью изменить поведение обрабатываемых инструкций.
3) Проанализировать результат, чтобы определить, какой тип модификации инструкции имел место.
Чтобы продолжить этот подход, нам нужно было выполнить следующие задачи:
1) Сгенерироватье пакет прошивки, который обработает программа dji_verify.
2) Получите трассировку стека и зарегистрируйте информацию, чтобы упростить процесс понимания того, была ли атака успешной. Для этого шага мы использовали GDB; это было одним из преимуществ контролируемой среды.
3) Настройте глючное оборудование Riscure и адаптируйте FIPy для работы с нашей целью.
Для выполнения задачи 1 мы изменили заголовок пакета и добавили в качестве полезной нагрузки файл, содержащий 10 МБ 0x41 байт, как описано в первом подходе. Это помогает оценить фактическую пригодность инъекции при анализе вывода GDB.
Одним из ограничений настройки EMFI является поиск точного аппаратного триггера. Плотность компонентов и многослойная печатная плата затрудняют поиск правильного сигнала без риска разрушения образцов (одно из ограничений для этого проекта). Чтобы преодолеть эту проблему, мы полагались на время, исходя из момента, когда мы получили информацию через вывод ADB; однако этот подход снижает повторяемость инъекции, что затрудняет поиск успешного попадания.
На рис. 12 показана установка, которую мы использовали для EMFI для выполнения задачи 3. Электромагнитный датчик подключен к таблице XYZ, а инструмент Spider подключен к компьютеру, который обеспечивает синхронизацию триггера. Осциллограф используется для проверки того, что мы вводим правильные формы импульсов в нужное время, и его выходные данные показаны на рисунке 13.
Между работой с Inspector и FIPy есть одно различие: первый предоставляет интерфейс Java, а второй выполняет скрипт Python. На этот раз мы собрали сценарий Python (включенный в Приложение C), который управляет взаимодействием с целевым устройством, запрашивает инструмент Spider для запуска сбоя и сохраняет результаты.
Как только вся установка заработала безупречно, нам нужно было запустить тест несколько раз вокруг оси XY с разной силой сбоев и временем, пока мы не идентифицировали успешную или потенциальную ошибку, которая могла бы помочь нам сузить область поверхности.
Определив достаточно небольшую область, мы изменили форму и время сбоя, пока не увидели успешный сбой. После многочисленных попыток мы получили то, что искали: произошел сбой программы dji_verify, как показано в следующем выводе.
Наша полезная нагрузка появилась в нескольких регистрах. Изучив код по целевому адресу, мы определили, что попали в выигрышную комбинацию времени, позиции и формы сбоя.
На рис. 14 ясно показана инструкция загрузки, копирующая данные IOActive в регистры R0 и R1. Выходные данные GDB выше показывают, что регистры R3 и R4 также оказались с контролируемыми данными.
Вместо копирования данных в буфер назначения следующие две инструкции копируют R0 и R1 в контролируемый адрес.
Скорее всего, здесь произошло то, что мы смогли изменить инструкцию загрузки, и вместо чтения только двух регистров она закончила чтение четырех. Исходная кодировка инструкции:
В то время как кодировка инструкции, которая привела бы к результатам, которые мы наблюдали, была:
Это означало, что сбой мог изменить один байт, перевернув два последовательных бита и преобразовав одну инструкцию в другую.
Достигнув этого результата, следующим шагом будет написание правильной полезной нагрузки, которая превращает это повреждение памяти в эксплойт для выполнения кода. Это может позволить злоумышленнику полностью контролировать одно устройство, слить весь его конфиденциальный контент, включить доступ к ADB и, возможно, слить ключи шифрования.
Будущая работа
В этой статье мы описали материалы и методы, которые мы использовали для успешной реализации атаки на БПЛА (беспилотный летательный аппарат) с использованием методов ЭМП.
Целью этого проекта было изучение возможности таких атак на сложном и современном устройстве. Поскольку нам удалось доказать, что при обработке обновления прошивки на устройстве можно получить контроль во время выполнения, следующим шагом будет применение полученных знаний на другой модели от DJI, не имеющей ранее известных уязвимостей.
Чтобы выполнить эту задачу и создать надежный эксплойт в рамках ограничений по времени и бюджету, необходимо улучшить несколько элементов:
1) Аппаратный триггер: это, вероятно, единственный элемент, который наиболее значительно сократит время и сложность проекта. Как упоминалось в этой статье, мы использовали исключительно программный триггер на основе времени, что затрудняет надежное знание того, как выявить успешный сбой.
Есть два разных способа реализовать желаемый аппаратный триггер: (i) найти светодиод или доступную трассировку печатной платы, по которой мы могли бы обнаружить изменение уровня при обработке обновления прошивки, или (ii) использовать ICWaves от Riscure для определения сигнатуры питания, совпадающую с обрабатываемым пакетом обновления микропрограммы.
2) Интеграция: интегрируйте все элементы, представленные в этом отчете, вместе с аппаратным триггером и пакетом прошивки, отправляемым на дрон, поскольку он будет работать при фактическом обновлении прошивки.
3) Полезная нагрузка: Создайте полезную нагрузку, которую можно было бы легко проверить, чтобы определить, был ли сбой успешным. Существуют разные варианты, но одним из наиболее очевидных было бы включение ADB, чтобы мы могли проверить, активно ли USB-соединение с хоста, запускающего атаки.
Защита
Растущее количество опубликованных исследований показало многообещающие результаты применения EMFI для компрометации целевой системы. Это открывает новый ландшафт потенциальных атак и слабых мест в текущих и будущих продуктах.
IOActive рекомендует разработчикам продуктов реализовывать меры противодействия EMFI в своих продуктах, защищая эти атаки путем реализации аппаратных и программных мер противодействия. Аппаратные меры противодействия очень эффективны для предотвращения атак ЭМП, но могут быть дорогостоящими и должны планироваться на ранних этапах проектирования. С другой стороны, программные средства противодействия могут быть добавлены на заключительных этапах разработки, но они могут оказаться менее эффективными для защиты определенных атак. Информация о реализации контрмер EMFI общедоступна в научных статьях, презентациях на конференциях и в сообщениях в блогах.
Мы также рекомендовали оценить эффективность контрмер EMFI с помощью сторонней лаборатории, такой как IOActive.
Переведено специально для xss.pro
Автор перевода: yashechka
Источник: Gabriel Gonzalez Director of Hardware Security