Juhised panustamisprotokollide auditeerimiseks

Juhised panustamisprotokollide auditeerimiseks

Lugemise aeg: 6 protokoll

Selles ajaveebis oleme visandanud likviidsuspanuse protokollide kontseptsiooni ja panustamisprotokollide auditeerimisjuhised. Juhised hõlmavad mitmesuguseid haavatavaid kohti, nagu väljavõtmise mehhanismid, ümardamisvead, väliskõned, tasu loogika, tsüklid, struktuurid, panustamise kestus jne. See ajaveebi postitus on kasulik viide panustamisprotokollide auditeerimiseks ja aitab tuvastada võimalikke vigu. .

Mis on likviidsuspanus?

Likviidsuspanus võimaldab kasutajatel panustada oma krüptovaluutadesse ja teenida preemiaid ilma likviidsust ohverdamata. Selle asemel, et oma münte fikseeritud perioodiks lukustada, saavad kasutajad saada vedela märgi, mis tähistab nende panustatud varasid. Selle märgiga saab kaubelda või seda kasutada nagu mis tahes muud krüptovaluutat, võimaldades kasutajatel kasutada oma varasid vastavalt oma soovile, teenides samal ajal panuseid.

Juhised panustamisprotokollide auditeerimiseks PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.

Näiteks on teil 100 ETH-d, mida soovite Ethereumi võrgus panustada. Selle asemel, et oma ETH fikseeritud perioodiks lukustada, saate oma ETH panustamiseks kasutada likviidsuspanuse teenust, nagu Lido, ja saada vastutasuks stETH-i nimeline vedelikumärk. StETH-iga saate endiselt kaubelda või kasutada panustatud ETH-d, teenides samal ajal panustamispreemiaid.

Alustame panustamislepingute auditeerimisega:

Enne lepingukoodiga alustamist tutvuge kõigi saadaolevate auditi spetsifikatsioonidega. See võib olla valge paberi, README-failide või millegi muu kujul. Need annavad teile aimu, mida lepingukood sisaldab.

Panustamislepingu auditi spetsifikatsioonidokumenti vaadates vaadake järgmisi punkte:

  • Tasude tüübid ja nende arvutused.
  • Panustatud žetoonide premeerimismehhanism
  • Omaniku volitused
  • Kas leping sisaldab ETH-d?
  • Milliseid märke leping sisaldab?
  • Algne leping, millest see on kahveldatud

Kontrollige, kas spetsifikatsioonid vastavad koodile. Alustage tasude ja tokenoomikaga, millele järgneb omaniku volituste kinnitamine. Kontrollige, kas kõik preemiad ja tasude väärtused on kooskõlas dokumentatsiooniga.

Haavatuid kohti, mida otsida?

1. Preemia väljavõtmise mehhanism:

Kontrollige, kas panustatud žetoonide preemiamehhanism on õigesti rakendatud ning kas preemiad jaotatakse õiglaselt ja proportsionaalselt kõigile panustajatele. Projektid võivad preemiaid jagada kahel viisil: kas automaatselt, perioodiliselt või kasutajate endi nõudmisel. Väljavõtmise funktsiooni saab rakendada ja kohandada vastavalt protokolli äriloogikale.
Allpool on mõned kontrollpunktid:

  • Kontrollige, kas mõni kasutaja saab välja võtta rohkem kui tema preemia + panustatud summa.
  • Kontrollige summa arvutamisel üle-/alatäitumist
  • Kontrollige, kas teatud parameetrid võivad arvutamise ajal preemiaid negatiivselt mõjutada.
  • Kui selles funktsioonis kasutatakse block.timestamp või block.number. Kontrollige, kas seda saab kuidagi ära kasutada.

2. Tasu loogika:

Kui sissemakse ja väljamakse eest tuleb maksta teatud tasu, siis veenduge, et ükski kasutaja ei saaks tasust mööda minna. Lisaks olge valvas võimalike üle- või alavooluprobleemide suhtes. Ainult administraatoril või omanikul peaks olema õigus muuta tasu seadeid. Samuti kontrollige, kas maksimumtasude piirmäär on kehtestatud, et administraator ei saaks seda liiga kõrgele määrata.

3. LP märgi vermimis-/põletusmehhanism:

Kontrollige, kas vermimis- ja põletamismehhanismid on õigesti rakendatud. Põletusfunktsioon peaks tühistama kõik rahapaja funktsiooniga tehtud olekumuudatused. Lisaks on ülioluline kontrollida, kas kasutajad saavad esimese panuse ajal, kui bassein on tühi, sobiva koguse žetoone.

Funktsioonide vermimise ja põletamise loogikat saab matemaatiliselt kontrollida, et paljastada mis tahes varjatud haavatavus. Samuti ei tohiks vermitud LP-žetoonide koguvaru ületada panustatud varasid.

4. Ümardamisvead:

Kuigi teatud väiksemad ümardamisvead on tavaliselt vältimatud ega tekita muret, võivad need märkimisväärselt kasvada, kui neid on võimalik korrutada. Otsige servajuhtumeid, kus ümardamisvigadest saab kasu korduvalt panustades ja eemaldades.

