Как стать автором
Обновить
60.73
Криптонит
Разрабатываем. Поддерживаем науку. Просвещаем

Получение доступа к защищённым данным во встроенной памяти

Время на прочтение4 мин
Количество просмотров3.7K

В компании «Криптонит» завершили интересное исследование, результатами которого мы спешим поделиться. Наша команда лаборатории информационной и сетевой безопасности провела реверс-инжиниринг ПЗУ промышленного устройства и получила доступ к данным, которые считаются защищёнными. Точно такие же средства «защиты» используются в тысячах других устройств — от принтеров и МФУ до автомобилей Mazda и модуля записи видео на Международной космической станции.

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

Однако зачастую в этом наборе технологий используются разработки с закрытым исходным кодом. Как следствие — производители предпочитают выбрать удобное решение и доверять ему вслепую, поскольку оценить его безопасность можно только с помощью методов обратной разработки. Вот мы и решили её выполнить, руководствуясь принципом «доверяй, но проверяй!».

Для эксперимента в «Криптонит» доставили образец промышленного устройства, в котором использовался распространённый технологический стек: менеджер управления флэш-памятью FlashFX Tera и защищённые файловые контейнеры FlashPack внутри транзакционной файловой системы Reliance Nitro. Такая связка широко применяется в самом разном оборудовании, выпущенном за последние 13 лет.

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


Менеджер FlashFX Tera и транзакционная файловая система Reliance Nitro были представлены в 2009 году частной компанией Datalight, которая была основана бывшим инженером Boeing, а  с 2019 года стала дочерней фирмой Tuxera — финского разработчика ПО. В настоящее время Tuxera FlashFX Tera поддерживает более 300 микросхем флэш-памяти различных типов. Он работает с любой 32/64-разрядной операционной системой, а также имеет предварительно портированные версии для Linux , Android, Windows CE и VxWorks.


Началось исследование как обычно — с дампа памяти. Чтение ПЗУ исследуемого устройства производилось с помощью программно-аппаратного комплекса PC3000-Flash, использующего технологию прямого доступа к микросхемам NAND Flash. Его подключение осуществлялось через адаптер PC3000 Spider Board, позволяющего выполнить подключение к технологическим выводам микросхемы NAND Flash без пайки за счёт 25 подвижных игольчатых контактов.

В процессе длительного хранения микросхем NAND Flash без поддержания питающего напряжения растёт вероятность перетекания зарядов между ячейками памяти. Также она увеличивается из-за демонтажа экранированной ПЗУ, поскольку для снятия защитного экрана от ЭМИ приходится нагревать его паяльной станцией. Перетекание зарядов приводит к появлению битовых ошибок, частота которых зависит главным образом от типа флэш-памяти и особенностей её технического исполнения.

Поэтому после чтения дампа была выполнена коррекция битовых ошибок ECC кодами Боуза-Чоудхури-Хоквингема (БЧХ) длиной 10 байт, способными исправить до 4-х битовых ошибок на 512 байт данных. Для этого использовалась написанная нами программа на языке C#, реализующая алгоритм, обнаруженный в дизассемблированном драйвере. После корректировки битовых ошибок мы создали новый дамп без блоков ECC, подготовленный к трансляции диспетчером FlashFX на логический уровень.

Для поиска смещений разделов, типов файловых систем, определения наличия шифрования или сжатия применялась программа DataExtractor из  состава ПАК PC3000-Flash. Дальнейшее изучение полученного дампа выполнялось при помощи утилиты для анализа прошивок Binwalk и самописных программных инструментов. Также использовался популярный архиватор 7-Zip, поскольку он способен извлекать данные из различных файловых систем и скомпилированных библиотек. С ним отпадает необходимость искать специализированные распаковщики для каждого формата, что существенно экономит время.

Основная часть программного реверс-инжиниринга осуществлялась в интерактивном дизассемблере IDA Pro. С его помощью в библиотеке flashfx.ko был найден транслятор памяти FlashFX Tera, а в библиотеке reliance.ko обнаружена реализация файловой системы Reliance Nitro v2.x, по которой был определён формат заголовков для извлечения разделов и файлов.

В дампе памяти был обнаружен файловый контейнер Flash Pack неизвестного проприетарного формата. Чтобы его открыть, мы декомпилировали код приложения, с помощью которого осуществлялось конфигурирование исследуемого устройства, и нашли в нём парсер для данного типа контейнеров.

На следующем этапе методом поиска по открытым источникам (OSINT) в репозитории крупного зарубежного разработчика ПО и системного интегратора, использующего веб-сервис Bitbucket, были обнаружены реализации проприетарных форматов зашифрованных файловых контейнеров. В итоге последовательно были сняты все слои защиты, и мы получили полный доступ ко всем данным в «защищённой» встроенной памяти.

Можно ли было предотвратить такую атаку? Да. Например, используя блок памяти с защитой от атаки повторного воспроизведения (RPMB), или другой вариант аппаратной защиты от НСД к разделу памяти с критически важными данными. Большинство современных устройств работают на процессорах архитектуры ARM, в которых поддерживается виртуализация аппаратных ресурсов, позволяющая создавать изолированную среду (TrustZone).

Выводы

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

Используя широкодоступные инструменты чтения и анализа флеш-памяти, а также методы реверс-инжиниринга, в компании «Криптонит» смогли обойти защиту на базе технологий Tuxera и получить доступ к критически важным данным, хранящимся в ПЗУ промышленного устройства.

Данный метод применим к тысячам других устройств, которые выпускались с 2009 года по настоящее время. В них используется тот же популярный набор проприетарных технологий, который ошибочно считается надёжным.

Результаты исследования могут использоваться для анализа безопасности устройств, хранящих критически важные данные в формате FlashFX Tera & Reliance Nitro, а также для восстановления данных с их накопителей в случае неисправности.

Теги:
Хабы:
Всего голосов 2: ↑2 и ↓0+2
Комментарии5

Публикации

Информация

Сайт
kryptonite.ru
Дата регистрации
Дата основания
Численность
201–500 человек
Местоположение
Россия