An audit of a standard proxy pattern — the upgradeable-contract design that, when done wrong, has caused fund losses across DeFi.
A proxy delegates calls to an implementation contract. If the proxy stores its implementation address in slot 0, and the implementation also uses slot 0 for a state variable, the two collide:
delegatecall now points at attacker-controlled codeThis is the classic upgradeable-proxy footgun — the reason libraries like OpenZeppelin use unstructured storage (random high slots).
Critical — "The Proxy uses delegatecall without access control, and the implementation address in slot 0 collides with the implementation's storage — enabling an attacker to overwrite critical state and seize control."
Upgradeable patterns are everywhere. A single slot collision turns an upgrade mechanism into a takeover. Our AI catches this in minutes.
More vulnerability classes we catch