Toutes les vulnérabilités
CRITICALWeb3exploited in the wild

WEB3-BLIND-SIGNING-2024

Web3 · Wallets · Blind signing of opaque transactions and messages

Résumé

Blind signing, approving a payload the wallet cannot decode, is the final step behind the largest multisig drains: Radiant Capital lost about $50M in October 2024 and Bybit about $1.5B in February 2025, both via hardware-wallet signers approving transactions whose true effect their devices could not render. In the Radiant attack, malware showed legitimate-looking transaction data in the Gnosis Safe front-end while the hardware wallets actually received and signed a Safe execTransaction whose inner operation was a delegatecall to an attacker contract; that delegatecall executed in the Safe's own storage context and overwrote the implementation/owner state, handing control to the attacker. Because a hardware wallet's small display can only show a four-byte selector and raw hex, signers cannot parse a nested execTransaction or distinguish a benign call from a delegatecall that rewrites storage slot zero. The same root cause applies to legacy eth_sign, which signs an arbitrary 32-byte hash with no context, letting a phishing site obtain a signature reusable as a transaction authorization. The signer sees one intent and authorizes a different one.

Comment l’éviter dans votre code

  • Wallets and signers must adopt clear-signing (ERC-7730 descriptors) to render structured human-readable intent, and disable or hard-warn on legacy eth_sign.
  • Builders should make hardware wallets decode Safe execTransaction, flag delegatecall operations distinctly, and refuse to show only raw calldata hashes.
  • Multisig operators must independently verify transaction hashes on each signer's device against an out-of-band computed hash before approving.
  • Teams should simulate every multisig transaction (Tenderly, Blockaid) and compare the simulated state change to the front-end's claimed intent.
  • Users and signers should never approve a payload their device cannot fully decode; treat any opaque hash prompt as hostile.

Références

Vulnérabilités liées

Tout Web3 →