Безопасность дронов DJI и уязвимость DroneID
Безопасность дронов DJI и уязвимость DroneID

0x01 Сводка

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

В дополнение к традиционным мерам противодействия лидер рынка DJI внедрил протокол отслеживания дронов под названием DroneID, который предназначен для передачи местоположения дрона и его оператора уполномоченным органам, например правоохранительным органам или операторам критической инфраструктуры.

В этой статье анализируются заявления о безопасности и конфиденциальности дронов с акцентом на DJI, ведущего производителя с долей рынка 94%. Во-первых, мы систематизируем поверхность атаки существующих дронов и расследуем атаки, способные перехватить воздушный трафик дронов. Декодер DroneID, собственного протокола отслеживания DJI, был реализован путем обратного проектирования прошивки DJI с использованием только дешевого оборудования COTS. Результаты показывают, что данные, передаваемые DroneID, не зашифрованы и доступны каждому, что ставит под угрозу конфиденциальность операторов дронов.

image
image

Во-вторых, был проведен комплексный анализ безопасности дронов: объединив реверс-инжиниринг, новый метод фазз-тестирования, адаптированный для протокола связи DJI, и аппаратный анализ, исследователи обнаружили несколько ключевых недостатков в прошивке дрона, которые позволяли проводить атаки. Игроки получают расширенные привилегии в DJI. дроны и их пульты дистанционного управления на двух разных платформах. Этот root-доступ может привести к отключению, обходу контрмер или злоупотреблениям. В ходе исследования было обнаружено в общей сложности 16 уязвимостей, начиная от отказа в обслуживании и заканчивая выполнением произвольного кода и многим другим. Четырнадцать из этих ошибок могут быть вызваны удаленно через смартфон оператора и привести к падению дрона во время полета.

0x02 Введение в исследование

Несмотря на потенциальные риски безопасности и конфиденциальности, а также неправомерное использование дронов, аспекты системной безопасности дронов не были полностью оценены. Это исследование включает в себя:

**• Анализ безопасности: **Комплексный анализ безопасности потребительских дронов от лидера рынка DJI. Этот анализ включает в себя аппаратное, программное обеспечение и физические уровни беспроводной связи самого дрона и пульта дистанционного управления. Анализ выявил множество критических уязвимостей безопасности, которые позволяют произвольно выполнять команды и обходить контрмеры, даже удаленно выводя из строя дрон в полете.

• DroneID:Для текущего DJIдронизпрошивкаибеспроводной физический уровень ХОРОШОобратный инжиниринг для анализа DJI собственный транспортный протокол Оку Синк. На основе этих результатов был получен DroneID. Комбинация приемников, демодуляторов и декодеров для раскрытия конфиденциальной информации, включая местоположение дронов и удаленных операторов в реальном времени.

**• Фазз-тестирование: **Разработан и реализован собственный фаззер «черного ящика», который DJI Специфический синтаксис и новые ошибки Oracle объединяется для идентификации дрона и его пульта дистанционного управлениясерединаиз Вина。ДолженfuzzerВыяснили, что можно использовать для получения root-доступа,DJI уже исправил все ошибки。Фазз-тестированиерамкаи Соответствующие данные были в открытом доступе:https://github.com/RUB-SysSec/DroneSecurity

0x03 Принципы и основы DJI БПЛА