Et teha kindlaks, kas ümardamisvead võivad pikema aja jooksul koguneda märkimisväärse summani, saame matemaatiliselt arvutada võimalike ümardamisvigade vahemiku.

5. Panuse kestus:

Veenduge, et lepingus sisalduvad panuse kestuse arvutused ühtiksid määratud äriloogikaga. Veenduge, et kasutajad ei saaks preemiaid lunastada enne, kui panuse kestus on lõppenud, jättes kestuse kontrollimisest mööda. Samuti kontrollige, kas ründaja saab panustamise kestust rohkemate hüvede saamiseks ära kasutada.

6. Väliskõned ja märgihaldus:

Enamik väliskõnesid tehakse märgilepingutele. Seega peame kindlaks määrama, millist tüüpi žetoone panustamisleping käsitleb. Oluline on kontrollida väliskõnesid vigade ja taastumisrünnakute suhtes. Deflatsioonimärgid või ülekandetasudega märgid, nagu Safemoon, võivad tekitada probleeme, kui nende loogikat ei rakendata õigesti.

7. Hindade manipuleerimise kontrollid:

Hindade manipuleerimine kiirlaenu kaudu on DeFi projektide üks sagedasemaid häkkimisi. Võib esineda olukordi, kus pahatahtlikud osalejad saavad suure hulga žetoonide panustamisel või mahavõtmisel kasutada kiirlaene hindadega manipuleerimiseks. Vaadake panustamise ja mahavõtmise funktsioonid hoolikalt üle, et vältida äärmuslikke stsenaariume, mis võivad põhjustada kiirlaenupõhiseid hinnamanipulatsioonirünnakuid ja teiste kasutajate raha kaotamist.

8. Mõned lisakontrollid:

  • Silmused: Kui lepingu loogika hõlmab massiivide loomist, on oluline tagada, et gaasiploki limiiti ei ületataks. See võib juhtuda siis, kui massiivi suurus on väga suur, seega peaksite uurima, millised funktsioonid võivad massiivi suurust suurendada ja kas mõni kasutaja võib seda ära kasutada DoS-i rünnaku tekitamiseks. Vaadake seda aru.
  • Struktuurid: Panustamislepingud kasutavad kasutaja- või kogumiandmete salvestamiseks struktuuri tüüpi. Funktsioonis struktuuri deklareerimisel või sellele juurde pääsemisel on oluline määrata, kas kasutada "mälu" või "salvestusruumi". See võib aidata meil gaasi säästa. Lisateabe saamiseks vaadake selle artikli juurde.
  • Eesjooks: Otsige stsenaariume, kus pahatahtlikud osalejad võivad mis tahes tehingu enda kasuks juhtida.
  • Funktsiooni nähtavuse/juurdepääsu kontrollid: Kõikidele funktsioonidele, mis on deklareeritud väliseks või avalikuks, pääsevad juurde kõik. Seetõttu on oluline tagada, et ükski avalik funktsioon ei saaks teha tundlikke toiminguid. Väga oluline on kontrollida, kas panustamisprotokoll on rakendanud asjakohaseid kontrolle, et vältida volitamata juurdepääsu nii panustatud müntidele kui ka süsteemi infrastruktuurile.
  • Tsentraliseerimise riskid: Oluline on mitte anda omanikule liigseid volitusi. Kui administraatori aadress on ohus, võib see protokolli oluliselt kahjustada. Kontrollige, kas omaniku või administraatori õigused on asjakohased, ja veenduge, et protokollil oleks olemas plaan olukordade lahendamiseks, kus administraatori privaatvõtmed lekivad.
  • ETH / WETH käitlemine: Lepingud sisaldavad sageli konkreetset loogikat ETH käsitlemiseks. Näiteks kui msg.value > 0, võib leping teisendada ETH WETH-ks, võimaldades samal ajal WETH-i otse vastu võtta. Kui kasutaja määrab valuutaks WETH-i, kuid saadab koos kõnega ETH-i, võib see teatud invariante rikkuda ja viia ebaõige käitumiseni.

Siiani oleme arutanud likviidsuspanuse protokolle ja selliste protokollide auditeerimisjuhiseid. Lühidalt öeldes võimaldab likviidsuspanus kasutajatel teenida panustamise preemiaid likviidsust ohverdamata. Oleme välja toonud panustamise lepingute haavatavad kohad, millele audiitorid peavad tähelepanu pöörama, näiteks taganemismehhanismid, tasu loogika, LP märgi vermimise/põletamise mehhanism, ümardamisvead, panustamise kestus, väliskõned ja hinnamanipulatsiooni kontrollid. 

Soovitame audiitoritel uurida auditi spetsifikatsioonide dokumente, sobitada spetsifikatsioonid koodiga ning kontrollida tasusid ja tokenoomika valideerimist. Soovitame ka täiendavaid kontrolle, nagu massiivide loomine, struct tüüpi andmete mälu või salvestusruumi määramine ja eeskätt töötavad stsenaariumid. Need juhised on kasulikud panustamisprotokollide auditeerimiseks ja aitavad tuvastada võimalikke vigu.


11 views

Ajatempel:

Veel alates Quillhash