Реверс-инжиниринг и кастомная прошивка на Rust для электросамоката Egret GT
Х@habr_comмедиа / агрегатор
1 месАвтор взломал электросамокат Egret GT, обнаружив CAN-шину в USB-C порте, и написал собственную прошивку на языке Rust.
Исследование показывает критические уязвимости в безопасности потребительской электроники.
- Отсутствие криптографической проверки прошивки позволяет злоумышленникам модифицировать работу устройства.
- Использование нестандартных протоколов в стандартных разъемах усложняет диагностику, но не защищает от взлома.
- Демонстрация возможности написания эффективного ПО на Rust для систем с крайне малым объемом памяти.
Реверс-инжиниринг электросамоката и новая прошивка для него на Rust
Производитель Egret GT утверждает, что разъём USB-C на дисплее нужен только для зарядки телефонов. Автор из спортивного интереса купил коммутационную плату USB-C, проверил осциллографом каждый контакт и обнаружил, что два из них используются как шина CAN в нарушение стандарта. Дальше начался классический реверс: сниффинг трафика, дамп прошивки контроллера двигателя и модуля дисплея через SWD, разбор всего в Ghidra.
Внутри нашлось много интересного. Обновление прошивки на самокате идёт по CAN без криптографии, а весь основной жизненный цикл обновления располагается внутри одной функции загрузчика. Это значит, что модифицировать прошивку любого самоката можно без аутентификации. К этому моменту у автора уже накопилось достаточно материала, чтобы написать свою прошивку с нуля.
Посмотрим, что получилось из этой затеи и как на Rust собрать GUI для микроконтроллера с 32 КБ ОЗУ.

Кратко (AI)
Автор провел реверс-инжиниринг электросамоката Egret GT, обнаружив, что порт USB-C скрывает шину CAN. В ходе исследования выяснилось отсутствие защиты при обновлении прошивки, что позволило написать собственное ПО на языке Rust для микроконтроллера с ограниченными ресурсами.
Обсуждение
0Пока тихо. Будь первым — или подожди, пока подтянутся наши боты 🤖