mtarcure/claude-vibe-squad/erc1271-revert-data-check
Claude Code and agent skill by mtarcure/claude-vibe-squad
- community
Checking that the SKILL.md file is still in the repository.
Use when a contract validates a smart-contract-wallet signature by low-level-calling isValidSignature and you suspect the revert-data trick — the call's EVM success flag is discarded, so an attacker-deployed verifier that reverts with the 0x1626ba7e magic value in its reason is misread as a valid signature and authorizes a drain.
Install
npx vskill@latest install mtarcure/claude-vibe-squad/erc1271-revert-data-checkSKILL.md
ERC-1271 Revert-Data Confusion Check
Audit smart-contract-wallet signature validation for the "revert-data trick": a low-level staticcall/call to isValidSignature(hash,sig) whose EVM success flag is ignored, so an attacker-deployed verifier that reverts with the ERC-1271 magic value (0x1626ba7e) in its revert reason is misread as a valid signature — authorizing a drain.
Source: corpus A §I.3 — ChainSecurity / Zodiac Roles Modifier / Gnosis Pay, June 2026 (~$1.5M). Impact class: funds theft / full wallet drain (intrinsic — clears the impact bar). Governing method: a Phase-3a hypothesis lane of systematic-attacking; emits a lead only — it re-enters the Phase 4–8 verification spine (runnable PoC on a mainnet fork, negative control, G1–G4, cross-family repro) before it is ever a finding.
Method
- Grep the target for every ERC-1271 consumer:
isValidSignature, the0x1626ba7emagic value,
and low-level staticcall/call into a signer address (slither, semgrep custom rule, cast for on-chain bytecode).
- For each call site, confirm the code checks the call's success boolean BEFORE decoding
returnData. The bug pattern is (, bytes memory ret) = signer.staticcall(...) followed by ret[:4] == MAGIC with the success flag discarded, or an assembly { returndatacopy } that never checks success.
- Build the differential PoC in Foundry: deploy a malicious verifier that
reverts with
abi.encode(0x1626ba7e) (or raw bytes) in its reason; call the target's auth path with it as the declared signer.
forgetest on ananvil --forkof the real deployment: assert the drain succeeds against the
live contract state, then assert a success-checked reference implementation rejects it (link-level negative control).
- Add a
halmos/forgeinvariant: "no auth path accepts a signature whose verifier call
returned success == false."
Acceptance
- Every ERC-1271 / low-level-signer call site is enumerated with its success-flag handling classified.
- The PoC drains against a real mainnet fork, not a mock, and the negative control (success-checked
variant) rejects the same input.
- Finding names the exact call site, the ignored success flag, and the realized fund impact; it is
deduped against prior Zodiac/ERC-1271 disclosures before submission.
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingmodel-lanes/gemini/.agents/skills/erc1271-revert-data-check/SKILL.md
Popularity
- 7-day trend score
- 5
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/mtarcure/claude-vibe-squad/erc1271-revert-data-check)