World Controller ESP32s3
Posted: Sun Aug 18, 2024 6:52 pm
Hi
I have an application where user-provided code has to be loaded and executed (not flashed, only executed from RAM using espressif/elf_loader).
It has to be assumed that this code is malicious, and doing everything it can to destroy the device. I am especially worried about flash and efuses. The absolute minimum that i have to guarantee is that malicious code cannot:
- overwrite the factory app
- break the chip's configuration by messing with efuses
everything else (crashing, corrupting OTA app) is acceptable (though obviously better if it is also prevented).
Is the world controller secure enough for such a use-case? I was thinking about locking the flash chip after boot (but before running the untrusted code), to prevent overwriting of firmware. however it seems that esp32s3 integrated flash doesn't have this feature?
i then thought about using external, lockable flash, but realized the same problem exists with efuses.
the untrusted code will not have any syscall access, it will just read from a pre-defined memory range, and write to another pre-defined memory range. it will also be able to execute firmware-provided functions (still in untrusted mode though - those are all pure side-effect free functions like std::sin for example)
what do you think? is this possible with world controller? is there a better approach?
I have an application where user-provided code has to be loaded and executed (not flashed, only executed from RAM using espressif/elf_loader).
It has to be assumed that this code is malicious, and doing everything it can to destroy the device. I am especially worried about flash and efuses. The absolute minimum that i have to guarantee is that malicious code cannot:
- overwrite the factory app
- break the chip's configuration by messing with efuses
everything else (crashing, corrupting OTA app) is acceptable (though obviously better if it is also prevented).
Is the world controller secure enough for such a use-case? I was thinking about locking the flash chip after boot (but before running the untrusted code), to prevent overwriting of firmware. however it seems that esp32s3 integrated flash doesn't have this feature?
i then thought about using external, lockable flash, but realized the same problem exists with efuses.
the untrusted code will not have any syscall access, it will just read from a pre-defined memory range, and write to another pre-defined memory range. it will also be able to execute firmware-provided functions (still in untrusted mode though - those are all pure side-effect free functions like std::sin for example)
what do you think? is this possible with world controller? is there a better approach?