HeadlinesBriefing favicon HeadlinesBriefing.com

Лазерная инъекция обходит защищённую отладку RP2350

Hacker News •
×

Микроскопия фотонной эмиссии локализовала регистр, включающий функции отладки на микроконтроллере Raspberry Pi. Лазерные импульсы в двух близких позициях восстановили доступ отладчика к защищённому миру чипа, хотя отладка была навсегда отключена. Используя этот доступ после спасательного сброса, мы восстановили секрет из однократно программируемой памяти. Сброс остановил чип до того, как прошивка смогла применить свою блокировку во время выполнения, поэтому страница осталась доступной для чтения в защищённом режиме. Атака требует физического доступа, разрушительной подготовки и лабораторного оборудования стоимостью около 250 000 долларов.

RP2350 — это двухъядерный микроконтроллер Raspberry Pi: каждый процессорный сокет может выбрать либо ядро Arm Cortex-M33, либо RISC-V Hazard3 при загрузке. Его аппаратные функции безопасности включают защищённую загрузку, Armv8-M TrustZone, постоянные настройки отключения отладки и детекторы сбоев. Raspberry Pi пригласила исследователей оценить эти защиты через свои RP2350 Hacking Challenges. Первый конкурс проходил с августа по декабрь 2024 года против оригинального чипа. После устранения нескольких находок Raspberry Pi выпустила ревизию A4 — версию, которую мы тестировали.

Постоянная конфигурация безопасности и отпечатки открытого ключа загрузки хранятся в однократно программируемой (OTP) памяти: каждый бит может быть переключён с 0 на 1 один раз и никогда обратно. OTP организована в страницы по 128 байт, защищённые двумя постоянными строками блокировки. При сбросе OTP постоянные значения LOCK_S и LOCK_NS инициализируют блокировку времени выполнения для каждой страницы. Прошивка может усилить эту блокировку, но не может ослабить её. Изменение во время выполнения не сохраняется после этого сброса.

Внешний отладчик взаимодействует через интерфейс Arm Serial Wire Debug (SWD). Защищённая отладка относится к доступу Mem-AP с защищённой атрибуцией. Постоянный флаг CRIT1.DEBUG_DISABLE закрывает этот путь. Когда он установлен, он устанавливает сигналы разрешения для Mem-AP обоих ядер в ноль, предотвращая доступ к шине. SW-DP и RP-AP всё ещё отвечают, но ни один Mem-AP ядра не может получить доступ к системной шине. Однако регистр DEBUGEN с отображением в память позволяет защищённому программному обеспечению повторно включить Mem-AP каждого ядра и защищённый доступ. В документации указано, что DEBUG_DISABLE «может быть полностью переопределён установкой всех битов этого регистра».

Ключевые организации: Компании: Raspberry Pi, Arm, Ledger Donjon