A message handler (LayerZero lzReceive / CCIP _ccipReceive / custom relayer) does not verify the source chain and the remote sender address against a trusted-remote allowlist. Anyone can deliver a forged message and trigger privileged mint/release logic.
// lzReceive(srcChain, srcAddr, payload) mints from payload without // checking srcAddr. Attacker calls it directly with a forged payload // -> unlimited cross-chain mint.
require(msg.sender == address(endpoint), "not endpoint"); require(srcChain == TRUSTED_CHAIN && keccak256(srcAddr) == keccak256(TRUSTED_REMOTE), "bad source");
Largest recorded losses in the same failure class — related, not the same bug:
The SaferICO scanner runs 201 detectors over your Solidity source, SAFE-0246 among them. Paste an address or the source itself — a small per-scan fee, shown before you sign, or unlimited on any plan.