I am the journeyer from the valley of the dead Sega consoles. With the blessings of Sega Saturn, the gaming system of destruction, I am the Scout of Silence... Sailor Saturn.
I am the journeyer from the valley of the dead Sega consoles. With the blessings of Sega Saturn, the gaming system of destruction, I am the Scout of Silence... Sailor Saturn.
There was a cryptocurrency wallet hack the other day which has so far gone unremarked here because the popcorn is stale and we all pivoted to AI. And yet there are dozens of voices of bagholders crying out in pain wanting to be heard. This is their story.
For some reason the best explanation comes from a boring company that makes point of sale credit card readers https://engineering.block.xyz/blog/predictable-rng-fallback-and-32-bit-reseed-in-coldcard-firmware
Oh hey they got the most important thing not to get wrong wrong in the regulation free
moneysettlement layer of the future.The bug? Well in one file they wrote
#define MICROPY_HW_ENABLE_RNG 0, and a library they depended on had this code:# ifndef MICROPY_HW_ENABLE_RNG # error "get a HW TRNG plz" # endifThis should have caused a build failure, but since MICROPY_HW_ENABLE_RNG was defined, to zero, it did not and instead continued down an insecure codepath.
As a C++ programmer this isn't an unheard of sort of mistake to make in the moment. Many libraries use undefined for preprocessor variables, but there are some people who also use zero.
But it's less excusable to not catch it when this is literally the most important thing to get right in a bitcoin wallet. Did they not trace the code path when writing the code? Did they have no integration tests or unit tests for RNG seed quality? Poor RNG seeding has come up a ton in literature, so is the sort of thing people writing cryptographic code should check for...
We'll have to addend that old saying: "don't roll your own crypto unless the other person's crypto is from a blockchain developer in which case you're probably better off rolling your own after all."
I personally don't want to sneer at the bagholders too much here. It's 2026 and at this point it just feels kinda sad. But I'll end this comment with this glowing review:
"It's open source, so anyone can verify" -- unfortunately for them the verifier was also a hacker.