Your source code might be clean, but your firmware is a party full of strangers. And some brought vulnerabilities, both known and unknown.
We’ve all heard it: "We scan the source. We're good." But are we? Not quite.
In reality, what you write and what ends up running on a device are rarely the same thing. Compilers optimize, build environments inject configs, and developers sometimes cut corners ( this is my shock and awe face). The result? Code mutations you didn’t see coming.
Think of source code like a movie script. What ends up on screen—the firmware—is the director’s cut. Scenes are edited, characters change, and sometimes a surprise actor shows up uncredited.
Bottom line? By the time your firmware is built, it might be something very different from what you wrote.
If you want the truth, you need to analyze the binaries themselves. And that means digging deep:
Traditional scanners don’t do this. They either fail outright or stop at surface-level inspection.
We tested an intentionally vulnerable firmware (IoT Goat) with a traditional container scanner. It flagged 247 issues. Not bad, right?
Then we ran it through a binary-level analysis with the Finite State platform.
Result? Almost 7,000 findings. Including:
The truth was buried in the binaries. And most tools didn’t even bother to dig. We don’t fault them for that, it’s just not what they were designed to do - and gives us a false sense of security.
Your source code might tell a beautiful story, but attackers read your firmware. If you’re not analyzing your binaries, you’re leaving your devices open to surprise plot twists. And in IoT security, surprise is rarely good.
Next up: Open source love and liability—what happens when your third-party components turn against you.