Glitching a microcontroller to unlock the bootloader
grazfather.github.io
grazfather.github.io
Has anyone?
For something like the reset glitch hack on the Xbox 360, for example, they were glitching a single opcode to do the compare with the checksum. Multiple ways to defend/harden against that attack (which, likely, were implemented on the Xbox One).
Literally something like
if (read_flash(0xdeadbeef) != 0x1234) {
count += 1;
}
if (read_flash(0xdeadbeef) != 0x1234) {
count += 1;
}
...
but of course, then you have to worry about how `count` is being checked.a bolt, for example, will have tensile strength and pitch diameter within a certain specified range as long as the temperature is within some given range (and it hasn't previously been exposed to excessive stress or temperature), and a resistor will have its resistance, temporal drift, physical dimensions, inductance, etc., within a certain specified range as long as the temperature is within some given range and it hasn't been previously overheated
the specifications for a microcontroller sometimes run to thousands of pages
vendors are free to include other features not documented in the spec, such as undisclosed debug ports, and to switch from one supplier to another whenever they like as long as the product still meets the spec
in glitching attacks the attacker operates the components outside their nominal ranges, where the vendor offers you no guarantees of what will happen. higher clock speeds, shorter write times, lower voltages, higher temperatures, shorter setup and hold times, etc. even if one vendor does try to offer such guarantees, generally their product includes parts and processes sourced from other vendors who don't
so i don't think it's yet something you can define crisply enough to mount a general defense; glitching attacks are enabled by a social system that creates new vulnerabilities much more rapidly than they are closed
[1] https://www.agileanalog.com/ip-by-product-type/agilevglitch-...
i think this is a much more feasible thing to defend against than glitching attacks, though still difficult for similar supply-chain reasons
what you are describing is, in my book, a glitching attack, not a side channel attack
https://www.microcontrollertips.com/dual-core-lockstep-proce...
https://www.synopsys.com/designware-ip/processor-solutions/a...
Whenever that circuit detects a glitch in the clock, the power supply, the reset line, electric fields or magnetic fields, it halts the CPU until the whole system is reset.
Not very hard to build - I don't know why every chip doesn't include it by default. As well as protecting against deliberate attacks, it would also protect against accidentally running a chip out of spec - for example not having decoupling capacitors on the power supply, causing intermittent behaviour.
I do not have that specific devboard, but I've run designs at ~70MHz.
Also, I'd ensure I feed the clock network with the PLL output. Not using the clock network is also a potential source of issues.