ecrecover zero-address return unchecked
Hyperlane's assessment for RD-F-019 — scored green on the v1.7.0 rubric. The evidence below is the curator's reasoning for this score.
Evidence summary #
AbstractMultisigIsm uses OZ ECDSA.recover() (v4.9.3), not the raw ecrecover opcode. OZ v4.9.3 ECDSA.recover() wraps tryRecover() and calls _throwError() when the recovered address would be zero — causing a revert on invalid signatures. The implicit zero-address rejection via OZ wrapper is equivalent to an explicit check. Score: green.
Sources #
- GitHubAbstractMultisigIsm.sol — verify() function using OZ ECDSA.recoverAbstractMultisigIsm.sol — uses ECDSA.recover() from OZ v4.9.3; no raw ecrecover callsretrieved 2026-05-17
- OpenZeppelin ECDSA.sol v4.9.3 — tryRecover and recover behaviorOZ ECDSA v4.9.3 — recover() reverts on invalid signatures including address(0) returnsretrieved 2026-05-17
Methodology #
Determine whether any `ecrecover` call result is used without a `!= address(0)` guard.
See the full factor methodology and distribution across all protocols →
rubric_version v1.7.0 protocol hyperlane factor RD-F-019 score green collected_at 2026-05-16 23:03:56