О взломе карт MicroSD «Блог Банни

Сегодня на компьютерном конгрессе Хаоса ( 30C3 ), xobs и я раскрыл вывод, что некоторые SD-карты содержат уязвимости, которые допускают выполнение произвольного кода - на самой карте памяти. С другой стороны, выполнение кода на карте памяти обеспечивает класс атак MITM (человек посередине), когда карта ведет себя односторонним образом, но на самом деле она делает что-то другое. С другой стороны, это также позволяет энтузиастам оборудования получить доступ к очень дешевому и вездесущему источнику микроконтроллеров.

xobs

Чтобы объяснить взлом, необходимо понять структуру SD-карты. Приведенная здесь информация относится ко всему семейству устройств с «управляемой флеш-памятью», включая устройства microSD, SD, MMC, а также устройства eMMC и iNAND, которые обычно припаяны к материнским платам смартфонов и используются для хранения ОС и других личных данных пользователя. Также отметим, что аналогичные классы уязвимостей существуют в связанных устройствах, таких как USB-накопители и твердотельные накопители.

Флэш-память действительно дешевая. Настолько дешево, что это слишком хорошо, чтобы быть правдой. В действительности вся флеш-память пронизана дефектами - без исключения. Иллюзия непрерывного, надежного носителя данных создается благодаря сложным функциям исправления ошибок и управления плохими блоками. Это результат постоянной гонки вооружений между инженерами и матерью-природой; с каждым сокращением процесса изготовления память становится дешевле, но все более ненадежной. Аналогичным образом, с каждым поколением инженеры предлагают более сложные и сложные алгоритмы, чтобы компенсировать склонность матери природы к энтропии и случайности в атомном масштабе.

Эти алгоритмы слишком сложны и слишком специфичны для устройства, чтобы запускаться на уровне приложения или ОС, и поэтому оказывается, что каждый диск флэш-памяти поставляется с достаточно мощным микроконтроллером для запуска собственного набора алгоритмов абстрагирования диска. Даже миниатюрная карта microSD содержит не одну, а, по крайней мере, две микросхемы - контроллер и, по крайней мере, одну флеш-микросхему (карты высокой плотности будут составлять несколько флеш-кристаллов). Вы можете увидеть несколько выстрелов внутри карты microSD на Разрушение microSD я сделал пару лет назад ,

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

Встроенный микроконтроллер обычно представляет собой сильно модифицированный процессор 8051 или ARM. В современных реализациях микроконтроллер будет приближаться к уровням производительности 100 МГц, а также имеет несколько аппаратных ускорителей на кристалле. Удивительно, но стоимость добавления этих контроллеров к устройству, вероятно, составляет порядка 0,15-0,30 долл. США, особенно для компаний, которые могут использовать как флэш-память, так и контроллеры в пределах одного подразделения. Вероятно, дешевле добавить эти микроконтроллеры, чем тщательно тестировать и характеризовать каждый чип флэш-памяти, что объясняет, почему управляемые флэш-устройства могут быть дешевле на бит, чем необработанные чипы флэш-памяти, несмотря на включение микроконтроллера.

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

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

В нашем выступлении на 30C3 мы сообщаем о наших выводах, посвященных изучению конкретной марки микроконтроллеров, а именно: Appotech и его предложения AX211 и AX215. Мы обнаруживаем простую последовательность «детонации», передаваемую по зарезервированным производителем командам (а именно, CMD63, за которыми следуют «A», «P», «P», «O»), которые переводят контроллер в режим загрузки прошивки. В этот момент карта примет следующие 512 байт и запустит ее как код.

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

Большая часть этой работы была выполнена с использованием нашей аппаратной платформы с открытым исходным кодом,   Новенна   и набор пользовательских плат-адаптеров гибких цепей (что, по сути, ведет к разработке гибких   электрические наклейки   ака   chibitronics   )

Важно отметить, что обработка команд SD выполняется с помощью набора обратных вызовов, управляемых прерываниями, которые обрабатываются микроконтроллером. Эти обратные вызовы являются идеальным местом для реализации атаки MITM.

Эти обратные вызовы являются идеальным местом для реализации атаки MITM

Пока еще неясно, сколько других производителей оставляют свои последовательности обновления прошивки незащищенными. Appotech - относительно незначительный игрок в мире контроллеров SD; Есть несколько компаний, о которых вы, вероятно, никогда не слышали, которые производят контроллеры SD, включая Alcor Micro, Skymedi, Phison, SMI и, конечно, Sandisk и Samsung. Каждый из них будет иметь разные механизмы и методы для загрузки и обновления своих прошивок. Тем не менее, это было ранее отмеченный что по крайней мере одна реализация Samsung eMMC, использующая набор инструкций ARM, имела ошибку, из-за которой средство обновления микропрограммы было отправлено на устройства Android, что указывало на еще одно потенциально многообещающее место для дальнейшего обнаружения.

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

С точки зрения «сделай сам» и хакеров, наши выводы указывают на потенциально интересный источник дешевых и мощных микроконтроллеров для использования в простых проектах. Arduino с 8-битным 16-МГц микроконтроллером обойдется вам примерно в $ 20. Карта памяти microSD с несколькими гигабайтами памяти и микроконтроллер с производительностью, в несколько раз превышающей производительность, можно купить за небольшую часть цены. Хотя карты SD по общему признанию ограничены вводом / выводом, некоторые хитрые взломы микроконтроллера на карте SD могут стать очень экономичным и компактным решением для регистрации данных для датчиков на основе I2C или SPI.

Слайды из нашего выступления на 30C3 можно скачать Вот или вы можете посмотреть выступление на Youtube ниже.

Команда Kosagi хотела бы выразить особую благодарность .mudge за поддержку этого исследования в рамках программы Cyber ​​Fast Track.

Метки: вспышка , взлом , микроконтроллер , MicroSD , MITM