На проходящей в эти дни тридцатой конференции Chaos Communication Congress (30C3) представлен отчёт (PDF) об эксперименте по модификации прошивок микроконтроллеров, встроенных в карты памяти MicroSD. Замена прошивки на карте памяти интересна потенциальной возможностью встраивания бэкдора, который может контролировать потоки данных и при необходимости влиять на них.

Современные MicroSD-карты выносят логику работы с накопителем на встроенный в карту микроконтроллер, который как правило базируется на CPU 8051 или ARM7. Необходимость использования дополнительной прослойки обусловлена технологией производства и особенностями Flash-памяти, связанными с изначальным наличием в чипе большого числа bad-блоков и высокой вероятностью выхода ячеек из строя (например, изначально продаваемая 2GiB карта может содержать до 80% bad-блоков и фактически являться чипом на 16GiB). В связи с этим возникает необходимость применения расширенных механизмов пометки bad-блоков, адаптации к обновляемой раз в 12-18 месяцев геометрии накопителей (метод маппинга блоков, размер страниц), отслеживания появления ошибок и их корректировки при помощи специальных избыточных кодов восстановления (ECC).

Все эти механизмы слишком специфичны для каждого чипа, чтобы быть реализованными на уровне ОС, поэтому производители снабжают каждую карту памяти собственным микроконтроллером, на котором выполняется свой набор алгоритмов. При этом логика работы микроконтроллера скрыта за внешним унифицированным интерфейсом, что значительно затрудняет обнаружение MITM-атак (man-in-the-middle), проводимых на стороне микроконтроллера карты. Проблему усугубляет отсутствие стандартных методов или протокола для верификации кода, выполняемого на микроконтроллере MicroSD-карты.

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

Несмотря на отсутствие публичной документации по контроллерам и трудность подключения к чипам на MicroSD-карте, исследователям безопасности удалось подготовить аппаратуру для изучения и перепрошивки контроллеров карт памяти. Наиболее неприятным выводом стало то, что программное обеспечение некоторых контроллеров может быть изменено через специальные зарезервированные производителем команды, отправленные с host-системы. Никакой защиты от выполнения данных команд злоумышленниками не предусмотрено. Например, чипы Appotech AX211 и AX215 могут быть переведены в режим загрузки прошивки через команду CMD63 следующую за последовательностью ‘A’,'P’,'P’,'O’, после чего карта воспринимает следующие 512 байт как код для выполнения на стороне контроллера.

В качестве мер противодействия возможным атакам, в процессе исследования разработано специализированное ПО и инструменты статического анализа для разбора структуры контроллера и выявления возможных бэкдоров. Указанные инструменты позволили проконтролировать поток данных между микроконтроллером и чипом памяти, оценить корреляцию команд через внешний интерфейс карты с фактическими действиями с данными на чипе. Несмотря на то, что исследование проводилось для карт MicroSD, по данным разработчиков выявленные проблемы проявляются и для других управляемых устройств хранения, как внешних, так и встраиваемых, в том числе SD, MMC, eMMC и iNAND, а также некоторых видов накопителей USB Flash и SSD.

Источник: http://www.opennet.ru/opennews/art.shtml?num=38754