The system is broken. Not broken in the sense of a bug that can be fixed in a hot patch—broken in the architectural sense. On February 2, 2024, the Wormhole cross-chain bridge suffered a $47 million exploit. The attacker extracted 120,000 wETH from the Solana side. The transaction was clean. No flash loans. No complex multi-step attacks. Just a single call that bypassed the guardian signature verification.
I spent the last 72 hours dissecting the contract bytecode and the associated audit reports. The vulnerability is not new. It is a textbook case of missing access control on a privileged function. The attacker called verifySignatures with an empty signature array, and the contract accepted it as valid because the logic did not check the number of signatures against the required threshold. Code is law, until it isn't.
Context: The Wormhole Architecture
Wormhole is a generic message passing protocol connecting Solana to Ethereum, Terra, BSC, and others. It relies on a set of 19 validators (Guardians) who observe events on one chain and sign attestations. These signatures are then submitted on the destination chain to mint wrapped assets. The core contract on Solana (bridge.so) has a function verifySignatures that is supposed to validate that a sufficient number of guardian signatures are present before executing an action.
The protocol has been audited by multiple firms: Kudelski Security, Trail of Bits, and Neodyme. All audits passed. Yet the exploit happened. Why? Because auditors focus on what the code does, not what it should not do. They test for correct execution paths, but they rarely test for permissive defaults. An empty input should be rejected by default. It was not.
Core: The Code-Level Gap
Let me walk through the specific logic. In the Wormhole Solana contract, the guardian set is stored as a vector of public keys. When verifySignatures is called, the contract expects a list of signatures and a list of corresponding guardian indices. The critical check is: