Crypto ·Serbian / Srpski

Hakovanje DAO-a bez hakovanja koda: Kako opljačkati trezor pobedom na izborima

Napadi na protokole ne zahtevaju uvek greške u softveru. U DAO organizacijama, napadači mogu iskoristiti blic-zajmove (flash loans), apatiju glasača i važeću mehaniku izvršenja da isprazne trezore jednostavnom pobedom na izborima.

Konceptualni umetnički prikaz svetlećih digitalnih vrata trezora koja ne otključava obijena brava, već svetleća glasačka kartica ubačena u zvanični autorizacioni prorez.

U aprilu 2022. godine, Beanstalk je izgubio oko 181 milion dolara u napadu na sistem upravljanja (governance exploit).

Čudna stvar nije bila u tome da je napadač nekako zaobišao sistem dozvola ovog protokola.

Sistem dozvola je rekao: da.

Beanstalk-ov ugovor o upravljanju proverio je da li dovoljno glasačke moći podržava predlog. Napadač je privremeno stekao dovoljno glasačke moći. Prag je bio ispunjen. Predlog se izvršio.

Kod nije zaboravio da proveri autorizaciju.

Problem je bio u tome šta je sistem bio spreman da prihvati kao autorizaciju.

Upravljanje je više od samog glasanja

Lako je zamisliti DAO upravljanje kao kripto verziju izbora: vlasnici tokena raspravljaju o predlozima, glasaju i većina pobeđuje.

Ali u mnogim sistemima na samom blokčejnu (on-chain), uspešno glasanje može učiniti daleko više od samog izražavanja mišljenja. Upravljanje može promeniti parametre protokola, nadograditi ugovore, dodeliti privilegovane uloge, iskovati nove tokene ili premestiti imovinu trezora.

To čini upravljanje delom bezbednosnog perimetra.

Glasački token nije doslovno lozinka, ali ekonomski se može ponašati kao akreditiv za pristup. Dovoljno glasačke moći može dodeliti autoritet da se protokolu naredi šta sledeće da uradi.

A kada je autoritet predstavljen prenosivom finansijskom imovinom, pojavljuje se novo bezbednosno pitanje:

Koliko je skupo steći dovoljno autoriteta?

Blic-zajam (Flash Loan) vam daje kapital, a ne autoritet

Ovde blic-zajmovi (flash loans) ulaze u priču.

Blic-zajam omogućava nekome da pozajmi veliku količinu kriptovaluta bez uobičajenog kolaterala, pod uslovom da se sredstva vrate u okviru iste atomske transakcije. Ako se zajam ne može vratiti do kraja transakcije, čitava transakcija se poništava.

To može zvučati gotovo natprirodno: pozajmiti stotine miliona, iskoristiti ih, vratiti ih i završiti bez dugoročnog duga.

Ali sam po sebi, blic-zajam ne može preuzeti DAO.

Privremeni novac postaje privremena politička moć samo ako sistem upravljanja to dozvoli.

Dobro dizajniran sistem glasanja može pitati:

Koliko glasačke moći je ova adresa imala pre nego što je predlog počeo?

Ranjivi sistem može efektivno pitati:

Koliko glasačke moći ova adresa ima upravo sada?

Ta razlika može biti ogromna.

Beanstalk: Pozajmljivanje dvotrećinske većine

Beanstalk je tu razliku učinio bolno vidljivom.

Pre napada 17. aprila 2022. godine, napadač je pripremio predloge upravljanja i pustio da prođe zahtevani period čekanja protokola. Zatim je, u jednoj transakciji, napadač pozajmio više od 1 milijarde dolara u imovini iz DeFi izvora likvidnosti i konvertovao ta privremena sredstva u pozicije koje generišu glasačku moć Beanstalk-a, poznatu kao Stalk [1].

Ta privremena pozicija dala je napadaču više od dvotrećinske većine koju je zahtevala Beanstalk-ova staza za vanredno upravljanje.

Napadač je zatim iskoristio taj autoritet da izvrši zlonamerni predlog kroz sopstvenu mašineriju upravljanja protokola.

Nakon što je predlog prebacio imovinu protokola, privremene pozicije su rasformirane i blic-zajmovi su vraćeni — sve u okviru iste atomske transakcije.

Bezbednosne analize su procenile širi gubitak protokola na oko 181–182 miliona dolara, dok je Beanstalk opisao oko 77 miliona dolara imovine korisnika koji nisu bili deo Beanstalk-a kao ukradenu. To su različiti brojevi koji mere različite delove štete.

