Decoupling Reentrancy Protection from Smart Contract Implementation Logic
Dit artikel introduceert Sentinel, een nieuw proxy-gebaseerd raamwerk dat reentrancy-bescherming ontkoppelt van slimme contractlogica om 100% dekking te bereiken tegen grote reentrancy-aanvallen, inclusief read-only varianten, door calls te onderscheppen op het proxy-niveau met een tweeledig beveiligingssysteem.
Oorspronkelijk artikel gelicentieerd onder CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dit is een AI-gegenereerde uitleg van het onderstaande artikel. Het is niet geschreven of goedgekeurd door de auteurs. Raadpleeg het oorspronkelijke artikel voor technische nauwkeurigheid. Lees de volledige disclaimer
Stel je de wereld van blockchain voor als een drukke, hoog-risico bank waar iedereen zijn eigen regels kan schrijven voor hoe geld beweegt. Deze regels worden Slimme Contracten genoemd. Hoewel ze krachtig zijn, hebben ze een bekende zwakheid die Re-entrancy (herintreding) wordt genoemd.
Het Probleem: De "Dubbel-boek" Overval
Om het probleem te begrijpen, stel je een bankbediende (het Slimme Contract) voor die de volgende stappen moet uitvoeren:
- Je saldo controleren.
- Je het geld geven.
- Daarna het grootboek updaten om aan te tonen dat je nul dollar over hebt.
In een normale wereld is dit veilig. Maar in de blockchain-wereld is de "bediende" een robot die onderbroken kan worden. Een slimme dief (de aanval) kan de bediende oproepen om geld op te nemen. Voordat de bediende stap 3 afrondt (het updaten van het grootboek), belt de robot van de dief de bediende opnieuw om meer geld op te nemen.
Omdat het grootboek nog niet is bijgewerkt, denkt de bediende nog steeds dat de dief het volledige bedrag heeft. De dief kan deze lus tientallen keren herhalen in één seconde, waardoor de bankkluis leeg wordt geplunderd voordat de bediende beseft dat er iets mis is. Dit is een Re-entrancy-aanval.
De Oude Oplossingen: Het "Niet Storen"-bord
Voorheen probeerden ontwikkelaars dit op te lossen door een "Niet Storen"-bord (een slot) op het bureau van de bediende te plakken.
- De Tekortkoming: Deze borden waren vaak vastgeplakt aan specifieke bureaus (specifieke functies). Als een dief een achterdeur (een andere functie) vond waar geen bord hing, kon hij nog steeds binnenkomen.
- De Beperking: Als de bank meerdere filialen (meerdere contracten) had die met elkaar spraken, hield een bord op het ene filiaal een dief niet tegen om tussen de filialen te rennen om het systeem in de war te sturen.
- Het Blinde Vlekje: Deze borden blokkeerden ook legitieme "alleen-kijken"-verzoeken (zoals het controleren van het saldo zonder te besteden), waardoor de bank traag en onhandig werd.
De Nieuwe Oplossing: Sentinel (De Slimme Portier)
De auteurs van dit artikel, Shashank Joshi en Wojciech Golab, stellen een nieuw systeem voor dat Sentinel heet. In plaats van te proberen het bureau van de bediende te repareren, bouwen ze een Slimme Portier (een Proxy) die bij de ingang van de bank staat.
Hier is hoe Sentinel werkt, met eenvoudige analogieën:
1. De Portier onderschept iedereen
Ongeacht wie de bank probeert binnen te komen of wat ze willen doen, ze moeten eerst langs de Sentinel-Portier. De Portier geeft niets om de complexe regels binnen de bank; hij focust zich alleen op veiligheid. Dit betekent dat de interne regels van de bank (de bedrijfslogica) niet herschreven hoeven te worden om veilig te zijn.
2. Twee Bedrijfsmodi
De Portier heeft twee verschillende uniformen, of "modi", afhankelijk van hoe risicovol de situatie is:
Geoptimaliseerde Modus (De Eén-Bureau Guard):
Als de bank klein is en slechts één filiaal heeft, gebruikt de Portier een simpele, snelle vergrendeling op de deur. Het is goedkoop en snel. Als iemand probeert terug te sluipen terwijl de deur vergrendeld is, wordt hij direct geweigerd. Dit is geweldig voor eenvoudige situaties met één enkel contract.Hoge Veiligheidsmodus (Het Globale Veiligheidsnetwerk):
Als de bank deel uitmaakt van een enorm netwerk van filialen, verbindt de Portier zich met een Centraal Veiligheidscentrum (een LockRegistry).- Stel je voor dat de Portier het Centraal Centrum belt: "Is Filiaal A momenteel bezig?"
- Als het Centrum zegt "Ja", blokkeert de Portier de toegang.
- Dit voorkomt dat dieven tussen verschillende filialen rennen om het systeem te bedriegen. Het coördineert de veiligheid over het hele netwerk, niet alleen in één kamer.
3. De "Alleen-Kijken"-Uitzondering
Een lastig ding aan blockchain is dat mensen soms alleen het saldo willen bekijken zonder te besteden (een staticcall genoemd).
- Oude sloten zouden deze kijkers blokkeren, wat vertraging veroorzaakte.
- Sentinel is slim genoeg om te detecteren of iemand alleen "kijkt". Als dat zo is, laat de Portier ze door het raam gluren zonder de deur op slot te doen, maar hij houdt ze wel nauwlettend in de gaten om ervoor te zorgen dat ze niet proberen via de achterdeur binnen te sluipen terwijl ze kijken.
Waarom Dit Belangrijk Is
De auteurs hebben Sentinel getest tegen 70 verschillende slimme contracten die bekend stonden als kwetsbaar voor deze aanvallen.
- Het Resultaat: Sentinel stopte 100% van de aanvallen, inclusief de lastige die tussen verschillende contracten plaatsvonden of "alleen-kijken"-trucs gebruikten.
- Vergelijking: De oude standaardtools (zoals de guard van OpenZeppelin) stopten slechts ongeveer 73% van de aanvallen. Ze faalden bij de complexe, contractoverschrijdende overvallen.
- Kosten: De "Portier" kost een beetje extra energie (gas) om te draaien, maar de auteurs zeggen dat dit een kleine prijs is om diefstal van miljoenen dollars te voorkomen.
De Conclusie
Dit artikel introduceert een manier om de veiligheid van een slim contract te scheiden van zijn bedrijfslogica. Door een slimme, aanpasbare "Portier" voor het contract te plaatsen, kunnen ze dieven ervan weerhouden de timinggaten in het systeem te exploiteren, ongeacht hoe complex de interne regels van het contract zijn. Het is een verschuiving van het proberen om elk mogelijk gat in de muur te repareren naar het bouwen van een ondoordringbare poort.
Verdrinkt u in papers in uw vakgebied?
Ontvang dagelijkse digests van de nieuwste papers die bij uw onderzoekswoorden passen — met technische samenvattingen, in uw taal.