DJI — ведущий мировой производитель коммерческих дронов с общей долей рынка около 54% (по состоянию на 2021 К концу года доля рынка потребительских дронов составила 94%。DJI Предоставляет копию своего механизма безопасности.изофициальный документ(https://security.dji.com/data/resources/ ), тем самым создавая прочную основу для обеспечения безопасности и защиты. Учитывая практическую значимость DJI, работа в данном исследовании сосредоточена на 200 достигать 1 Потребительские дроны весом от килограмма. В этой работе использовались три разные модели дронов DJI и соответствующие им пульты дистанционного управления. (RC) Выполните анализ безопасности и реверс-инжиниринг различных прошивок:

• DJI Mini 2,RC:RC231

• Mavic Air 2,RC:RC231

• Mavic 2 Pro / Zoom, RC: RC1B

А. Коммуникационные интерфейсы и протоколы

Ниже представлен обзор интерфейсов и протоколов связи дронов DJI, которые напрямую подвергаются атакам злоумышленников.

image
image

На схеме выше показаны различные интерфейсы дронов DJI и то, как они используются для связи между дроном, пультом дистанционного управления (RC) и компьютером. Во время работы дрона он обменивается данными с пультом дистанционного управления, а компьютер используется только для анализа, обновления или доступа к файлам на дроне или пульте дистанционного управления.

1. USB

Дроны и пульты дистанционного управления обычно имеют порт USB для различных категорий устройств и вариантов использования. Предполагаемый вариант использования — загрузка таких данных, как медиафайлы из внутренней памяти или журналы полетов с бортового самописца. В устройствах DJI интерфейс USB также используется для отправки команд DJI Universal Markup Language (DUML) — собственного протокола связи DJI — для управления внутренними настройками устройства или запуска обновлений прошивки. Кроме того, во время процесса загрузки устройства открывается загрузчик, который может быть запущен с помощью определенных USB-пакетов. На пульте дистанционного управления (RC231) имеется два USB-порта, один используется для подключения смартфона и пульта дистанционного управления для доступа к приложению DJI Fly, а другой используется для зарядки пульта дистанционного управления. Порт зарядки также можно использовать для подключения пульта дистанционного управления к компьютеру.

2. UART

Интерфейс универсального асинхронного приемопередатчика (UART) в основном используется в микроконтроллерах для проводной связи. Этот интерфейс UART также можно найти в дронах DJI, таких как трансивер Sparrow S1, также известный как система S1 на чипе (SoC). В ходе аппаратного анализа было обнаружено, что интерфейс был включен в течение двух секунд после запуска и отображал экран запуска загрузчика.

3. Беспроводной физический уровень

Включает Bluetooth, Wi-Fi и OcuSync. Новейшие дроны DJI поддерживают различные беспроводные протоколы, такие как Bluetooth и Wi-Fi. Например, используйте приложение DJI Fly для передачи фотографий с камеры дрона на смартфон. Подключение к Wi-Fi также доступно на старых дронах, таких как Mavic Pro или Mavic Air, но используется для канала управления (C2) для управления дроном с вашего смартфона. В новых дронах DJI этот канал связи заменен собственным радиопротоколом OcuSync, который работает значительно лучше и менее подвержен помехам.

4. DUML

DUML — это собственный протокол связи, используемый DJI для отправки команд и данных между внутренними модулями и от пульта дистанционного управления к дрону. DUML используется для установки и изменения параметров дрона, таких как параметры полета для максимальной высоты или различных параметров скорости, таких как максимальная скорость подъема и спуска. Поскольку процесс анализа этого протокола подвержен ошибкам, DUML является интересной целью для дальнейшего анализа безопасности. Поэтому подробный обзор этого пользовательского протокола представлен ниже.

Различают две версии протокола DUML: V1 и Logic. Протокол Logic используется для внутренней связи между различными модулями дрона, а протокол V1 — для связи между компьютером и дроном через USB.

image
image

Как показано на рисунке выше, структуру пакета DUML можно разделить на четыре части: заголовок, транспорт, команду и полезную нагрузку. Заголовок содержит магический байт с фиксированным значением 0x55, за которым следуют длина пакета, номер версии и контрольная сумма заголовка CRC-8. За заголовком следуют транспортные данные, определяющие отправителя/получателя команды DUML. Существует 32 известных типа отправителей и получателей (например, ПК, мобильное приложение, центральная плата и Wi-Fi). Помимо источника и места назначения, передающая часть пакета содержит уникальный порядковый номер, который используется для поддержания порядка нескольких пакетов.

image
image

Третья часть пакета DUML — это отдельная команда. Здесь определяются поля «тип команды», «командный набор» и «командный идентификатор». Тип подтверждения, тип пакета и тип шифрования будут установлены в зависимости от типа команды. набор команд указывает, какой набор команд можно использовать с идентификатором команды. Доступно 17 известных наборов команд, таких как общие, контроллер полета, Wi-Fi или батарея. Результаты обратного проектирования подтвердили эти выводы. Последняя часть пакета — это полезная нагрузка и контрольная сумма CRC-16, рассчитанная для всего пакета. Из соображений эффективности используйте специальную кодировку, в которой информация компактна. Изображения выше и ниже суммируют это кодирование и декодирование соответственно. Далее мы проведем динамическое тестирование безопасности на основе восстановленного формата DUML и используем его для создания собственной среды нечеткого тестирования.

image
image

5. Приложения DJI Fly и DJI Go 4.

DJI предлагает приложение для iOS и Android, которое отображает прямую трансляцию видео и другие элементы управления. Новейшие дроны используют приложение DJI Fly, а традиционные дроны — приложение DJI Go 4. Оба приложения предлагают по существу одинаковую функциональность, в частности, оба отображают видеотрансляцию дрона в реальном времени, позволяют делать фотографии и записывать видео, изменять различные настройки дрона, обновлять прошивку или проверять общее состояние дрона.

Б. Прошивка дрона

В зависимости от сложности дроны используют разные операционные системы (ОС). Для большинства дронов DJI операционная система основана на Android, который также используется в старых версиях пультов дистанционного управления (например, Mavic Pro RC GL200). В серии DJI Mini используется 32-битная ARM Linux на базе Buildroot. Для операций, критичных по времени и производительности, используйте операционную систему реального времени (RTOS), например Например, полетные контроллеры и более новые RC, такие как RC231, используют в приемопередатчике два RTOS для управления радиочастотным (RF) соединением — приложение и коммуникационный процессор. Прошивка для ОСРВ в трансивере доступна в виде зашифрованных двоичных файлов для обоих процессоров. Операционная система (кроме прошивки RTOS) основана на пакете программного обеспечения BusyBox, обычно используемом во встраиваемых системах. DJI кодирует свою прошивку в собственный формат файлов, который зашифрован с помощью AES и подписан RSA. Различные модули, файлы и варианты использования (например, обновления встроенного ПО или передача) используют разные ключи шифрования. Некоторые из этих ключей шифрования были раскрыты членами сообщества DJI и используются для расшифровки частей прошивки. Исследователи подтвердили, что эти ключи действительны.

C. Аппаратное обеспечение дрона

Далее представлен обзор типичных аппаратных компонентов, используемых в БПЛА. На изображении ниже представлен обзор основных компонентов такого дрона на примере DJI Mini 2. На диаграмме также показано, как различные компоненты связаны друг с другом и как они взаимодействуют друг с другом. Этот обзор и последующее описание применимы к другим моделям дронов DJI, которые отличаются только характеристиками компонентов или имеют дополнительные датчики.

image
image

1. Контроллер полета

Контроллер полета является наиболее важной частью дрона и должен быть надежным, предсказуемым и детерминированным при любых обстоятельствах. Чтобы обеспечить эти свойства, контроллер полета использует RTOS. Контроллер контролирует поведение полета, собирая данные от датчиков, таких как инерциальный измерительный блок (IMU), компас, GPS или система визуального позиционирования (VPS). Он использует эту информацию для поддержания стабильного полета, отправляя команды контроллеру электронного управления скоростью (ESC), который регулирует скорость четырех двигателей. Кроме того, он отвечает за одобрение полета и разрешение дрону на взлет, проверяя состояние ESC, аккумулятора и других модулей. Кроме того, он проверяет базу данных внутренней бесполетной зоны (NFZ), чтобы определить, запрещен ли дронам вход в определенные районы близлежащего воздушного пространства. Контроллер полета получает команды управления через приемопередатчик (здесь SoC S1) и реагирует на ввод пользователя, полученный от этого SoC. Кроме того, контроллер полета отправляет на трансивер информацию от различных модулей и датчиков.

2. Кодирование видео и SoC для предотвращения коллизий

SoC управляет датчиками изображения и кодированием видео. Он получает видеоданные и изображения с камеры, обрабатывает их и передает на трансивер. Если для предотвращения столкновений установлены дополнительные датчики, их данные также будут обрабатываться в этой SoC. Помимо отправки видеоданных на трансивер, SoC также использует интерфейс USB для хранения изображений или видео во внутренней памяти или на SD-карте. Наконец, он управляет процессом обновления прошивки дрона. Этот SoC использует операционную систему на базе Linux или Android для дронов DJI.

3. Пульт дистанционного управления

Пульт дистанционного управления управляет дроном и камерой через канал C2. Пользовательский ввод с контроллера и смартфона передается на трансивер, который модулирует сигнал и передает его по протоколу OcuSync. Кроме того, RC получает от дрона данные по нисходящей линии связи, включая данные телеметрии и видеопотоки, и передает их на смартфон. RC231 также использует SoC S1 в качестве приемопередатчика и поддерживает новейшие дроны DJI, такие как DJI Mini 2, Mavic Air 2, Mavic Air 2s и Mavic 3. Дроны используют транспортный протокол OcuSync для C2 и нисходящей линии связи. Выбранная версия OcuSync основана на реальной модели дрона — это может быть OcuSync 2.0, 3.0 или 3+.

4. Трансивер

Трансивер объединяет передатчик и приемник, используемые для радиосвязи, и является важной частью дрона. Он работает через собственный протокол или стандарт беспроводной связи, такой как Bluetooth или Wi-Fi. Некоторые из новейших дронов DJI используют так называемые трансиверы Sparrow S1 для передачи данных OcuSync. Трансивер представляет собой запатентованную SoC на базе процессора ARM Cortex-M, которую можно найти в Mini 2 и Mavic Air 2. Mavic Air 2s и Mavic 3 используют в качестве приемопередатчика так называемую SoC P1 (Pigeon). В данном исследовании основное внимание уделяется SoC S1.

SoC служит приемопередатчиком для OcuSync и содержит две RTOS для процессора приложений и коммуникационного процессора. Прошивка для RTOS называется прошивкой Sparrow и ее можно найти в обновлениях прошивки RC, а также в файловой системе дрона. Приемопередатчик дрона получает данные телеметрии и другие отчеты от контроллера полета, а также видеоданные от системы кодирования видео. Все эти данные затем радиомодулируются и передаются через антенну. Кроме того, трансивер получает канал C2 от пульта дистанционного управления и передает эти данные контроллеру полета.

5. Чип Wi-Fi/Bluetooth

Чип Wi-Fi или Bluetooth также может выступать в качестве приемопередатчика, подключаясь к пульту дистанционного управления или смартфону для управления дроном. Однако недостатком этой установки является то, что дальность действия и надежность не так хороши, как у собственных радиопротоколов. DJI Mini 2 и Mavic 3 оснащены дополнительным чипом Wi-Fi и Bluetooth, который позволяет пользователям легко получать доступ к мультимедийным файлам, хранящимся на дроне.

6. Дополнительные датчики и другое оборудование

Большинство современных потребительских дронов оснащены камерой высокого разрешения, прикрепленной к подвесу. Этот подвес компенсирует движения дрона и обеспечивает стабильное изображение. Помимо основной камеры, дрон может использовать и дополнительные камеры, чтобы избежать столкновений. Другие датчики могут включать инфракрасные или ультразвуковые датчики для измерения высоты дрона или датчики акселерометра и гироскопа для измерения ускорения и наклона соответственно.

D. Физический уровень беспроводной связи

Нынешнее поколение дронов DJI использует собственный протокол OcuSync для беспроводной передачи данных в нерегулируемых диапазонах ISM 2,4 ГГц и 5 ГГц. Дрон передает видео в реальном времени с высокой пропускной способностью на пульт дистанционного управления, а затем на подключенный смартфон. RC управляет дроном через сигналы C2. По данным DJI, как восходящий, так и нисходящий канал шифруются с помощью AES-256. OcuSync имеет дальность передачи около 15 километров в диапазонах ISM 2,4 ГГц и 5 ГГц.

Согласно базе данных FCC ID, эти устройства используют каналы шириной 20 МГц для передачи сигналов нисходящей линии связи (от дрона к удаленному устройству) и мультиплексирования с ортогональным частотным разделением каналов (OFDM). Скачкообразное изменение частоты, которое контролирует использование более узких сигналов в восходящей линии связи. Ранние дроны использовали «расширенный Wi-Fi», который можно было перехватить с помощью карт Wi-Fi. Напротив, не существует общедоступных приемников, совместимых с OcuSync, которые могли бы декодировать сигналы дронов или радиоуправляемых устройств.

0x03 Анализ безопасности без физического доступа

Дроны — это сложные киберфизические системы, состоящие из множества модулей. Как показано на предыдущем рисунке, эти модули предоставляют злоумышленникам различные интерфейсы. Взаимодействие компонентов и интерфейсов требует систематизации функций доступа для обеспечения комплексного анализа безопасности дронов. Эти интерфейсы можно разделить на беспроводные интерфейсы и интерфейсы, требующие физического доступа.

A. Модель угрозы – пассивная атака

В первой части анализа безопасности предполагается сценарий, когда злоумышленник не имеет физического доступа ни к самому дрону, ни к ПЦ. Таким образом, злоумышленник ограничивается беспроводными каналами и широковещательными сигналами. Предположим, что злоумышленник пассивно прослушивает физический уровень беспроводной связи, чтобы определить местонахождение дрона и сопровождающего его RC (т. е. оператора). Мы ослабляем это предположение и считаем, что злоумышленник имеет физический доступ к дрону и, следовательно, имеет более широкий спектр возможностей использования эксплойтов и возможность доступа к критической информации.

image
image

Б. Беспроводная связь

Беспроводная связь является ключевым вектором атаки, поскольку она управляет дроном и к ней можно получить удаленный доступ. Дроны DJI используют собственный протокол OcuSync для управления дроном и потоковой передачи видео на пульт дистанционного управления. DJI продает Aeroscope, устройство, которое позволяет правоохранительным органам обнаруживать дроны и операторов. Для этого позиционирования Aeroscope слушает специальный сигнал DroneID, который транслируется всеми дронами DJI. К сожалению, ни OcuSync, ни DroneID не задокументированы публично и не имеют открытых приемников. В официальном документе по безопасности DJI нет явного упоминания о передачах DroneID, их функциях или содержании. В этом разделе мы представляем результаты реверс-инжиниринга трансляций DroneID и показываем, как успешно извлечь конфиденциальную информацию, такую ​​как местоположение дрона и удаленного оператора.

Путем сканирования полосы частот были идентифицированы радиопередачи с очень маленькими размерами пакетов и периодическими появлениями, отделенные от широкополосного видеопотока и каналов управления восходящей линией связи. Есть подозрение, что это трансляции DroneID, используемые для обнаружения и идентификации дронов. DJI поддерживает эту функцию как минимум с 2017 года. Правила использования дронов, требующие трансляции местоположения через открытые стандарты (на основе Wi-Fi или Bluetooth), в настоящее время разрабатываются, но еще не доработаны. Поэтому предполагается, что новейшие дроны для таких трансляций используют протокол OcuSync. Анализируя пакеты, вы можете узнать:

а) Какие данные включены в DroneID текущего поколения;

б) Имеются ли (неожиданные) функции безопасности.

