Definiție
Un approval exploit este o categorie de risc de securitate în care un atacator folosește mecanismele de aprobare sau allowance pentru tokenuri pentru a muta activele unei victime fără consimțământ suplimentar. De obicei apare atunci când un smart contract sau o interfață determină utilizatorul să acorde allowance-uri excesive sau nesigure, pe care atacatorul le invocă apoi prin contracte malițioase sau compromise. Exploit-ul, în general, nu sparge standardul de token de bază, ci abuzează modelul legitim de autorizare codificat în logica de aprobare a tokenului. Ca urmare, transferul de fonduri este tehnic valid on-chain, chiar dacă încalcă așteptările utilizatorului privind siguranța și aria de acoperire.
Acest risc este strâns legat de modul în care stările de allowance pentru tokenuri sunt stocate și referențiate de smart contracte (smart contracts). Odată ce un atacator are acces la un allowance mare sau nelimitat, poate apela în mod repetat funcțiile de transfer în numele adresei utilizatorului până când soldul aprobat este epuizat. Approval exploit-urile se bazează adesea pe prompturi de tranzacție înșelătoare, nume de contract confuze sau reutilizarea unor permisiuni acordate anterior în moduri neașteptate. Caracteristica esențială este nealinierea dintre ceea ce crede utilizatorul că a autorizat și ceea ce permite efectiv allowance-ul în practică.
Context și utilizare
În discuțiile despre securitate, un approval exploit este menționat ca un risc de abuz de permisiuni, mai degrabă decât un eșec direct al protocolului. Este frecvent asociat cu designuri de token de tip ERC-20, unde un pas separat de aprobare stabilește un allowance pe care alte contracte îl pot cheltui. Atunci când aceste allowance-uri sunt configurate greșit, nu sunt niciodată revocate sau sunt acordate unor contracte neîncredibile, ele creează o suprafață de atac persistentă pe care adversarii o pot activa ulterior. Exploit-ul se află astfel la intersecția dintre designul de smart contract, experiența de utilizare a wallet-ului și înțelegerea de către utilizator a semanticii de autorizare on-chain.
Termenul este folosit adesea împreună cu conceptul de allowance pentru a descrie cât de granulare sau revocabile ar trebui să fie permisiunile pentru tokenuri. Auditorii de securitate și designerii de protocoale tratează approval exploit-urile ca o categorie distinctă de amenințări care trebuie luată în calcul la proiectarea interfețelor de contract și a fluxurilor de permisiuni. În rapoartele de incidente, etichetarea unui atac drept approval exploit evidențiază faptul că atacatorul a acționat în limitele permisiunilor acordate formal, chiar dacă acele permisiuni au fost obținute sau structurate într-un mod înșelător sau nesigur. Această clasificare ajută la diferențierea față de bug-urile care provin din erori aritmetice, reentrancy sau alte defecte de nivel scăzut ale contractelor.