⚔️ 1️⃣ permit() = aprobat fără a necesita tranzacție
Când semnați un mesaj EIP-2612 sau EIP-712, spuneți că:
„Permiteți adresei X să cheltuie Y token-uri de-ale mele până la momentul Z.”
Și doar cu acea semnătură (v, r, s), deținătorul său poate apela token.permit(...)
→ Pe blockchain, echivalentul este o comandă approve() adevărată.
→ Ei pot transferFrom() pentru a retrage token-urile tale fără să trimiți nicio tranzacție.
⸻
🧨 2️⃣ Modul în care hackerii profită
Atacatorul îți va trimite o fereastră pop-up MetaMask de genul:
„Semnează pentru a verifica portofelul” sau „Semnează mesajul pentru dApp”
Dar de fapt este permit() sau Permit2 cu
spender = portofelul hackerului, value = 2^256-1.
Dai clic pe „Semnează” → token-urile tale sunt considerate aprobate complet pentru hacker.
Fără gaz. Fără jurnal de explorare. Dar token-urile tot zboară 🕳️
⸻
🧩 3️⃣ Motivul pentru care MetaMask te face să fii neglijent
MetaMask afișează „Semnează date tipizate” sau „Semnează pentru verificare”
fără a specifica clar pentru cine semnezi permit().
Asta este motivul pentru care mulți oameni își pierd token-urile fără a ști de ce.
⸻
🧰 4️⃣ Cum să te protejezi
1️⃣ Privește popup-ul portofelului (MetaMask / WalletConnect)
• „Cerere de semnătură” / „Semnează” / „Semnează date tipizate” → Oprește-te, nu semna dacă nu ești sigur
• „Conectează-te” / „Conectează-te la site” → De obicei, verifici doar adresa, mai sigur, dar rămâi precaut
2️⃣ Deschide detaliile cererii
• Dă clic pe „Arată detalii” / „Avansat” / cele 3 puncte → vezi datele brute
• Dacă vezi JSON care conține domain, types, message, primaryType → Acesta este un EIP‑712 date tipizate, trebuie să verifici cu atenție
3️⃣ Caută cuvinte cheie periculoase în datele brute
• spender, owner, value, deadline, nonce, permit, PermitSingle/Batch/Transfer → 🚩 avertisment permit/aprobat
• Doar text simplu precum „Sunt de acord să mă conectez” → risc mic, dar nu absolut