1. Приемник DroneID

Реализован приемник в реальном времени для DroneID с использованием программно-определяемого радио (SDR) для захвата сигнала и цепочки обработки на основе Python. Реализация прототипа включает в себя полный процесс получения сигнала, демодуляции, декодирования и проверки с помощью контрольной суммы CRC. В основном проводится поэтапный анализ для получения неизвестных параметров собственных протоколов из радиосигналов, что само по себе является сложной задачей.

Приемник реализует прием и декодирование пакетов в реальном времени. Кроме того, это решает еще одну проблему — проблему динамического переключения дронов между диапазонами частот 2,4 ГГц и 5,7 ГГц. Поэтому обе полосы частот непрерывно сканируются для поиска кадров-кандидатов, и эти кадры-кандидаты подаются на этапы демодуляции и декодирования. На рисунке ниже показаны структура и компоненты приемника, а также внутренняя обработка полученных данных, включая поиск частоты, обработку сигнала, демодуляцию и декодирование. Детали этой системы более подробно описаны ниже:

image
image

В этой части работы использовалась USRP B200mini SDR, подключенная к ноутбуку. SDR одновременно записывает до 56 МГц в диапазоне частот от 70 МГц до 6 ГГц. Приемник сканирует каждый диапазон в течение 1,3 секунды при полосе пропускания 50 МГц с размером пакета 496 МБ на диапазон. Как только кадр найден, полоса блокируется для непрерывной записи кадров DroneID, возвращаясь к сканированию только тогда, когда дрон переключает каналы и не получает новых пакетов в течение нескольких циклов.

2. Спектральный анализ

Как упоминалось выше, спецификации OcuSync и DroneID не являются общедоступными. На основании анализа становится ясно, что эти протоколы используют те же методы и параметры модуляции, что и LTE. Шаг за шагом реконструируйте все последующие параметры. На рисунке ниже показан спектр одного радиокадра DroneID. Пакет содержит девять флагов, включая два флага синхронизации Задова-Чу (ZC) (столбцы 4 и 6). Остальные флаги представляют собой флаги данных OFDM с 601 поднесущей (600 данных и 1 DC) с разнесением поднесущих 15 к Гц. Несущие дополняются до следующей степени 2 для применения быстрого преобразования Фурье (БПФ) на следующем этапе, что дает в общей сложности 1024 поднесущих с общей полосой пропускания 15,36 МГц (включая защитные полосы).

image
image

Журнал показывает, что пакеты передаются повторно каждые 640 миллисекунд. Замечено, что некоторые дроны (Mavic 2 и более ранние дроны OcuSync) не отправляют первый флаг (флаг 1), что приводит к более короткой продолжительности кадра — 576 мкс. Остальные параметры остаются неизменными.

3. Демодуляция

Преобразование радиосигналов в биты и байты требует нескольких шагов:

a) синхронизация по времени для определения границ маркеров OFDM и синхронизация по частоте для согласования с поднесущими OFDM, несущими полезную нагрузку;

б) оценка канала учитывает искажения во время радиопередачи;

в) Демодуляция поднесущих (т. е. расположение поднесущих OFDM на месте).

*Синхронизация времени с помощью циклического префикса: *Символы не могут быть добавлены непосредственно один за другим, но между ними требуется заполнение, чтобы уменьшить помехи между флагами. Для DroneID пробелы между флагами заполняются циклическим префиксом (CP): копия конца каждого флага добавляется к началу соответствующего флага. Это позволяет применять временную синхронизацию Шмидла-Кокса – связывать два блока, сдвинутых на одну длину метки и имеющих ширину циклического префикса. Принцип показан на рисунке ниже. Длина циклического префикса составляет 72 выборки, за исключением флагов 1 и 9, которые имеют расширенный циклический префикс длиной 80 выборок. Пик корреляции на графике ниже показывает начало отметки во временной области. Имея информацию о точном начале знака, знак можно перенести в частотную область с помощью БПФ — 1024 выборки из временной области дают в результате 1024 поднесущие в частотной области. После синхронизации циклический префикс больше не нужен и отбрасывается.

