Comments 31
Вопрос, на который внятного ответа «да» пока не встречал: STM RDP level 2 удалось победить?
Вырастает сложность и время реализации конечно, нужно понизить до 1 уровня, и воспроизводить параметры атаки с попытками второго понижения. Метод был описан продавцами железки как раз для атких атак предназначенной- ChipWhisperer. Но что-то не нахожу странички. Включив воображение можно той-же атакой попытатся включить отладку например, что так-же дает определенный вектор для дальнейших атак.
Саму идею «понизим до RDP 1 и сведём задачу к решённой» встречал не раз, но пока не видел ни одного подтверждения успеха уже за несколько лет. При том, что с обходами RDP 1 люди не особо стесняются и пишут об успехах открыто.
Не буду повторятся, более подробно разжевано в другой статье на сайте.
Ссылка нерабочая
Вроде эта тема уже всплывала тут много раз. Все это работает на древних ядрах. Что на счет М4? Там rdp имеет 8 разрядов и еще оин комплиментарный байт. Долго но не невозможно?)))
Ломать палкой танк никто не будет. Описанный мной метод хорошо работает в первую очередь с STM8. Для более сложных архитектур есть другие методы, которые хорошо описаны, к примеру https://www.usenix.org/system/files/woot20-paper-obermaier.pdf
К тому-же я хотел рассказать в первую очередь про те моменты, которые в сети умалчивают, а именно- о важности уровня просадки.
Такое уже наверняка быстрее ломать микрозондом или другими инвазивными способами.
а что, если целевой мк тактировать снаружи, вместо 8 МГц кварца дать 1 кГц тактовой, не проще пробить будет? или у stm8 тоже есть встроенный rc осциллятор и мк трогается с него?
Есть что интересное по взлому CPLD?
Flash Readout Protection (RDP) никак не может сокращаться до RDP, т.к. Readout - это одно слово.
Логичнее сокращение FRP. И кстати в статье на которую ведёт ссылка такая же проблема с сокращениями.
А если для атаки использовать ПЛИС? Алгоритм вроде бы не особо хитрый, а время реакции у ПЛИС куда лучше. Или не прокатит?
Прокатит конечно, но я не работаю с ПЛИС, и исходил из своих возможностей. К тому-же черная таблетка снижает порог входа до 10$ за весь стенд.
По цене да, абсолютно точно лучше с черной таблеткой. Я просто к тому, что если где-то ещё более строгие тайминги или точность таймингов может повысить шансы, соответственно и скорость получения информации, то как будто бы ПЛИС тут уже по интереснее.
Но конечно не в домашних условиях и не тогда, когда этим занимаешься раз в год))
Для серии F1 есть готовый проект для RP2040 (https://github.com/CTXz/stm32f1-picopwner). Чтобы удобнее было работать, я сделал плату под распространенные корпуса МК https://github.com/Sergey1560/f1_power_glitch

Спасибо, очень интересно! Для меня - это настоящий хакинг. Прям читаю и чувствую в воздухе запах паленого железа )
Рекомендую вам добавить себе в статью, а не бегло состаться на другую статью про стм32. Есть большая разница между тем, как работает защита на стм8 и стм32. В стм32 уровень защиты rdp1 это когда в спец регистре записано "ЧТО УГОДНО", а rdp0 - 0xAA, rdp2 - 0xCC.
У вас же, в стм8 "ЧТО УГОДНО" означает - отсутствие зашиты, а 0xAA - защита есть.
И, конечно, при помощи глича состояние "что угодно" более вероятное событие, чем какое то конкретное значение вроде 0х00, 0х55 или 0хАА.
Собственно в этом и кроется причина почему стм32 в rdp1 гличат иначе.
Ну и утверждение, что мы "чтобы ядро приняло 0 , который означает отсутствие защиты, даже если он записан 1 или 2 " немного не верно. Это справедливо, если вы гличите исполнение ядра (атакуете работу кода) - там всякие ветвления можно сбивать и получится в итоге, так как вы написали.
Но вы тут атакуете не работу непосредственно кода, а процесс аппаратной инициализации МК. Тут получить где-то какое то конкретное значение, например, 0 вместо 2....ну оооочень маловероятная штука)
В общем шалость удалась, так как требовалось получить не конкретное значение, а "что угодно" кроме 0хАА.
А, еще кое что. Если осциллограф выкрутить посильнее то вы этот процесс инициализации сможете увидеть - это помогает сократить перебор офсета и сразу локализовать окно для перебора

А можно подробнее про "заложенные подлянские таймеры отказа"?
Из относительно оправданных- в каком-то мед оборудовании встречал, где после некоторых часов отработки устройство окирпичивается, независимо от физического состояния. Заказ такой был, но я за него не взялся тогда. Слышал что где-то еще встречается, но именно как незадокументированная подлянка от производителя. После некоторых часов наработки устройство окирпичивается, но если перезаписать старым дампом еепрома- чудесным образом оживает.
Разве про трактора John Deere не слышали? Даже тут на Хабре была статья.
В предыдущем проекте занимался защитой контроллера от Silabs efr32bg24. Там помимо защиты от чтения флеша еще двойной секьюр бут, плюс прошивка подписывается и при желании шифруется. Ещё можно заблокировать swd интерфейс навсегда или с возможностью его включить до следующего резета.
В мануалах было упомянуто как раз про пауэлглитч, мол, если процессор это обнаруживает, то самоокирпичивается
да, отдельное спасибо за уровни.
Я как-то для начала погрузился в вопросы времени. А так как не сработало, начал подозревать, что нужно величиной "просадки" ещё поиграться. Оказывается, не зря

А есть ли такое для других МК, например pic или avr?

Взлом RDP в STM8/32 методом PowerGlitch