Firme permit: l'approvazione che non è una transazione

·5 min di lettura·Di SSP Editorial Team
Copertina SSP Academy: firme permit, l'approvazione che non è una transazione

Firme permit: l'approvazione che non è una transazione

Un'approvazione di token on-chain è una transazione: paghi il gas e un contratto ottiene il diritto di spostare i tuoi token. Le approvazioni dei token spiega perché questi permessi restano attivi molto dopo che te ne sei dimenticato.

Le firme permit concedono lo stesso tipo di permesso senza alcuna transazione. Niente gas, niente nella cronologia: solo un pulsante «Firma». Proprio per questo sono diventate una delle tecniche preferite dei drainer.

Che cos'è un permit

Un permit è un messaggio off-chain, nel formato dei dati tipizzati dello standard EIP-712, che dice: «Autorizzo questo indirizzo a spendere fino a questo importo di questo token, fino a questa data». Lo firmi, non lo invii. Chiunque possieda la firma può poi inviarla alla blockchain per conto proprio, pagando il gas, e l'autorizzazione diventa effettiva.

Ci sono due forme comuni:

  • Permit EIP-2612. Integrato nel contratto del token stesso (lo supportano molte stablecoin e token recenti). Il token verifica la firma e registra un'autorizzazione ordinaria, esattamente come se avessi inviato una transazione approve.
  • Permit2 di Uniswap. Un contratto separato che molte app usano per qualsiasi ERC-20. Approvi Permit2 una volta on-chain, spesso per un importo illimitato; da lì in poi le app ottengono l'accesso tramite messaggi Permit2 firmati, e quelle autorizzazioni risiedono in Permit2, non nel token.

Entrambi fanno risparmiare una transazione e permettono alle app di unire «approva e scambia» in un solo passaggio. Il problema è come si percepisce una firma: una richiesta di transazione sembra denaro che si muove, una richiesta di firma sembra un accesso.

Perché i drainer li adorano

Una falsa pagina di airdrop, mint o «claim» ti chiede di collegare il wallet, poi mostra una richiesta di firma. Firmi, sembra non succedere nulla e chiudi la scheda. Pochi minuti dopo l'attaccante invia il tuo permit, rendendo il proprio indirizzo lo spender, e chiama transferFrom per prendersi i token. Non hai mai inviato una transazione, non c'è stato alcun avviso sul gas né nulla da annullare, eppure il tuo saldo è sparito.

I campi che contano

Se compare una richiesta di dati tipizzati, cerca questi campi nella sezione message:

  • spender: chi riceve il diritto di spendere. Se è un indirizzo che non riconosci invece del contratto di un'app nota, fermati.
  • value (o amount): quanto. Un numero enorme come 115792089237316195423570985008687907853269984665640564039457584007913129639935 significa illimitato.
  • deadline (o expiration / sigDeadline): fino a quando la firma può essere usata. Una scadenza tra anni è un campanello d'allarme.
  • nonce: un contatore perché ogni firma funzioni una sola volta. Non rende sicuro un permit.

domain.name e verifyingContract indicano a quale token (o a Permit2) si applica, e primaryType svela tutto: Permit, PermitSingle, PermitBatch e PermitTransferFrom sono tutti permessi di spesa.

Pagine di «accesso» che chiedono dati tipizzati

Le vere richieste di accesso sono di solito messaggi in testo semplice che indicano il sito, il tuo indirizzo e un nonce; firmare un messaggio spiega cosa dimostrano. Un accesso non ha motivo di includere un contratto di token, uno spender, un importo o una scadenza.

Quindi, se una pagina dice «accedi per continuare» o «verifica il tuo wallet» e la richiesta riguarda dati tipizzati strutturati con un primaryType simile a Permit, trattala come una richiesta di approvazione travestita da accesso. Rifiutala.

Revocare un permit

Dipende dal fatto che la firma sia già stata usata:

  • Permit EIP-2612 usato: ora è una normale autorizzazione on-chain sul token. Revocala come qualsiasi approvazione, portandola a zero. Revocare le approvazioni dei token da SSP spiega come controllarle e rimuoverle.
  • Autorizzazioni Permit2: si trovano nel contratto Permit2. Revocare l'approvazione del token a Permit2 taglia fuori tutte le app che vi si appoggiano; gli strumenti di revoca che supportano Permit2 possono anche rimuovere singoli spender.
  • Firmato ma non ancora usato: la firma resta valida fino alla scadenza o finché il suo nonce non viene consumato. Si può annullare consumando prima quel nonce on-chain (per EIP-2612, inviando un permit innocuo tuo; Permit2 ha funzioni per invalidare i nonce), ma è una corsa contro qualcuno che ha già la firma. Spostare i token su un indirizzo sicuro è spesso più rapido. La difesa affidabile è non firmare affatto.

Come SSP gestisce i dati tipizzati

Gli account EVM di SSP sono smart account ERC-4337 approvati da due dispositivi, e questo cambia il quadro.

Cosa vedi. Da SSP Wallet e SSP Key 2.2.0, una richiesta di dati tipizzati (tramite WalletConnect) mostra il sito richiedente, il tuo indirizzo e la rete, il nome del dominio, il contratto di verifica e il primaryType, con i dati EIP-712 completi sotto. Quando la richiesta sembra un'approvazione di token — Permit, Permit2 e tipi simili — entrambe le app lo dicono chiaramente: firmarla consente allo spender di spostare token da questo indirizzo senza un'altra conferma. Gli ordini di trading e dei marketplace hanno un avviso a parte. In ogni caso, devi spuntare una conferma prima di poter approvare, ed entrambi i dispositivi devono approvare prima che venga firmato qualcosa.

Se i permit funzionano. La maggior parte dei permit EIP-2612 viene verificata con ecrecover, che funziona solo per un indirizzo ordinario a chiave singola, quindi gli smart account come i vault EVM di SSP non possono soddisfare quelli. I contratti che accettano firme da smart account — tra cui Permit2 — chiedono all'account stesso di confermare la firma, e dalla 2.2.0 SSP firma i dati tipizzati sull'hash EIP-712 standard, quindi quei controlli passano. In altre parole, un permit firmato in SSP è utilizzabile, dall'app che intendevi e da chiunque altro abbia la firma. Tratta ogni richiesta di dati tipizzati come se dovesse funzionare, perché funzionerà.

Il riepilogo onesto

Un permit è un'approvazione consegnata sotto forma di firma: gratuita, silenziosa e perfettamente in grado di svuotare un saldo non appena qualcuno la invia. Leggi spender, importo e scadenza prima di firmare, diffida di qualsiasi «accesso» che li contenga e revoca le autorizzazioni — sul token o in Permit2 — che non ti servono più.

L'approvazione a due dispositivi di SSP ti dà un secondo sguardo, e dalla 2.2.0 entrambe le app segnalano permit e ordini prima che tu firmi — ma un avviso non sa distinguere un'app affidabile da un drainer. La lettura, e la decisione, restano tue.

Condividi questo articolo

Articoli correlati