image
image

*Коррекция смещения частоты с помощью последовательностей Задова-Чу: *Обнаружено, что метки 4 и 6 всегда содержат последовательности ZC с корнями 600 и 147. Сопоставьте локально сгенерированную последовательность ZC с фактическим флагом, сгенерируйте любое смещение несущей частоты и примените сдвиг частоты для коррекции.

*Демодуляция поднесущих и распределение битов: *Поднесущие OFDM модулируются квадратурной фазовой манипуляцией (QPSK). То есть сигнал несущей сдвигается по фазе на один из четырех возможных углов, чтобы модулировать сообщение сигнала в два бита. На рисунке ниже показаны четыре различных фазовых сдвига, в результате чего образуются четыре кластера (если они представлены в виде комплексных чисел) и их соответствующие битовые представления. Чем лучше синхронизация и коррекция ошибок, тем четче группировка. Следующие шаги декодирования покажут, правильно ли распределение битов.

image
image

4. Декодирование

Предыдущие шаги преобразуют радиосигнал в битовый поток, который можно декодировать для получения фактической полезной нагрузки DroneID. Анализ прошивки S1 показал, что данные были зашифрованы с помощью золотой последовательности, которая заполнила базовый регистр сдвига с линейной обратной связью (LFSR). Кроме того, он кодируется с помощью турбокодера с использованием той же таблицы перестановки подблоков, что и в спецификации LTE.

image
image

Он был найден в прошивке дрона путем реверс-инжиниринга с использованием дескремблирования и турбодекодирования битового потока и сопоставления полученных данных со структурой DroneID, указанной выше. Контрольная сумма CRC, содержащаяся в каждом пакете, соответствовала расчету, что указывает на правильность восстановления данных. На изображении ниже показан пример успешного восстановления полезных данных DroneID.

image
image

5. Производительность

В этом исследовании изучались трансляции DroneID с различных дронов DJI, таких как Mini 2, Mavic Air 2 и Mavic 2 Pro/Zoom. Все эти модели используют протокол OcuSync 2.0. Затем приемник был протестирован на открытом воздухе с использованием дрона, при этом дрон и оператор перемещались для генерации нестатических пакетов DroneID. Результаты показывают, что трансляции всех этих моделей можно успешно декодировать. Декодированная трансляция показывает, что вся информация о местоположении точна и обновляется с каждым пакетом, что позволяет восстановить полную траекторию полета. Для обнаружения дрона и оператора требуется только пакет DroneID. Чем больше пакетов можно декодировать, тем выше разрешение траектории полета. Процент обнаруженных кадров, попыток декодирования и успешных декодирований рассчитывается с использованием соответствующего CRC и сравнивается с ожидаемым числом (на основе интервала DroneID 640 мс). Предварительные измерения показывают, что для всех протестированных дронов примерно 37% ожидаемых пакетов были декодированы правильно, то есть обновление местоположения получалось каждые две секунды.

6. Результаты

Радиус действия приемника ограничен примерно 10 м и чувствителен к возникающим помехам, например, от соседних станций Wi-Fi. Этот эффект можно объяснить тем, что цепочка приемников сосредоточилась на обратном проектировании сигнала, а не на оптимизации производительности или большого радиуса действия. Тестирование показало, что запатентованные передачи DJI DroneID могут успешно и надежно приниматься, демодулироваться и декодироваться в пределах зоны действия приемника. Самым важным открытием было то, что сигнал не был зашифрован. Наблюдения показывают, что DroneID точно показывает местоположение дрона, домашней точки и удаленного оператора.

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

Теперь можно наблюдать и декодировать пакеты DroneID — что раньше было невозможно без доступа к приемнику DJI Aeroscope — тем самым проверяя, можно ли отключить DroneID или подделать местоположение передачи. Следующие два эксперимента были проведены:

а) подмена местоположения оператора;

б) Отключите DroneID с помощью недокументированной команды DUML.

Для подмены местоположения оператора использовался нерутированный телефон Android и приложение под названием «Fake GPS» из Google Playstore. После настройки поддельного местоположения в приложении-подделке переключитесь на приложение DJI, запустите дрон и включите приемник. Приемник начинает искать и декодировать действительный пакет DroneID, в котором положение дрона установлено правильно, но переданные удаленным оператором координаты установлены на ложное положение. Приложение позволяет моделировать случайные движения, которые также можно проверить по полученным пакетам DroneID. Расстояние между дроном, домашней точкой и фальшивой GPS-позицией оператора не играло роли. Таким образом, был сделан вывод, что DJI не проводила проверки на согласованность координат и могла успешно подделать местоположение удаленного оператора.

Кроме того, во время анализа безопасности была обнаружена общеизвестная команда DUML, которая, по-видимому, позволяет настраивать и отключать различные значения DroneID. По мнению DJI, эта команда является частью внутреннего API и не должна предоставляться извне. В последних моделях это исправлено. Используя действующий декодер DroneID, можно подтвердить, что эта команда не отключает пакет DroneID, а вместо этого заменяет соответствующее значение в пакете значением «fake».

0x04 Анализ безопасности с физическим доступом

A. Модель угрозы – активная атака

Предполагая, что в этом разделе присутствует активный злоумышленник, рассмотрим сценарий, в котором злоумышленник имеет физический доступ к дрону, его ПДУ и смартфону, подключенному к ПДУ. Предполагается, что цель злоумышленника — отказать в обслуживании или обойти меры противодействия DJI, реализованные против дрона. Например, они могут захотеть разбить дрон во время полета, отключить DroneID, геозоны или другие программные ограничения, чтобы пролетать над зонами с ограниченным доступом. Первым шагом в достижении этой цели является возможность извлечь прошивку, работающую на дроне, а затем повысить привилегии.

Хоть и предполагается физический доступ к дрону, но это в первую очередь для самого процесса анализа. Как было продемонстрировано, практически любую команду можно отправить дрону по беспроводной сети, как только будет обнаружена интересная команда. Другими словами, был проанализирован и вариант этой активной модели злоумышленника: злоумышленник лишь скомпрометировал смартфон пользователя, подключенный к ПДУ (что во время полета является нормальным явлением), но не имел физического доступа к разрешениям самого дрона.

Б. Обзор

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

Прежде чем использовать автоматизированные методы динамического анализа, такие как фазз-тестирование, которые оказались неоценимыми для эффективного поиска ошибок в программном обеспечении и встроенном ПО, необходимо понимать сложность тестируемой цели. Например, необходимо определить интерфейсы и протоколы связи. Для этого необходимо вручную статически проанализировать прошивку и проанализировать аппаратную часть дрона. Помимо предоставления базовой информации для автоматического динамического анализа, таким образом было обнаружено несколько критических уязвимостей безопасности. На основе выявленного протокола связи DUML был разработан инструмент фазз-тестирования для автоматического поиска дополнительных уязвимостей и обнаружения большого их количества. Все результаты были раскрыты и подтверждены поставщиком DJI.

Для детального анализа были исследованы следующие аппаратные устройства DJI: DJI Mini 2, Mavic Air 2 и Mavic 2 Pro/Zoom. Кроме того, на пульте дистанционного управления RC231/RC-N1 (используемом в новейших дронах DJI, включая DJI Mini 2, Mavic Air 2 и Mavic 3) была изучена и воспроизведена обнаруженная на последнем дроне DJI Mavic 3 ошибка.

