Fault Injection Attacks against the ESP32-C3 and ESP32-C6
Posted on Mon 08 January 2024 in Projects • Tagged with Reverse Engineering, Electronics, FPGA, Exploit
In a previous article, the vulnerabilities of the ESP32-C3
and ESP32-C6
against side-channel attacks have been demonstrated.
Recovering enough key information to decrypt the external flash data is possible. However, a new attack needs to be performed for each new 128-byte block. Since attacking a single block takes hours, this makes decrypting the entire flash content using such a method very impractical.
This frustrating limitation led me to the following question: is it possible, given control of as few bytes of the flash as possible, to run custom code on a ESP32-C3
and ESP32-C6
?
After encountering several dead-ends, I concluded that the answer to this question is yes, with:
- For the
ESP32-C3
, it requires control over the first 128 bytes (one block). - For the
ESP32-C6
, it necessitates control over the first 128 bytes and a few bytes starting from offset0x180
(two blocks).
Achieving the above demands bypassing the Secure Boot feature of both the ESP32-C3
and ESP32-C6
. This is accomplished using simple voltage fault injections, despite the countermeasures that Espressif has integrated into its Boot Rom.
Continue reading