Važna poenta nije tačan ukupan iznos.

Važna je staza autorizacije:

pozajmi kapital
      ↓
konvertuj kapital u glasačku moć
      ↓
pređi prag upravljanja
      ↓
autorizuj predlog
      ↓
izvrši
      ↓
vrati pozajmljeni kapital

Napadač nije morao da drži trajni kontrolni udeo u Beanstalk-u.

Za jednu transakciju, privremeni kapital je bio dovoljan da postane privremeni autoritet.

Nedostajuća bezbednosna funkcija bila je vreme

Beanstalk otkriva nešto kontra-intuitivno u vezi sa bezbednošću:

odlaganje može biti zaštita.

Sistemi upravljanja ne moraju samo da pitaju koliko glasova podržava predlog. Oni takođe moraju da pitaju kada su ti glasovi stečeni i koliko dugo sistem treba da čeka pre nego što postupi po njima.

Moderni okviri za upravljanje stoga koriste mehanizme kao što su istorijski snimci glasanja (snapshots) i vremenska zaključavanja izvršenja (timelocks) [2].

Snapshot može meriti glasačku moć u ranijem bloku, a ne u trenutku kada neko glasa. Pozajmljivanje tokena i njihovo vraćanje u okviru iste transakcije tada ne kreira čarobno istorijsku glasačku moć.

Timelock rešava drugačiji problem. Čak i nakon što predlog prođe, izvršenje čeka.

To odlaganje daje korisnicima, delegatima, bezbednosnim timovima i čuvarima protokola vreme da primete šta je odobreno i reaguju pre nego što komanda postane ireverzibilna.

U običnom softveru, odlaganje često deluje kao trenje.

U upravljanju, trenje može biti bezbednosna funkcija.

Build Finance: Bez potrebe za zajmom od milijardu dolara

Beanstalk bi mogao učiniti da napadi na upravljanje zvuče kao egzotični finansijski inženjering.

Build Finance je prikazao mnogo jednostavniju verziju.

U februaru 2022. godine, napadač je akumulirao dovoljno BUILD tokena upravljanja da predloži davanje kontrole nad važnim delovima protokola samom sebi [3].

Prvi pokušaj je primećen i poražen.

Napadač je zatim premestio tokene na drugi novčanik i pokušao ponovo. Prema izveštajima zasnovanim na sopstvenom uvidu projekta, drugi predlog nije objavio uobičajeni bot za obaveštenja zajednice na Discord-u i naišao je na daleko manji otpor.

Prošao je.

Kada je predlog upravljanja dodelio napadaču kontrolu nad infrastrukturom za kovanje i upravljanje, napadač je kreirao nove BUILD tokene, prodao ih u dostupnu likvidnost, pristupio imovini trezora i izazvao gubitke od oko 470.000 dolara.

Nijedan ogromni blic-zajam nije bio potreban.

Protokol je imao autoritet dostupan za preuzimanje, a pojavilo se premalo efektivnog otpora pre nego što je taj autoritet promenio vlasnika.

Koliko je odluka zapravo decentralizovana?

Ovde brojanje vlasnika tokena može postati zavaravajuće.

Jedan DAO može imati hiljade novčanika koji drže njegov token upravljanja i da i dalje ima moć donošenja odluka koncentrisanu u vrlo malo ruku.

Feichtinger i kolege su proučavali 21 on-chain sistem upravljanja i otkrili da je u njih 17 manje od deset vlasnika tokena ili delegata bilo dovoljno da kontroliše više od polovine relevantne glasačke moći [4].

To ne znači da je svaki od tih DAO-a bio zlonamerno kontrolisan.

To znači da važna metrika upravljanja nije jednostavno:

Koliko vlasnika postoji?

Već:

Koliko je nezavisnih aktera potrebno da se odredi ishod?

To mogu biti veoma različiti brojevi.

Tada glasovi dobijaju cenu

Postoji još jedna posledica pretvaranja upravljanja u tokenizovanu imovinu.

Ako glasanje određuje kuda novac teče, sama glasačka moć postaje ekonomski vredna.

Curve-ov sistem merenja (gauge system) učinio je ovo posebno vidljivim. Vlasnici glasačke moći povezane sa upravljanjem mogu uticati na to gde se usmeravaju emisije tokena, a platforme poput Votium-a su se pojavile da koordiniraju podsticaje oko tih glasova [5].

Ovo nije isto što i neprijateljsko preuzimanje trezora.

Sistem je eksplicitno dizajniran da omogući ekonomskim akterima da se takmiče za uticaj na upravljanje.

Ali to čini širu poentu neobično jasnom:

moć upravljanja ima tržišnu cenu.

Čim glas kontroliše novčane tokove, protokoli mogu izračunati koliko taj glas vredi. Drugi akteri mogu uraditi to isto.

Koliko košta postati DAO?

Ovo menja način na koji bezbednost upravljanja treba zamisliti.

Važno pitanje nije samo da li napadač može pronaći grešku u kodu.

To je takođe da li je sticanje kontrole ekonomski praktično.

Konceptualno, trošak zavisi od nekoliko stvari:

koliko je glasačkog autoriteta potrebno
      ×
koliko je taj autoritet skup za sticanje
      ×
koliko dugo se mora držati
      +
rizik da vas neko primeti i zaustavi

To nije doslovna jednačina. To je način da se sagleda napadačka površina.

Protokol postaje teže preuzeti kada glasačka moć mora postojati pre predloga, kada autoritet mora ostati posvećen tokom vremena, kada opasne akcije čekaju iza timelock-a i kada se očigledno neprijateljski predlozi mogu otkazati ili obuzdati pre izvršenja.

Drugim rečima, bezbednost DAO-a ima ekonomsku dimenziju.

Protokol mora učiniti neprijateljski autoritet dovoljno skupim za sticanje i dovoljno sporim za otkrivanje.

Više trenja može značiti više bezbednosti

Očigledan odgovor bi mogao biti: naterajte sve da glasaju o svemu.

To ne skala baš najbolje.

Upravljanje zahteva pažnju, stručnost, koordinaciju i vreme. Mali vlasnici mogu racionalno odlučiti da istraživanje svake promene parametara nije vredno truda.

Tako zreli sistemi upravljanja često dodaju strukture koje zvuče manje čisto decentralizovano:

  • delegate koji se specijalizuju za upravljanje;
  • pragove predloga koji sprečavaju trivijalni spam;
  • istorijske snimke glasanja (snapshots);
  • timelock-ove pre izvršenja;
  • čuvare ili veća sa strogo ograničenim ovlašćenjima za vanredne situacije;
  • prozore za veto kod očigledno opasnih promena.

Svaki od tih mehanizama uvodi trenje ili poverenje negde u sistemu.

To stvara pravu dizajnersku tenziju.

Uklonite previše kočnica i neprijateljski autoritet se može kretati brže nego što zajednica može da reaguje.

Dodajte previše čuvara i specijalnih dozvola, i sistem počinje da izgleda manje autonomno.

Ne postoji postavka čistoće koja čini da taj kompromis nestane.

Pravo da se kodu naredi šta da uradi

Pametni ugovor je veoma dobar u odgovaranju na mehanička pitanja.

Da li je ovaj predlog dostigao zahtevani prag?

Da li se period glasanja završio?

Da li je timelock istekao?

Ono što ne može utvrditi sam po sebi jeste da li je predstavljena glasačka moć odražavala široki konsenzus, jednog dominantnog vlasnika, delegiranu koncentraciju ili privremeno okupljeni kapital.

To su osobine sistema upravljanja oko ugovora.

Zato je bezbedan kod samo deo bezbednosti DAO-a.

Trezor može biti zaštićen besprekornim proverama dozvola.

Ali neko i dalje mora da odluči kome je dozvoljeno da ih ispuni.

Ponekad se ne hakuje sam kod. Ono što se hakuje jeste pravo da se kodu naredi šta da uradi.

References

  1. Beanstalk Farms. (2022). Beanstalk Governance Exploit Incident Report..
  2. OpenZeppelin. (2024). Governor and Timelock Security Architecture Documentation..
  3. Build Finance Community. (2022). Build Finance DAO Hostile Takeover Post-Mortem..
  4. Feichtinger, R., et al. (2023). The Hidden Shortcomings of (D)AOs: An Empirical Study of On-Chain Governance..
  5. Votium Protocol. (2024). Gauge Voting and Bribe Allocation Architecture..
1reads
Helpful0 Comments 0 Tipped0
Written bymirex

· 7 min read

Conversation

Comments 0

No comments yet

Start the conversation.