C. Первоначальный ручной анализ и взаимодействие

Прежде чем устанавливать какую-либо технологию автоматического анализа (например, нечеткое тестирование), необходимо понять ее цели.

1. Ручной статический анализ

Применяйте ручной статический анализ к различным частям прошивки дрона, например к контроллеру полета, и получайте ключевую информацию о различных функциях и функциях дрона. Для анализа использовались стандартные инструменты, в частности Ghidra, Binwalk, hex-редактор и dji-firmware-tools. Ручной статический анализ выявил информацию о структуре DUML, заложив основу для динамического анализа, описанного в последующих разделах. Помимо предоставления важной информации для понимания и анализа дрона, статический анализ вручную также выявил уязвимость, которая позволяла обойти сигнатуру прошивки DJI и получить привилегированную оболочку на устройстве.

1. Обход проверки подписи прошивки S1 SoC

Прошивку для S1 SoC можно найти на дроне как sparrow_firmware или в обновлениях прошивки, найденных в Интернете. Она состоит из различных двоичных файлов; Частью этого пакета прошивки является так называемый файл конфигурации «SDRH». Эти файлы не подписаны и не зашифрованы по своей конструкции, а статический анализ загрузчика вручную показывает, что в этих файлах указаны адреса памяти и их значения. Предполагается, что DJI использует их для установки патчей в прошивку трансивера без необходимости перепрошивки всей прошивки. DJI не раскрыла никаких подробностей и не упомянула документы в своем официальном документе по безопасности. Загрузчик читает эти файлы и исправляет определенные адреса памяти ОЗУ RTOS с указанными значениями. Использование файла SDRH, созданного вручную, позволяет обновлять прошивку во время загрузки, которая происходит после проверки подписи прошивки. Этот подход полностью обходит процесс подписи прошивки и позволяет злоумышленнику, способному предоставить созданный файл SDRH, вносить произвольные изменения в код прошивки.

image
image

В таблице выше перечислены дроны и RC, на которые распространяется этот обход сигнатуры (Sig.Bypass). Mavic 3 и Mavic 2 Pro не затронуты, поскольку они используют другой трансивер, чем уязвимый S1. Согласно сообщению об уязвимости, DJI присвоила ей статус критической.

2. Перенос файлов SDRH через Fastboot.

Чтобы найти механизм передачи файлов SDRH на дрон, были изучены различные двоичные файлы дрона и обнаружено, что прошивка была прошита в оперативную память SoC через такую ​​систему, как Quickboot. Для этого необходимо, чтобы загрузчик находился в правильном состоянии, чтобы принимать эти команды быстрой загрузки. Путем обратного проектирования двоичного файла инициализации файловой системы дрона было обнаружено, что загрузчик трансивера может быть запущен путем отправки другого правильно отформатированного пакета. Отправка таких пакетов на RC через USB во время загрузки включает режим быстрой загрузки. Разблокировав режим быстрой загрузки, его можно использовать для загрузки (подписанных) файлов прошивки трансивера и (неподписанных) файлов SDRH. Это позволяет злоумышленнику включить вредоносный файл SDRH вместе с исходным файлом прошивки и перенаправить поток управления прошивкой трансивера. Для загрузки этих файлов SDHR не требуется авторизация, только физический доступ к дрону или RC.

3. Бэкдор прошивки трансивера Sparrow

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

2. Анализ оборудования

Для соответствия результатам ручного статического анализа были исследованы коммуникационные интерфейсы аппаратного обеспечения дрона, включая ранее упомянутый интерфейс UART. Целью этого этапа является проверка обнаружения программного обеспечения на аппаратном уровне и получение интерактивной оболочки встроенного ПО трансивера. Аппаратный анализ проводился с использованием специальной рабочей станции печатной платы (см. изображение ниже), которая позволяет проверять различные разъемы. Используйте логический анализатор и осциллограф для определения открытых интерфейсов UART в прошивке.

image
image

В качестве цели были выбраны новейшие дроны DJI (например, DJI Mini 2, Mavic Air 2) и их пульты дистанционного управления, поскольку они используют прошивку Sparrow. Здесь аппаратный анализ RC оказался наиболее доступным, позволяя проводить тестирование даже при включенном устройстве. В ходе исследования аппаратного обеспечения дистанционного управления RC231 было обнаружено, что порт UART, используемый прошивкой трансивера, был активен в течение первых двух секунд после включения устройства.

Судя по результатам предыдущего ручного статического анализа, а именно, исправления файла прошивки, прошивка трансивера оставалась открытой на неопределенный срок. Это позволяет подключиться к оболочке UART трансивера. В этой оболочке были идентифицированы команды, которые выполняли произвольные операции чтения, записи и запускали оболочку, тем самым предоставляя повышенные привилегии — необходимое условие для отключения контрмер и программных ограничений.

D. Динамический анализ – нечеткое тестирование

Учитывая предыдущее понимание и наблюдения ручного статического анализа, теперь можно построить автоматизированный подход к поиску ошибок. Одним из наиболее эффективных методов эффективного поиска ошибок является фазз-тестирование, автоматизированный метод выявления ошибок программного обеспечения путем предоставления (возможно, недействительных) входных данных для цели тестирования. Его огромный успех вдохновил множество различных направлений исследований по улучшению различных аспектов фазз-тестирования. Одним из наиболее важных нововведений стало введение обратной связи по покрытию, где цели используются для сообщения о том, какой код был выполнен для конкретных входных данных. Это позволяет фаззеру наблюдать, как отдельные входы влияют на поток управления, тем самым направляя процесс фаззинга. Современные фаззеры часто полагаются на инструменты, внедряемые на этапе компиляции, и поэтому требуют доступа к исходному коду. Если исходный код недоступен, фаззер может использовать аппаратные функции, такие как динамическое двоичное инструментирование (DBI), двоичная перезапись или Intel PT, для инструментирования двоичного исполняемого файла. Однако для них либо требуется специальное оборудование, например процессоры Intel, либо делаются предположения о среде выполнения, например, полагаясь на определенные интерфейсы, предоставляемые операционной системой. К сожалению, прошивки, работающие на встроенных устройствах, часто не предоставляют такие интерфейсы. Чтобы фаззинг таких блоков прошивки (которые часто требуют определенных конфигураций оборудования), современный фаззинг основан на повторном хостинге, то есть (частичной) эмуляции среды прошивки, поскольку фаззинг на реальном оборудовании часто сложно настроить. предоставил неадекватную обратную связь и плохо масштабируется. Однако у него все равно должен быть доступ к прошивке.

1. Конструкция фазз-тестирования БПЛА

Хотя дроны для фазз-тестирования кажутся верным способом проанализировать их безопасность, он сталкивается с препятствиями: доступом ни к исходному коду, ни к полной прошивке. Поэтому методы одновременного фаззинга не подходят для дронов DJI — для фаззинга необходимо использовать реальное оборудование, а информация о покрытии недоступна.

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

*Протокол DUML: *На основе анализа DUML разработан фаззер «черного ящика», использующий собственный синтаксис, то есть фаззер знает спецификации для генерации входных данных для него, но не руководствуется покрытием. Без доступа к исходному коду, полной прошивке или эмулятору, способному эмулировать конкретное оборудование DJI, сам дрон необходимо модифицировать. Поскольку дрон и пульт дистанционного управления DJI оснащены интерфейсом USB, можно взаимодействовать через протокол DUML, что позволяет вам выбрать этот интерфейс для фаззера и наблюдать за его поведением. Поскольку обратной связи по покрытию нет, фаззер может наблюдать за поведением дрона только снаружи в сценарии «черного ящика». Для улучшения обнаружения уязвимостей, не приводящих к сбоям, предлагается новый оракул ошибок, основанный на различиях пользовательского интерфейса приложений смартфона, который подключается к ПДУ и служит экраном для конфигурации дрона, показаний датчиков и обратной связи с камерой. Например, когда фаззер меняет порядковый номер, оракул ошибок может автоматически отмечать это поведение.

