# Signature validation bypass in contracts

Recovered or supplied signer never bound to trusted owner; zero address or attacker-chosen validator accepted

_Area: Smart contract access control and control flow. Seen in 45 disclosed reports; 3 confirmed bounties, median $400,000, range $350-$2,200,000; latest 2026-06-25. Updated 2026-10-23._

## How it works
A signature check is supposed to prove *who* authorized an action. The assumption that breaks: the code validates the *shape* of a signature (nonzero recovery, magic return value, a flag bit) but never binds the result to the trusted party. The signer identity becomes attacker-supplied data, so any caller can present a "valid" signature. The same failure appears when a security flag is optional and its omission silently disables validation.

## Where it shows up
- `ecrecover(...) != address(0)` used as the whole check, with no comparison to `owner` [E6](https://bugbountylibrary.com/r/dhl%3A20260625-lixirpermitdrain.md).
- `recoverSigner` returning `address(0)` unchecked, especially where admin/owner was renounced or zeroed [E7](https://bugbountylibrary.com/r/dhl%3A20260528-legendarymoneymonnft.md).
- ERC1271 `isValidSignature` trusted on a caller-supplied signer contract, not pinned to an allowlist [E4](https://bugbountylibrary.com/r/c4%3A2023-01-biconomy%3AH-04.md)[E8](https://bugbountylibrary.com/r/dhl%3A20260521-muredistribution.md).
- Signer-authorization mappings keyed on a caller-controlled field (taker/receiver) instead of the fund owner (maker) [E3](https://bugbountylibrary.com/r/dhl%3A20260507-trustedvolumes.md).
- Permissionless signer registration feeding that mapping [E3](https://bugbountylibrary.com/r/dhl%3A20260507-trustedvolumes.md).
- Meta-tx/paymaster paths where an overridden function drops trusted-forwarder validation [E2](https://bugbountylibrary.com/r/blog%3Aimmunefi-com-blog-bug-fix-reviews-enzyme-finance-privilege-check.md).
- Optional security flags (checkpointer bit) left unset in chained/nested signatures, zeroing validation state [E5](https://bugbountylibrary.com/r/c4%3A2025-10-sequence%3AH-01.md).
- Client-supplied feature/vendor flags that short-circuit signature verification (cross-domain: VPN/IKEv1) [E1](https://bugbountylibrary.com/r/blog%3Alabs-watchtowr-com-marking-your-own-homework-check-point-remote-access-vpn-ikev1-authentication-bypass-cve-2026-50751.md).

## How to review
Trace every path from signature bytes to the authorization decision. The invariant: the recovered or declared signer must equal a trusted, pre-registered party bound to the resource being moved, and that binding must not depend on any caller-supplied field. A correct implementation binds signer to resource with an EIP-712 domain (chain, verifying contract) plus a nonce, and compares the recovered address to a stored owner. Check: is `ecrecover` output compared to a stored owner and rejected when zero? Is `v` constrained to 27/28 (or EIP-155 chain-id form where applicable)? Is the ERC1271 signer pinned to an allowlist? Is the authorization mapping keyed on the fund owner? Does the paymaster validate the forwarder? When a flag is omitted, does validation default to *on*? [E1](https://bugbountylibrary.com/r/blog%3Alabs-watchtowr-com-marking-your-own-homework-check-point-remote-access-vpn-ikev1-authentication-bypass-cve-2026-50751.md)[E2](https://bugbountylibrary.com/r/blog%3Aimmunefi-com-blog-bug-fix-reviews-enzyme-finance-privilege-check.md)[E3](https://bugbountylibrary.com/r/dhl%3A20260507-trustedvolumes.md)[E4](https://bugbountylibrary.com/r/c4%3A2023-01-biconomy%3AH-04.md)[E5](https://bugbountylibrary.com/r/c4%3A2025-10-sequence%3AH-01.md)[E6](https://bugbountylibrary.com/r/dhl%3A20260625-lixirpermitdrain.md)[E7](https://bugbountylibrary.com/r/dhl%3A20260528-legendarymoneymonnft.md)[E8](https://bugbountylibrary.com/r/dhl%3A20260521-muredistribution.md)

## Variants seen
- Zero-address recovery accepted as valid [E6](https://bugbountylibrary.com/r/dhl%3A20260625-lixirpermitdrain.md)[E7](https://bugbountylibrary.com/r/dhl%3A20260528-legendarymoneymonnft.md).
- Unchecked ERC1271 signer; attacker deploys always-true validator [E4](https://bugbountylibrary.com/r/c4%3A2023-01-biconomy%3AH-04.md)[E8](https://bugbountylibrary.com/r/dhl%3A20260521-muredistribution.md).
- Wrong-party keying of signer allowlist [E3](https://bugbountylibrary.com/r/dhl%3A20260507-trustedvolumes.md).
- Dropped forwarder check in overridden paymaster function [E2](https://bugbountylibrary.com/r/blog%3Aimmunefi-com-blog-bug-fix-reviews-enzyme-finance-privilege-check.md).
- Omitted flag disabling checkpointer validation [E5](https://bugbountylibrary.com/r/c4%3A2025-10-sequence%3AH-01.md).
- Client-controlled bitmask skipping cert verification [E1](https://bugbountylibrary.com/r/blog%3Alabs-watchtowr-com-marking-your-own-homework-check-point-remote-access-vpn-ikev1-authentication-bypass-cve-2026-50751.md).

## Why fixes fail
E1: a patch removed a parameter from a validation function while the client-supplied state field still gated the check; trace every writer of that field, not just callers. E5: making a security flag optional means the zero default disables validation in nested contexts, so omission must fail closed.

## Impact and severity
Critical when the bypassed check gates fund movement or identity: full drains [E3](https://bugbountylibrary.com/r/dhl%3A20260507-trustedvolumes.md)[E7](https://bugbountylibrary.com/r/dhl%3A20260528-legendarymoneymonnft.md)[E8](https://bugbountylibrary.com/r/dhl%3A20260521-muredistribution.md), arbitrary delegatecall/selfdestruct [E4](https://bugbountylibrary.com/r/c4%3A2023-01-biconomy%3AH-04.md), auth bypass as any user [E1](https://bugbountylibrary.com/r/blog%3Alabs-watchtowr-com-marking-your-own-homework-check-point-remote-access-vpn-ikev1-authentication-bypass-cve-2026-50751.md). Worse when registration is permissionless or admin is zeroed.

## Evidence
- E1: https://bugbountylibrary.com/r/blog%3Alabs-watchtowr-com-marking-your-own-homework-check-point-remote-access-vpn-ikev1-authentication-bypass-cve-2026-50751.md
- E2: https://bugbountylibrary.com/r/blog%3Aimmunefi-com-blog-bug-fix-reviews-enzyme-finance-privilege-check.md
- E3: https://bugbountylibrary.com/r/dhl%3A20260507-trustedvolumes.md
- E4: https://bugbountylibrary.com/r/c4%3A2023-01-biconomy%3AH-04.md
- E5: https://bugbountylibrary.com/r/c4%3A2025-10-sequence%3AH-01.md
- E6: https://bugbountylibrary.com/r/dhl%3A20260625-lixirpermitdrain.md
- E7: https://bugbountylibrary.com/r/dhl%3A20260528-legendarymoneymonnft.md
- E8: https://bugbountylibrary.com/r/dhl%3A20260521-muredistribution.md
