I was wondering what are the risks if an ESP32-S3 device had ENABLE_SECURITY_DOWNLOAD set to False, but SECURE_BOOT_EN set to True. This would mean that Secure Download mode is disabled, but secure boot is enabled. For the sake of the argument, let's also say that ICACHE and DCACHE aren't readable (the necessary efuses are set).
What are the risks of running this setup? One will be able to read the efuses using efuses.py, write & read the SRAM, and read the encrypted flash. But running code loaded in RAM (using esptool.py load_ram) won't be possible without signing due to secure boot, right?
All I could think of, for now, is that one could read potential sensitive information from the SRAM, if it isn't cleared before entering the Download mode. I think the documentation does say that the SRAM isn't cleared when a non-Chip reset is performed, according to the Technical Reference Manual:
But can someone issue one of these resets and enter the Download mode without a chip reset? Will the BOOT button's state be read on a non-chip reset?ESP32-S3 provides four reset levels, namely CPU Reset, Core Reset, System Reset, and Chip Reset.
All reset levels mentioned above (except Chip Reset) maintain the data stored in internal memory.
I've seen that the Technical Reference Manual and the ESP32-S3 Datasheet say the following:
The chip allows for configuring the following boot parameters through strapping pins and eFuse bits at power-up or a hardware reset, without microcontroller interaction.
So I'm not really sure if there's any security issue with leaving ENABLE_SECURITY_DOWNLOAD to false or not.Hardware reset is directly triggered by the circuit.
Thanks in advance!