Общение через DUML требует соблюдения протокола DUML. Входные данные фаззинга, которые не учитывают спецификацию, могут быть отклонены во время раннего анализа без проверки фактической логики программы. Каждая команда DUML состоит из полей src, dest, cmdType, cmdSet и cmdID — все они представлены одним байтом. Одна из возможностей фаззера — перебирать все 256 значений для каждого байта, что заняло бы слишком много времени и проверило бы множество ненужных и несуществующих команд. Чтобы избежать этого, сузьте возможные значения этих полей до известного набора источников, назначений и команд. Это позволяет провести исчерпывающее тестирование остальных команд детерминированным способом: из набора команд генерируются все возможные DUML-команды и проверяются все 256 значений поля Commandid. Только полезная нагрузка команды может содержать произвольные байты, ограниченные только длиной пакета DUML. Сгенерируйте (и запишите в журнал, чтобы обеспечить детерминированное воспроизведение тестовых команд) случайную полезную нагрузку для этого поля. Вычислите правильную контрольную сумму пакета перед его отправкой, что позволит вам протестировать логику программы, выходящую за рамки анализа контрольной суммы. Благодаря такому подходу можно идентифицировать любые команды DUML, которые приводят к падению, отключению дрона или иным физическим сбоям. Обратите внимание, что не все ошибки проявляются в виде сбоев или физически наблюдаемых сбоев. И наоборот, некоторые команды могут вызвать внутренние ошибки или повредить другие данные на устройстве.

*UI-оракул:* Чтобы преодолеть это ограничение, был введен более точный оракул ошибок: UI-оракул. Дроны DJI тесно связаны с вашим смартфоном, подключенным к пульту дистанционного управления. Смартфон используется для отображения изображения с камеры дрона и позволяет пользователю проверять такие значения, как показания датчиков, или изменять настройки (см. раздел II A e). В духе широко распространенных стратегий тестирования, например, реализованных с помощью таких платформ, как Selenium, в пользовательских интерфейсах дронов можно автоматически перемещаться во время кампаний нечеткого тестирования, чтобы определить поведение без сбоев. Например, вы можете обнаружить, когда фаззер меняет настройки или вызывает ошибки синтаксического анализатора, о которых сообщается в виде предупреждающих сообщений в пользовательском интерфейсе.

*Блок ввода:* Поскольку связь (запрос-ответ) с дроном медленная, без ожидания ответа отправляется только ввод для фаззинга (т.е. команда). Цикл оракула пользовательского интерфейса (который проходит через пользовательский интерфейс и выявляет ошибки, не приводящие к сбою) медленнее по сравнению с обычными итерациями фазз-тестирования. Поэтому выберите сокращение количества запросов к оракулу пользовательского интерфейса до минимума. Наш фаззер не рассматривает входные данные по отдельности, а разбивает пространство ввода всех возможных команд на входные фрагменты, где каждый входной фрагмент содержит 130 000 команд.

image
image

*Петля фаззинга: *Фуззер отправляет эти входные данные один за другим в цель фаззинга (➊ на изображении выше) через последовательное USB-устройство. Дрон обрабатывает каждую команду и синхронизируется с ПДУ (➋), например, обновляя данные о состоянии. Если фаззер обнаруживает сбой в прошивке дрона (➌), он не может сопоставить этот сбой с последней командой, поскольку не ожидается ответа на каждую команду. Вместо этого повторите последние 5000 команд, чтобы определить проблемную команду;

image
image

Чтобы оптимизировать этот процесс, выполняется алгоритм двоичного поиска, как описано в алгоритме выше. Учитывая набор команд C, последовательно разделите команды на две равные по размеру группы CA и CB. Выполните все команды в первой группе и убедитесь, что группа содержит команды, вызывающие сбой. Если да, повторите процесс с первой группой. Если нет, отбросьте группу и продолжите работу со второй группой. Это продолжается до тех пор, пока не останется и не будет возвращена только одна команда — команда триггера, чтобы команду, вызвавшую сбой, можно было идентифицировать в шагах журнала (n).

Если сбоя не наблюдается и все команды во входном блоке отправлены, необходимо проверить непредвиденное поведение. Для этого фаззер запрашивает у оракула пользовательского интерфейса отклонения (➍). Если оракул пользовательского интерфейса обнаруживает отклонение, он не может напрямую сопоставить это обнаружение с конкретной отправленной командой. Вместо этого последний входной блок необходимо повторно протестировать с использованием алгоритма — не проверять наличие сбоев, а запрашивать оракул пользовательского интерфейса и проверять, можно ли наблюдать отклонения пользовательского интерфейса. Таким образом, в зависимости от выявленной неисправности, либо традиционный оракул сбоя используется для проверки того, что сбой произошел, либо оракул пользовательского интерфейса используется для проверки того, можно ли наблюдать отклонения в пользовательском интерфейсе.

2. Реализация

Фаззер и оракул пользовательского интерфейса реализованы примерно в 4000 строках кода Python. Фаззер имеет два режима работы: он может фаззить дрон при подключении к последовательному интерфейсу RC через последовательное соединение или по беспроводной сети, причем последний позволяет идентифицировать сбои, которые могут быть вызваны удаленно. При фаззинге в воздухе фаззер периодически проверяет, жив ли дрон, используя определенные команды с известными возвращаемыми значениями. Кроме того, фаззер проверяет, есть ли какие-либо устройства Android Debug Bridge (ADB), кроме телефона Android, используемого для оракула пользовательского интерфейса.

Оракул пользовательского интерфейса использует внутренние инструменты Android, такие как ADB и uiautomator, для автоматического взаимодействия с приложениями DJI, чтобы определить, соответствуют ли состояние приложения и данные, представленные в интерфейсе приложения, ожидаемому. Отклонение указывает на то, что фаззеру удалось идентифицировать; интересная команда. Определение всех значений, которые необходимо проверить заранее, предотвращает регулярное изменение значений ложных срабатываний (например, уровня заряда батареи).

3. Экспериментальная установка

Фаззер тестировался с использованием трех разных дронов DJI и пульта дистанционного управления:

• Mavic Air 2, прошивка: 01.01.0610

• DJI Mini 2, прошивка: 01.03.0000

• Mavic 2 Pro, прошивка: 01.00.0770

• RC231 (RC) + Mavic Air 2, прошивка: 01.01.0610

Хост, на котором работает фаззер, должен находиться в той же сети Wi-Fi, что и телефон Android, и дрон должен быть подключен к этому компьютеру. Используйте точку доступа Wi-Fi смартфона для тестирования. При первом запуске фаззеру необходимо инициализировать смартфон, запустить сервер ADB и настроить соединение ADB WiFi. Чтобы использовать телефон с приложением в качестве оракула пользовательского интерфейса, телефон необходимо подключить к пульту дистанционного управления и установить соединение между пультом управления и дроном (OcuSync). Используйте телефон OnePlus 8 с root-доступом на базе Android 11 и приложение DJI Fly (v1.6.6), которое используется как в Mavic Air 2, так и в DJI Mini 2. Было проведено четыре независимых эксперимента по фазз-тестированию, в том числе:

  1. Mavic Air 2 +,RC231,UI oracle
  2. DJI Mini 2 + ,RC231,UI oracle
  3. Mavic 2 Pro без пользовательского интерфейса Oracle
  4. Реверс RC231 + Mavic Air 2,RC идронпроходить OcuSync соединять

