Comments 17
Power Glitch как универсальная отмычка... А нигде нет базы коллективной с задержкой и шириной гличей под разные процессоры?
не слыхал о такой базе )) к тому же даже на этих процессорах есть ньюансы по паузам и оффсетам
Современные микроконтроллеры более-менее неплохо защищены от Fault Injection. А старые процы мало кому интересны.
Понятие "современный микроконтроллер" мне очень интересно. Что именно Вы подразумеваете под этим? Какие именно защищены и каким образом? На чём основано это утверждение?
В статье речь идёт не о современном микроконтроллере, а о современном ЭБУ. В настоящий момент CPU Renesas и Infineon являются лидерами при разработке блоков управления в автомобильной промышленности. В основном, это RH850 и Tricore Aurix.
Я не особо знаком с нутрянкой ECU (так, немножко ковырял старые ECM'ы), а больше писал про GP микроконтроллеры. К примеру, свежие ревизии esp32 имеют ряд защит против FI, в частности, прошивка валидируется несколько раз в разных местах:
check_condCOUNTER$5995();
check_condCOUNTER$5995();
check_condCOUNTER$5995();
check_condCOUNTER$5995();
check_condCOUNTER$5995();
check_condCOUNTER$5995();
check_condCOUNTER$5995();
ets_printf("wait uart download(secure mode)\n");
memw();
if ((_DAT_60004038 & 0xf) == 7) {
uVar4 = uart_baudrate_detect(0);
uart_div_modify(0,uVar4);
}
else {
detect_uart_usb_spi_boot_mode(uVar4);
}
ets_uart_download(0);
ets_printf(&DAT_3ff1ab19);
uart_tx_flush(DAT_3fcef14c);
goto LAB_40043c78;
}
check_condCOUNTER$5987();
check_condCOUNTER$5987();
check_condCOUNTER$5987();
check_condCOUNTER$5987();
check_condCOUNTER$5987();
check_condCOUNTER$5987();
check_condCOUNTER$5987();
Чтоб успешно обойти эту проверку, нужно успешно сглитчить несколько раз подряд. Есть так же защита от clock glitch'ей. Некоторые МК имеют на борту блоки детектирующие voltage glitch. Кроме противодействия глитчам ещё и добавляют защиту от CPA (Correlation Power Analysis). Я к тому, что стандартная атака FI через питание/тактирующий сигнал известна уже давно и производители чипов добавляют механизмы, препятствующие её проведению.
Верно, множественные проверки могут помочь, однако я бы особо не превозносил ESP32, известно много успешных глитчей микросхем этой серии (https://github.com/ggonzalez/ESP32_GLITCHER).
Обращаю также Ваше внимание на то, что данный процессор глитчится по управлению питанием Flash памяти, а не питанием ядра.
Всё что Вы говорите, безусловно, правда и это хорошо, что происходит то, что происходит. Другое дело что в нашем автомобильном деле еще недавно никто процессоры и вовсе не закрывал, и взламывать их просто не было никакой необходимости.
много успешных глитчей микросхем этой серии (https://github.com/ggonzalez/ESP32_GLITCHER).
Это глитчер, базирующийся на esp32, а не глитчер самого esp32 :)
Тем не менее, да, есть известные атаки. Самые актуальные - https://courk.cc/breaking-flash-encryption-of-espressif-parts и https://www.usenix.org/system/files/woot24-delvaux.pdf. Но в обоих случаях речь не идёт о тривиальном voltage glitch (хотя первая атака и включает его).
Обращаю также Ваше внимание на то, что данный процессор глитчится по управлению питанием Flash памяти, а не питанием ядра.
Не так давно на CCC была интересная презентация про глитч через питание OTP - https://media.ccc.de/v/38c3-hacking-the-rp2350
Я правильно понял, что glitch атака направлена на загрузчик и ломает исполнение кода в момент старта, когда загрузчик проверяет, залочен блок на чтение, или нет?
да. так как обесточивается флеш память, она читается с ошибками, вследствие чего изменяется SSR, опеределяющая, закрыт процессор или нет.
Повезло, что он читается при старте, а не после получения команды на чтение через случайное время.
Есть сомнения, что после замены eeprom можно будет снять CP
Исследование и восстановление блока SRS Audi A4: особенности работы с закрытым процессором и glitch-технологией