by wolframio on 11/21/19, 8:59 PM with 76 comments
by jws on 11/21/19, 9:30 PM
Physical access to the device is required. Security compromise is permanent.
by LeifCarrotson on 11/21/19, 9:33 PM
> This FATAL exploit allows an attacker to decrypt an encrypted firmware because he is now in possession of the AES Flash Encryption Key.
> Worst case scenario, he is now able to forge his own valid firmware (using the Secure Boot Key) then encrypt it (using the Flash Encryption Key) to replace the original firmware PERMANENTLY.
> This last post closes my security investigation on ESP32, which I consider now as a broken platform.
Isn't that a good thing for me as a consumer? I like the ability to decrypt and modify my own devices. I like that this is a permanent modification, unlike eg. dd-wrt where you have to prevent the bootloader from overwriting your software with that of the manufacturer.
The only thing I can think of that would be really bad is if I had a device with an ESP32 inside physically stolen then reinstalled by an attacker (or a counterfeit sold to me with malicious code from the vendor) and this exploit allowed them to get private data from my network to an Internet location. But they could already just buy or build their own device, ESP32 or not, to do that.
This is only bad for draconian IoT manufacturers who want to enforce their terms of service and artificial limitations on hardware they think consumers are leasing but consumers think they are buying.
by wiremine on 11/21/19, 9:36 PM
The fix is in ESP32-D0WD-V3 and ESP32-WROVER-E, but of course that doesn't do you any good if you've already shipped product.
by gorgoiler on 11/22/19, 1:08 AM
Different to say a robotic tool using its tooltip to maim itself and different to one robot building another, because at the e-fuse level of detail it’s so much more information sense.
Perhaps it’s like a tattoo? Perhaps I’m thinking of the ship tattoos in Surface Detail by Iain M Banks?
by planteen on 11/22/19, 4:21 AM
I once used the e-fuse feature of another part for bootloader integrity. I wasn't worried about encryption, but the part would validate the bootloader integrity when encrypted. If integrity failed, the part would keep searching for a valid image. It was an easy way for some protection against flash corruption.
by andrewstuart on 11/21/19, 9:08 PM
by _def on 11/22/19, 10:21 AM
by chli on 11/22/19, 1:12 PM
> I quickly identify a pure HW processing 500us before the beginning of the UART ascii strings ‘ets June 2018’ corresponding to the BootROM process.
> This HW activity is probably the eFuses Controller initialisation, and a load of the eFuses values in some dedicated buffer memory, to be used by the Flash controller for further steps).
How one would come to this specific conclusion without having any prior knowledge of the boot rom ?
by MrBuddyCasino on 11/21/19, 9:34 PM
by traverseda on 11/21/19, 10:40 PM
by kbumsik on 11/21/19, 9:49 PM
by throwaway77384 on 11/22/19, 11:34 AM
If so, there might be a bounty out for it...
by crankylinuxuser on 11/21/19, 9:53 PM
Regaining control of your stuff is essential.