Используйте UI oracle для тестирования Mavic Air 2 и DJI Mini 2. Поскольку Mavic 2 Pro использует другое устаревшее приложение, оракул пользовательского интерфейса в настоящее время недоступен, поскольку он специально адаптирован для новейших приложений DJI. Чтобы снизить инженерную нагрузку, избегайте адаптации Oracle к устаревшим приложениям, которые устарели. Четвертая кампания фаззинга исследовала возможность воздушного фаззинга дронов с помощью RC.

Контроллер также может потерять сигнал дрона, перейдя в неактивное состояние или передатчик дрона выйдет из строя. Это состояние постоянного приема команд на последовательном интерфейсе, но без подключения к контроллеру, можно обнаружить только тогда, когда оракул пользовательского интерфейса проверяет приложение. Если оракул пользовательского интерфейса обнаружит, что дрон не подключен, фаззер попытается перезапустить фаззинговую цель. Наконец, сам UI-оракул тоже имеет ограничения и требования: все интересные значения, которые следует проверять в ходе фаззинга, должны быть определены. Распространенные некритические сообщения об ошибках, например, возникающие при слабом сигнале GPS, требуют дальнейшего рассмотрения.

4. Результаты

Предложенный метод позволяет систематически тестировать различные устройства DJI, а именно дроны и радиоуправляемые устройства, и искать потенциальные уязвимости через USB-интерфейс. Стоит отметить, что этот метод работает на всех современных дронах и радиоуправляемых устройствах DJI. В ходе экспериментов было протестировано около 7,8 миллионов команд, которые были сгенерированы путем перебора всех вышеперечисленных команд. В среднем, если вы фаззите сам дрон, вы сможете тестировать 400 команд в секунду, в результате чего общее время фаззинга составит около 5,5 часов, если не учитывать сбои или циклы пользовательского интерфейса. Но каждый раз, когда дрон выходит из строя, это время увеличивается, поскольку сначала дрон необходимо перезапустить. Кроме того, оракулу пользовательского интерфейса требуется дополнительное время для прерывания (и, возможно, для поиска команды, вызвавшей наблюдаемую ошибку).

На практике выяснилось, что весь прогон фазз-теста занимает около 9 часов. На рисунке ниже показано время, которое фаззер потратил на различные этапы фазз-тестирования дрона Mavic Air 2. На UI-оракул приходится примерно 25% общего времени выполнения. Интересно, что только около половины времени тратится на сам цикл пользовательского интерфейса (т. е. проверку значений или переход к полям пользовательского интерфейса), сброс приложения и проверку правильности подключения телефона (TouchEngine). Другая половина используется для перезапуска дрона и ожидания инициализации. В целом поиск команд, вызывающих отклонения пользовательского интерфейса, обходится дороже, чем поиск команд, вызывающих сбои, поскольку дрон и приложение необходимо перезапускать несколько раз, а пользовательский интерфейс необходимо искать на наличие отклонений.

image
image

Четвертый фазз-тест, в котором вместо дрона подвергался фаззингу RC231, получил гораздо меньшую скорость выполнения — примерно 21 команду в секунду. При такой скорости выполнения прогон фазз-теста занял примерно 104 часа. Таким образом, сокращение команд фаззера до набора источников, целей и команд, которые оказались ошибочными в других кампаниях по фаззингу, ограничило количество тестовых команд до 1 073 111. Хотя этот тестовый запуск не является завершенным, он служит доказательством концепции того, что выполнение команды также может выполняться по беспроводной сети в виде команды RC-реле. При выдаче команды, которая вызывает ошибку сегментации в контроллере полета, злоумышленник может привести к падению дрона, то есть он упадет на землю во время полета.

image
image

В целом было обнаружено 15 программных сбоев (после дедупликации вручную), которые приводили к сбоям (программного обеспечения) или другим типам неожиданного поведения. Подробное описание, включая классификацию и степень серьезности, присвоенные DJI в процессе ответственного раскрытия информации, представлено в таблице выше. Интересно, что большинство сбоев происходит в контроллере полета, который имеет решающее значение для полетов дрона.

