Skip to content
Back to skills

Reviewing Signatures Permit And Eip712

ASecurity

Review EIP-712, permit, and custom signatures: replay, chainId, nonce, deadline, ecrecover address(0), malleability, encodePacked collisions. Use for permits, listings, votes, and bridge attestations.

  • 3 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 2, 2026
ai-agentsfrontend

Security analysis

A100/100

Scanned September 2, 2026

npx -y skills add nuroctane/nur-cli --skill reviewing-signatures-permit-and-eip712 --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Reviewing Signatures Permit And Eip712?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Reviewing Signatures Permit And Eip712
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/nuroctane-reviewing-signatures-permit-and-eip712/badge)](https://www.skillsdirectory.com/skills/nuroctane-reviewing-signatures-permit-and-eip712)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: reviewing-signatures-permit-and-eip712
description: "Review EIP-712, permit, and custom signatures: replay, chainId, nonce, deadline, ecrecover address(0), malleability, encodePacked collisions. Use for permits, listings, votes, and bridge attestations."
---

# Reviewing signatures, permit, and EIP-712

In-scope. Local tests with `vm.sign`. Never reuse a user's live signature.

## Domain

- `EIP712` domain: name, version, **chainId**, verifyingContract.
- Forked/replayed on another chain if chainId missing (SWC-121).

## Message

- Nonce increments; replay reverts.
- Deadline checked (`block.timestamp`).
- `ecrecover` result != `address(0)` (SWC-122).
- EIP-2098 compact vs 65-byte; s-value malleability (SWC-117). Prefer OZ `ECDSA.recover`.

## encodePacked

Two dynamic types in `abi.encodePacked` can collide (SWC-133). Use `abi.encode` for typed data.

## Permit

- ERC-20 permit vs DAI-style permit (allowed vs value).
- Signature used as unlimited allowance forever is a product finding.
- Phishing-class Permit2 (UI lie, leftover allowance): also load `reviewing-frontend-and-ops-surfaces`.

## Listings / votes / mints

Same rules. A marketplace listing without nonce is infinite replay (`reviewing-nft-and-marketplace`).

Tests: `test_RevertWhen_Replay`, `test_RevertWhen_WrongChain`, `test_RevertWhen_Expired`, `test_RevertWhen_ZeroRecover`.

## Paid bounty analogs

Full `$` table: `hunting-x-linked-bounties` `references/paid-payouts.md`. Permit2 **phishing** is `reviewing-frontend-and-ops-surfaces`, not this math.

| $ | Protocol | Pack | Whitehat |
|---|----------|------|----------|
| $560k | Redacted Cartel custom approval | T23 / T10 | Tommaso Pifferi |
| $10k | Mt Pelerin double tx / replay | T10 | Immunefi |

Exactly Finance permit **hack** is `case-cards.md` 7.28.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.