A theory for decades of C vulnerabilities
The central argument is that C's memory vulnerabilities stem from broken semantic invariants—properties about values that must hold for correct operation but aren't enforced by the type system. This explains integer overflow, buffer overflow, use-after-free, and double free as different manifestations of the same underlying failure, where the program's representation of reality ceases to correspond to reality.
The vulnerability is the point at which the program's representation of reality ceases to correspond to reality.