Definicija
Approval exploit je vrsta sigurnosnog rizika u kojem napadač iskorištava mehanizme token approval ili allowance kako bi premještao imovinu žrtve bez dodatnog pristanka. Obično nastaje kada smart contract ili sučelje navede korisnika da odobri pretjerane ili nesigurne allowance iznose, koje napadač zatim poziva putem zlonamjernih ili kompromitiranih contracta. Eksploit obično ne narušava temeljni token standard, već zloupotrebljava legitiman model autorizacije ugrađen u logiku token approvala. Kao rezultat, prijenos sredstava tehnički je valjan on-chain, iako krši korisnikova očekivanja u pogledu sigurnosti i opsega.
Ovaj je rizik usko povezan s načinom na koji se stanja token allowancea pohranjuju i na njih referenciraju smart contracti. Kada napadač dobije pristup visokom ili neograničenom allowanceu, može opetovano pozivati funkcije prijenosa u ime korisnikove adrese sve dok se odobreni saldo ne isprazni. Approval exploiti često se oslanjaju na obmanjujuće transakcijske prompte, zavaravajuća imena contracta ili ponovno korištenje prethodno dodijeljenih dopuštenja na neočekivane načine. Ključna je karakteristika nepodudarnost između onoga što korisnik vjeruje da je odobrio i onoga što allowance u praksi zapravo dopušta.
Kontekst i upotreba
U sigurnosnim raspravama approval exploit se navodi kao rizik zloupotrebe dopuštenja, a ne kao izravni neuspjeh protokola. Često je povezan s ERC-20 stilom dizajna tokena, gdje se u zasebnom approval koraku postavlja allowance koji drugi contracti mogu trošiti. Kada su ti allowancei pogrešno konfigurirani, nikada opozvani ili dodijeljeni neprovjerenim contractima, stvaraju trajnu napadnu površinu koju protivnici mogu kasnije aktivirati. Eksploit se stoga nalazi na sjecištu dizajna smart contracta, UX-a walleta i korisnikova razumijevanja on-chain semantike autorizacije.
Pojam se često koristi zajedno s konceptom allowancea kako bi se opisalo koliko granularna ili opoziva dopuštenja za tokene trebaju biti. Sigurnosni auditori i dizajneri protokola tretiraju approval exploite kao zasebnu kategoriju prijetnje koju treba uzeti u obzir pri dizajniranju sučelja contracta i tokova dopuštenja. U izvješćima o incidentima, označavanje napada kao approval exploita naglašava da je napadač djelovao unutar formalno dodijeljenih dopuštenja, iako su ta dopuštenja dobivena ili strukturirana na obmanjujući ili nesiguran način. Ova klasifikacija pomaže razlikovati takve napade od bugova koji proizlaze iz aritmetičkih pogrešaka, reentrancyja ili drugih niskorazinskih nedostataka contracta.