Помимо возможности сбивать дроны, фаззеры также обнаружили бэкдор, который изменяет потенциально неизменяемый серийный номер (#15), выполняет произвольный код (#14) и запускает службу ADB с привилегиями root (#1). Первые две ошибки (№14 и №15) можно найти только с помощью оракула пользовательского интерфейса, поскольку они не приводят к предстоящему сбою. #16 Это тоже так, фаззер поменял имя дрона. Но DJI не считает, что эта информация неизменна, и нет никаких других очевидных вредных последствий таких изменений, так что это благоприятный вывод. #1 особенен тем, что требует, чтобы фаззер проверял активную службу ADB после обработки входного блока. Поскольку для этого требуется физический доступ, это также единственное открытие, которое нельзя использовать удаленно. Для всех остальных открытий соответствующие команды можно подать на пульт дистанционного управления, а затем передать на дрон по беспроводному протоколу OcuSync. Это возможно, поскольку DUML действует как протокол шины, соединяющий все компоненты дрона DJI. Таким образом, можно отправлять команды дрону без физического соединения.

Это имеет несколько последствий и открывает новые векторы атак: ошибки, обнаруженные во время фазз-тестирования через USB, такие как команды, приводящие к сбою прошивки дрона, могут быть выданы удаленно, отправив их на RC. То, что когда-то было безобидной ошибкой, которая просто приводила к сбою прошивки дрона при прямом подключении к дрону на земле, теперь имеет гораздо более серьезные последствия, если срабатывает удаленно во время полета, как минимум вызывая отказ в обслуживании (DoS) и, возможно, повреждение дрона. Поскольку DJI классифицирует некоторые из этих ошибок как переполнение буфера, ими можно воспользоваться. Единственное условие — злоумышленник имеет доступ к RC через контролируемое им устройство.

Стоит отметить, что хотя фазз-тестирование проводилось через порт связи ПЦ, DUML-сообщения могут отправляться и через USB-порт, к которому подключается смартфон оператора во время регулярных полетов. Здесь Android-смартфон оператора подключается к порту USB-C в верхней части RC231 и действует как USB-аксессуар по протоколу Android Open Attachment (AOA), а RC является USB-хостом. Это нормальное поведение, позволяющее приложению DJI отображать информацию о статусе полета. В то же время это позволяет злоумышленнику, взломавшему смартфон пользователя, управлять дроном или вывести его из строя. Поскольку DJI распространяет свои приложения только через официальный веб-сайт DJI, а не через Google Play Store, пользователям придется переопределить настройки безопасности Google и разрешить установку приложений из источников, отличных от Google Play Store, тем самым увеличивая поверхность атаки на свои устройства.

5. Тематические исследования

Выделены три случая, чтобы проиллюстрировать, как коллапс, вызванный фаззером, или изменения внутренних значений дрона могут привести к проблемам, связанным с безопасностью.

**1) Произвольное выполнение команд (#14): **Эта проблема может показаться безобидной на первый взгляд, но при дальнейшем анализе оказывается, что это полноценная уязвимость внедрения команд операционной системы (CWE-78), которая предоставляет злоумышленник нет Повышенные привилегии для людей и машин. Это было обнаружено с помощью UI-оракула, который сообщает об отклонениях в пользовательском интерфейсе приложения: имя SSID Wi-Fi, используемого для передачи видео и фотографий между дроном и смартфоном, было заменено случайными байтами. Это означает, что фаззер нашел команду, которая позволяет ему заменить имя SSID на входное, управляемое пользователем. Используя ранее упомянутый метод, фаззер автоматически определяет конкретную команду DUML, отвечающую за эту операцию. Последующий ручной анализ первопричин показал, что дрон обрабатывал строку несколькими функциями.

Поскольку позиция этой строки в команде оболочки не очищена должным образом, злоумышленник может ввести произвольные команды оболочки. Важно отметить, что уязвимая функция содержит проверку длины, поэтому длина внедряемой команды ограничена. Чтобы преодолеть это ограничение, злоумышленник может просто создать сценарий эксплойта, содержащий нужные ему команды, и передать этот сценарий дрону частями. После передачи злоумышленник помечает сценарий как исполняемый, предоставляя ему уязвимость для выполнения произвольных команд без ограничения длины. DJI подтвердила, что эта уязвимость связана с выполнением произвольного кода.

2) любой серийный номер (#15):DJI Различные аппаратные модули устройства (например, камера, аккумулятор или контроллер полета) имеют разные серийные номера. Серийный номер контроллера полета используется для аутентификации и идентификации самолета. DJI В официальном документе по безопасности указано, что этот серийный номер должен быть уникальным, неизменяемым и должен храниться в защищенной памяти. в праве DJI Mini 2 При фазз-тестировании дронов пользовательский интерфейс Oracle обнаружила, что фаззеру удалось изменить серийный номер контроллера полета (как показано ниже). Злоумышленник может злоупотребить этим, чтобы подделать свою личность, поскольку этот серийный номер также находится в DroneID Серийный номер передан.

image
image

**3) Разблокировка корневой оболочки ADB (#1): **Во время фаззинга DJI Mini 2 сработала обычная проверка ADB фаззера, и алгоритм поиска ошибок сообщил о команде для запуска корневой оболочки ADB на дроне. Дальнейшее расследование показало, что на самом деле требуются две команды: так называемая «команда разблокировки DJI Assistant», а затем команда, найденная фаззером. Фаззер всегда отправляет предыдущую команду, чтобы разблокировать полную связь DUML. Ручной анализ ошибки показал, что это логический недостаток в системе типа «запрос-ответ», используемой для активации функции отладки DJI в двоичном файле dji_sys.

*Препятствия и ограничения фазз-тестирования: *Нечеткое тестирование встроенных устройств сопряжено с различными препятствиями и ограничениями. Одним из ограничений является разряд батареи, если во время фазз-тестирования на устройство невозможно подать питание. Это привело к многочисленным перерывам в замене и подзарядке батарей, а также к ограниченной автоматизации процесса фазз-тестирования. Поскольку устройство может перейти в недопустимое состояние, вызванное фаззером, прошивка дрона или пульта дистанционного управления может заблокироваться и больше не реагировать на фаззер. В этом состоянии фаззер предполагает сбой и ждет, пока устройство снова подключится к сети, чего может никогда не произойти. Если произошла такая программная блокировка и устройство не может пройти, например сделать сброс, вынуть батарею, необходимо прошить прошивку, чтобы "разкирпичить" дрон.

0x05 Обсуждение

1. Текущее состояние безопасности дронов

Механизмы усиления защиты, используемые поставщиками, усложняют анализ дронов, но не делают его невозможным. Статический анализ позволяет обнаруживать ошибки, которые приводят к выполнению произвольного кода на SoC S1, с помощью специально созданных файлов конфигурации. Эти ошибки могут наблюдать как дроны, так и радиоуправляемые устройства. Фаззер DUML обнаружил и другие уязвимости, которые ставят под угрозу безопасность устройств различных дронов. Оценка безопасности показывает, что на трансивер может быть установлена ​​произвольная прошивка, а это означает, что обновления безопасности с использованием подписанной и зашифрованной прошивки не будут реализованы корректно. Поставщикам рекомендуется рассмотреть возможность обнаружения и проведения дополнительного тестирования, например, в форме нечеткого тестирования, чтобы уменьшить количество (пригодных для использования) ошибок в их коде.

2. Правила ЕС и США по использованию дронов

Регулирующие органы считают, что идентификация и определение местоположения являются функцией безопасности потребительских дронов, которая перевешивает потенциальные риски конфиденциальности для удаленных операторов. На момент анализа два совместимых стандарта находились в стадии проекта: EN 4709 (ЕС) и F3411-19 (США). Оба стандарта потребуют от дронов передавать местоположение дрона и оператора, траекторию движения дрона и его идентификационный номер. Эти стандарты предусматривают использование функций рекламы Bluetooth или сетей информирования о районе Wi-Fi, и по запросу они будут работать без какого-либо шифрования. Эти стандарты станут обязательными в Европе в середине 2023 года и в США 16 сентября 2023 года. В отличие от собственного решения DJI, каждый совместимый смартфон может принимать эти трансляции через Wi-Fi или Bluetooth, хотя и на гораздо меньшем расстоянии. Открытые реализации уже доступны в виде библиотек или приложений для Android.

Зная об этих будущих стандартах, исследователи затрудняются определить, действительно ли нынешние дроны, к которым открытые стандарты еще не применяются, осуществляют передачу данных в рамках своих собственных протоколов. Детальный анализ подтвердил, что протокол DJI DroneID передает незашифрованную информацию, такую ​​как местоположение дрона и удаленного оператора, тогда как в официальном заявлении DJI утверждалось, что информация была зашифрована, что DJI с тех пор исправило. Тем не менее, существует твердое мнение, что такая функциональность должна быть прозрачно доведена до сведения пользователей и стать частью технического документа по безопасности, особенно с учетом рисков, присущих конфиденциальности, связанных с трансляцией местоположения оператора.

3. Целостность данных

Через AeroScope компания DJI продает оборудование для слежения за дронами и удаленными операторами, поэтому ожидается, что целостность данных о местоположении GPS будет повышена за счет ряда контрмер; Тем не менее, анализ показывает, что данные GPS можно легко отключить или подделать, что делает данные о местоположении, сообщаемые этими системами властям, подозрительными и непригодными для действий. DJI обязуется реализовать соответствующую защиту целостности на всех устройствах.

4. Пригодность для других поставщиков.

Хотя эта статья посвящена дронам DJI, на рынке есть и другие производители (например, Autel с долей рынка 7%). Учитывая их относительно низкий уровень внедрения и тот факт, что не существует никакой публичной документации по мерам безопасности, они не являются очень интересными объектами для анализа. Тем не менее, принципиальный подход этого исследования может быть применен к другим БПЛА: статический и динамический анализ их аппаратного, встроенного и программного обеспечения, а также их беспроводного физического уровня. В зависимости от используемого протокола может потребоваться адаптировать метод фаззинга и использовать оракул пользовательского интерфейса, аналогичный используемому. Поскольку DroneID является эксклюзивом DJI, интересных результатов по сравнению с другими поставщиками дронов в этом направлении не ожидается, однако достойными целями могут стать другие проприетарные протоколы.

0x06 Заключение

В этой статье анализируется безопасность и конфиденциальность дронов DJI, очерчивается поверхность атаки дронов и рассматриваются две модели атаки: пассивная атака без физического доступа — возможность подслушивать воздушный трафик дрона и активная атака — обеспечивает физический доступ к оборудование для дронов. Путем обратного проектирования собственных пакетов DroneID в протоколе отслеживания DJI исследователи обнаружили, что протокол передает положение дрона, домашнюю точку и положение оператора, а также выяснили, как отключить DroneID или подделать передаваемое местоположение. Для активных атак был разработан фаззер с оракулом пользовательского интерфейса, специально разработанным для дронов DJI, который обнаружил множество критических уязвимостей безопасности в трёх различных устройствах DJI. Тщательное изучение ошибок показывает, что их можно использовать для выполнения произвольного кода или изменения серийного номера устройства. Кроме того, злоумышленник может удаленно отправить полезную нагрузку по беспроводной сети, что приведет к падению дрона в полете.

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose