Wat is een governance attack in crypto en hoe kunnen protocollen zich beschermen?

Wat is een governance attack in crypto?
Een governance attack is een aanval waarbij iemand de besluitvorming van een DAO of protocol gebruikt of overneemt om een (meestal) schadelijke actie uit te voeren. Een DAO is een organisatie die via regels in smart contracts en stemmen van deelnemers besluiten neemt.
Bij veel protocollen bepalen tokens hoeveel stemrecht je hebt. Wie genoeg stemmacht verzamelt, kan bijvoorbeeld voorstellen om instellingen te veranderen, nieuwe functies toe te voegen, de logica van een contract te upgraden of geld uit een treasury te verplaatsen. Een treasury is simpel gezegd de gezamenlijke pot met middelen van een protocol.
Niet elke governance attack komt door een programmeerfout. Soms volgt een aanvaller formeel gewoon de regels, maar verzamelt diegene genoeg invloed om een voorstel door te drukken dat schadelijk is voor andere gebruikers. Dat noem je governance capture: de besluitvorming is dan in de praktijk in handen van één partij of kleine groep gekomen.
Een mogelijke truc hierbij is een flash loan. Dat is een lening die binnen dezelfde blockchaintransactie moet worden terugbetaald. Als een protocol stemgewicht baseert op het actuele aantal tokens in een wallet, zonder wachttijd of historische momentopname, kan een aanvaller tijdelijk veel stemmacht krijgen.
Voorbeeld: Stel dat een protocol één token gelijkstelt aan één stem. Iemand leent tijdelijk heel veel tokens, stemt voor een voorstel om geld uit de treasury te verplaatsen en betaalt de lening meteen terug. Als het systeem die tijdelijke tokens meetelt, kan dat genoeg zijn om de stemming te beïnvloeden.
Korte samenvatting
- Een governance attack misbruikt de besluitvorming van een DAO of protocol voor een schadelijke actie.
- Bij tokengewogen governance bepaalt het aantal tokens vaak hoeveel stemrecht iemand heeft.
- Een aanval kan een technische fout gebruiken, maar kan ook plaatsvinden binnen de bestaande regels.
- Flash loans kunnen tijdelijk veel stemmacht opleveren als een protocol actuele saldo's gebruikt.
- Voorstellen kunnen onder meer instellingen aanpassen, contracten upgraden of treasury-activa verplaatsen.
Hoe werkt een governance attack?
Een governance attack werkt meestal doordat een aanvaller eerst genoeg effectieve stemmacht verzamelt, daarna een schadelijk voorstel laat goedkeuren en het vervolgens uitvoert. Hoe dat precies gaat, hangt af van de regels van het protocol.
Stemgewicht kan bijvoorbeeld komen uit tokens die je bezit, stemmen die anderen aan je delegeren, gestakete tokens of LP-posities. Een LP-positie is je aandeel in een liquidity pool. Het cruciale punt is: op welk moment legt het protocol vast hoeveel stemrecht je hebt?
Vaak ziet een aanval er ongeveer zo uit:
-
Stemrecht verzamelen De aanvaller koopt tokens, verzamelt delegaties, gebruikt al bestaande grote stemmacht of leent tijdelijk tokens via een flash loan.
-
Een voorstel indienen Het voorstel bevat een of meer acties die smart contracts moeten uitvoeren. Dat kunnen bijvoorbeeld wijzigingen aan instellingen zijn, maar ook een upgrade of een overboeking uit de treasury.
-
De stemming winnen Het voorstel moet genoeg stemmen én het vereiste quorum halen. Een quorum is de minimale hoeveelheid deelname die nodig is voordat een stemming geldig is.
-
De actie uitvoeren Na een geslaagde stemming voert governance de geplande transacties uit. Zonder vertraging kan dat meteen gebeuren. Met een timelock moet de actie eerst wachten.
Een historische snapshot helpt tegen bepaalde flash-loan-aanvallen. Zo'n snapshot is eigenlijk een foto van de stemrechten op een eerder, vast moment. Een voting delay, dus een wachttijd voordat stemmen meetellen, werkt alleen goed als tijdelijk geleende tokens niet al op die snapshot staan.
Beanstalk laat zien hoe groot de impact kan zijn. Op 17 april 2022 werd het protocol via on-chain governance aangevallen. De aanvaller gebruikte een flash loan om het toenmalige governance-mechanisme te compromitteren en activa uit de DAO weg te nemen.
Een snapshot is trouwens geen volledige oplossing. Heeft een aanvaller de tokens al vóór het gekozen moment gekocht of onder controle, dan telt die stemmacht gewoon mee.
Welke gevolgen kan een governance attack hebben?
Een governance attack kan ervoor zorgen dat een aanvaller geld, rechten of belangrijke instellingen van een protocol in handen krijgt. Hoe ernstig dat is, hangt helemaal af van wat governance daadwerkelijk mág doen.
Governance kan bij sommige protocollen onder meer systeeminstellingen aanpassen, nieuwe markten of functies toevoegen en onderdelen van het protocol upgraden. Als governance ook belangrijke proxies, configuratieonderdelen of treasury-contracten controleert, kan een kwaadaardig voorstel veel schade aanrichten.
Mogelijke gevolgen zijn onder andere:
- verlies van treasury- of gebruikersactiva;
- ongewenst minten van nieuwe tokens;
- gewijzigde instellingen die gebruikers benadelen;
- aangepaste beheerdersrechten;
- een upgrade naar schadelijke contractlogica;
- het tijdelijk of volledig stilleggen van functies.
Bij de aanval op Beanstalk werden op 17 april 2022 alle niet-BEAN-gebruikersactiva gestolen, ter waarde van ongeveer 77 miljoen dollar. Daarna werd het protocol gepauzeerd, werd on-chain governance verwijderd en veranderde de governance-opzet.
De schade is vaak groter dan alleen het directe verlies. Een protocol kan moeten migreren naar nieuwe contracten, audits en herstelwerk betalen en tijdelijk meer noodcontrole bij een kleine groep leggen. Dat kan het vertrouwen van gebruikers flink raken.
Hoe kan een protocol controle verliezen?
Een protocol verliest feitelijk controle zodra een aanvaller genoeg rechten heeft over de contracten die kritieke acties uitvoeren. Denk aan de eigenaar van een proxy, een account dat upgrades mag uitvoeren, een rol die voorstellen bij een timelock mag inplannen of de controller van de treasury.
Een proxy is hier simpel gezegd een vast contractadres dat naar een bepaalde versie van de contractlogica verwijst. Bij een upgradebaar protocol kan governance dat adres naar nieuwe logica laten wijzen. Zo kan één goedgekeurd voorstel de werking van het protocol ingrijpend veranderen.
Daarvoor hoeft een aanvaller niet altijd de meerderheid van alle tokenhouders te hebben. Bij lage opkomst, een laag quorum of sterk geconcentreerde delegaties kan een relatief kleine groep al voldoende effectieve stemmacht hebben.
Na een schadelijke uitvoering kan herstel extra lastig worden. De aanvaller kan bevoegdheden veranderen, activa wegsturen of zelfs de toekomstige governance-regels aanpassen. Dan is het mogelijk dat de gemeenschap niet meer via dezelfde route kan ingrijpen, of pas veel later.
Controleverlies kan ook zonder aanval gebeuren. Als de bevoegde accounts van een zelfbestuurde timelock niet meer beschikbaar zijn, kan een contract dat door die timelock wordt beheerd voor onbepaalde tijd vastlopen.
Hoe kunnen crypto- en DeFi-protocollen zich beschermen?
Crypto- en DeFi-protocollen kunnen het risico verkleinen door stemmacht, bevoegdheden en uitvoering niet te makkelijk op één moment samen te laten komen. Er is geen magische instelling die elke aanval stopt, maar meerdere lagen samen maken misbruik lastiger.
Belangrijke maatregelen zijn:
-
Gebruik snapshots en een voting delay Leg stemgewicht vast op een eerder moment en bouw een wachttijd in. Daardoor is het moeilijker om vlak voor een stemming tijdelijk tokens te regelen en direct te gebruiken.
-
Kies passende stemdrempels Een voorstelminimum maakt goedkope spamvoorstellen lastiger. Een quorum voorkomt dat een heel kleine opkomst alleen beslist. De afweging blijft lastig: te lage drempels maken capture eenvoudiger, te hoge drempels kunnen governance onwerkbaar maken.
-
Zet gevoelige acties achter een timelock Upgrades, grote parameterwijzigingen en treasury-acties hoeven niet direct na een stemming plaats te vinden. Een timelock geeft gebruikers tijd om een geplande actie te bekijken en eventueel hun positie te sluiten.
-
Beperk rechten per rol Geef governance niet automatisch onbeperkte macht. Vooral rechten voor upgrades, minting en onbeperkte externe calls verdienen extra beperkingen. Noodrechten moeten duidelijk afgebakend zijn.
-
Test de echte voorstelacties Het is niet genoeg om alleen de stemmodule te controleren. Teams moeten ook de exacte transacties achter een voorstel testen en simuleren. Een voorstel kan er op hoofdlijnen onschuldig uitzien, terwijl de concrete calls iets heel anders doen.
-
Houd voorstellen en stemmacht in de gaten Monitoring voorkomt een aanval niet vanzelf, maar kan wel zorgen dat een verdacht voorstel of een grote verschuiving in delegaties op tijd opvalt. Een vooraf afgesproken incidentplan helpt dan om sneller te reageren.
Audits blijven nuttig, maar zijn geen garantie. Niet elke governance attack zit in een fout in de code. Ook misleidende voorstellen, lage deelname en slecht beoordeelde transacties kunnen tot problemen leiden.
Hoe kunnen timelocks en multisig-governance helpen?
Timelocks en multisigs kunnen een extra veiligheidslaag vormen, omdat ze voorkomen dat één goedgekeurd of gecompromitteerd account meteen alles kan uitvoeren.
Een timelockcontroller dwingt een minimale wachttijd af tussen het inplannen en uitvoeren van een belangrijke actie. Is de timelock de beheerder van een contract, dan geldt die vertraging ook voor acties die anders direct met beheerdersrechten zouden kunnen gebeuren.
Dat reactievenster is belangrijk. Gebruikers en beveiligingsonderzoekers kunnen de exacte transactiedata bekijken voordat de wijziging live gaat. Bij een gevaarlijk voorstel kunnen gebruikers bijvoorbeeld hun positie sluiten voordat de actie wordt uitgevoerd. De timelock maakt een schadelijke actie niet automatisch ongeldig, maar haalt wel de snelheid uit een zichtbare aanval.
Compound v2 gebruikt bijvoorbeeld meerdere fases: twee dagen review, drie dagen stemmen en daarna twee dagen timelock. Daardoor duurt een protocolwijziging daar minimaal één week.
Een multisig werkt anders. Daarbij moeten meerdere eigenaren een transactie bevestigen. Bij een 3-uit-5-multisig zijn drie geldige handtekeningen nodig. Eén gestolen of gecompromitteerde sleutel is dan niet genoeg om zelfstandig geld te verplaatsen of instellingen te wijzigen.
Een multisig kan bijvoorbeeld de enige partij zijn die acties bij een timelock mag inplannen. Zo moet eerst een groep ondertekenaars akkoord gaan, waarna de ingestelde wachttijd begint.
Wel belangrijk om te weten: een multisig verplaatst vertrouwen naar de ondertekenaars. Als genoeg signers samenspannen, als te veel sleutels worden gestolen of als signers niet bereikbaar zijn, ontstaan er alsnog problemen. Ook extra modules of extensies verdienen aandacht, omdat die onder omstandigheden transacties buiten de normale handtekeningcontrole kunnen uitvoeren.
Wat zijn de beperkingen van governance in crypto?
Governance in crypto kan besluiten transparant en automatisch uitvoeren, maar het systeem weet niet vanzelf of een voorstel ook verstandig of eerlijk is. Een geldige on-chain stemming bewijst alleen dat de regels zijn gevolgd.
Bij tokengewogen governance hangt invloed samen met economisch gewicht. Grote houders, fondsen en bekende delegates kunnen daardoor veel meer invloed hebben dan kleine deelnemers, ook zonder aanval of fout in de code. Delegatie maakt stemmen makkelijker, maar kan macht juist bij een kleine groep concentreren.
Ook snelheid en veiligheid botsen soms. Langere stemperiodes en timelocks geven meer tijd om voorstellen goed te beoordelen en te reageren. Tegelijk vertragen ze nuttige upgrades, aanpassingen en soms ook een reactie op een incident.
Quorums en voorstelminima hebben dezelfde afruil. Zijn ze te laag, dan kan een kleine maar goed georganiseerde groep besluiten nemen. Zijn ze te hoog, dan kunnen gewone voorstellen vastlopen omdat te weinig mensen stemmen.
Een ander probleem is complexiteit. De exacte calldata van een voorstel, een upgrade van contractlogica of de wisselwerking tussen meerdere smart contracts is voor veel stemmers lastig te beoordelen. Daardoor kan een voorstel procedureel kloppen, terwijl weinig mensen echt begrijpen wat er gebeurt.
Een multisig of guardian kan het risico van een snelle aanval verlagen, maar voegt ook centralisatie- en beschikbaarheidsrisico toe. Een guardian is een account of groep met bijzondere noodrechten. Als zo'n partij kwaadwillend handelt, niet bereikbaar is of transacties blokkeert, kan die beveiligingslaag zelf een zwak punt worden.
Governance is dus geen instelling die je één keer goed zet en daarna vergeet. De verdeling van tokens, delegaties, rechten, prikkels, voorstelcontrole en noodprocedures moeten regelmatig opnieuw worden bekeken.
Conclusie
Een governance attack draait niet alleen om hackers die een technische fout vinden. Ook een partij die volgens de regels genoeg stemmacht verzamelt, kan een protocol in de problemen brengen als governance te veel rechten heeft of voorstellen te snel uitvoert.
Goede bescherming bestaat uit meerdere lagen: snapshots, een voting delay, passende drempels, beperkte bevoegdheden, controle van voorstelacties en monitoring. Timelocks en multisigs kunnen daarbij extra tijd en controle toevoegen. Uiteindelijk blijft de belangrijkste vraag simpel: wie kan wat veranderen, en hoeveel tijd heeft de rest om dat te zien en te reageren?