De mentaliteit van slimme contractbeveiliging

blog 1NieuwsOntwikkelaarsEnterpriseBlockchain ExplainedEvenementen en conferentiesPersNieuwsbrieven

Abonneer op onze nieuwsbrief.

E-mailadres

Wij respecteren uw privacy

HomeBlogBlockchain-ontwikkeling

De mentaliteit van slimme contractbeveiliging

5 beveiligingsprincipes die elke Ethereum-ontwikkelaar moet kennen, plus fundamentele afwegingen. door ConsenSys17 juni 2020Geplaatst op 17 juni 2020

Blockchain-beveiliging

Door ConsenSys Diligence, ons team van blockchain-beveiligingsexperts.

Hoewel de industrie volwassen wordt, is slimme contractontwikkeling nog steeds een relatief nieuw en volwassen gebied. Daarom moet u constante veranderingen in het beveiligingslandschap verwachten, naarmate nieuwe bugs en beveiligingsrisico’s worden ontdekt en nieuwe best practices worden ontwikkeld. Leren en volgen beste praktijken is slechts het begin van het beveiligingswerk dat u als slimme contractontwikkelaar moet doen.

Slimme contractprogrammering vereist een andere technische mentaliteit dan u misschien gewend bent. De kosten van mislukking kunnen hoog zijn en verandering kan moeilijk zijn, waardoor het in sommige opzichten meer lijkt op hardwareprogrammering of programmering van financiële diensten dan op web- of mobiele ontwikkeling. Het is daarom niet voldoende om je te verdedigen tegen bekende kwetsbaarheden. In plaats daarvan zul je een nieuwe ontwikkelingsfilosofie moeten leren.

Bereid je voor op mislukking

Elk niet-triviaal contract bevat fouten. Uw code moet daarom netjes kunnen reageren op bugs en kwetsbaarheden.

  • Onderbreek het contract als er iets mis gaat (“stroomonderbreker”).
  • Beheer de hoeveelheid geld die risico loopt (snelheidsbeperking, maximaal gebruik).
  • Zorg voor een effectief upgradepad voor bugfixes en verbeteringen.

Zorgvuldig uitrollen

Het is altijd beter om bugs op te sporen voor een volledige productierelease.

  • Test contracten grondig en voeg tests toe wanneer nieuwe aanvalsvectoren worden ontdekt.
  • Voorzien bug premies vanaf alpha testnet releases.
  • Uitrol in fasen, met toenemend gebruik en testen in elke fase.

Houd contracten eenvoudig

Complexiteit vergroot de kans op fouten.


  • Zorg ervoor dat de contractlogica eenvoudig is.
  • Modulariseer code om contracten en functies klein te houden.
  • Gebruik waar mogelijk al geschreven tools of code (rol bijvoorbeeld niet uw eigen generator voor willekeurige getallen).
  • Geef de voorkeur aan duidelijkheid boven prestaties waar mogelijk.
  • Gebruik de blockchain alleen voor de onderdelen van uw systeem die gedecentraliseerd moeten worden.

Blijf op de hoogte

Blijf op de hoogte van nieuwe beveiligingsontwikkelingen.

  • Controleer uw contracten op nieuwe bugs zodra deze wordt ontdekt.
  • Upgrade zo snel mogelijk naar de nieuwste versie van een tool of bibliotheek.
  • Pas nieuwe beveiligingstechnieken toe die nuttig lijken.

Wees u bewust van de eigenaardigheden van de EVM

Hoewel veel van uw programmeerervaring relevant zal zijn voor Ethereum-programmering, zijn er enkele valkuilen waar u op moet letten.

  • Wees uiterst voorzichtig met externe contractoproepen, die schadelijke code kunnen uitvoeren en de controlestroom kunnen wijzigen.
  • Begrijp dat uw openbare functies openbaar zijn en kwaadwillig en in willekeurige volgorde kunnen worden aangeroepen. De privégegevens in slimme contracten kunnen ook door iedereen worden bekeken.
  • Houd rekening met de gaskosten en de blokkeergaslimiet.
  • Houd er rekening mee dat tijdstempels onnauwkeurig zijn op een blockchain: mijnwerkers kunnen het tijdstip van uitvoering van een transactie binnen een marge van enkele seconden beïnvloeden.
  • Willekeurigheid is niet triviaal op blockchain, de meeste benaderingen voor het genereren van willekeurige getallen zijn gokbaar op een blockchain.

Fundamentele afwegingen

Er zijn meerdere fundamentele afwegingen waarmee u rekening moet houden bij het beoordelen van de structuur en beveiliging van een slim contractsysteem. De algemene aanbeveling voor elk slim contractsysteem is om de juiste balans te vinden voor deze fundamentele afwegingen.

Een ideaal slim contractsysteem vanuit een software-engineeringvooroordeel is modulair, hergebruikt code in plaats van deze te dupliceren en ondersteunt upgradebare componenten. Een ideaal slim contractsysteem vanuit een veilige architectuurvoorkeur kan deze mentaliteit delen, vooral in het geval van complexere slimme contractsystemen.

Er zijn echter belangrijke uitzonderingen waarbij best practices op het gebied van beveiliging en software-engineering mogelijk niet op elkaar zijn afgestemd. In elk geval wordt de juiste balans verkregen door de optimale mix van eigenschappen te identificeren langs contractsysteemdimensies zoals:

  • Stijf versus uitbreidbaar
  • Monolithisch vs. modulair
  • Duplicatie versus hergebruik
Stijf versus uitbreidbaar

Hoewel meerdere bronnen, waaronder deze, de kenmerken van maakbaarheid benadrukken, zoals patronen die kunnen worden gedood, opgewaardeerd of gewijzigd, is er een fundamentele afweging tussen maakbaarheid en veiligheid..

Vervormbaarheidspatronen voegen per definitie complexiteit en potentiële aanvalsoppervlakken toe. Eenvoud is met name effectief boven complexiteit in gevallen waarin het slimme contractsysteem een ​​zeer beperkte set functionaliteit uitvoert voor een vooraf gedefinieerde beperkte periode, bijvoorbeeld een bestuursvrij token-verkoopcontractsysteem met een eindig tijdsbestek..

Monolithisch vs. modulair

Een monolithisch op zichzelf staand contract houdt alle kennis lokaal identificeerbaar en leesbaar. Hoewel er weinig slimme contractsystemen zijn die hoog in aanzien staan ​​en als monolieten bestaan, is er een argument voor een extreme lokaliteit van gegevens en stromen, bijvoorbeeld in het geval van het optimaliseren van de efficiëntie van codebeoordeling.

Net als bij de andere afwegingen die hier worden overwogen, neigen best practices op het gebied van beveiliging af van best practices op het gebied van software engineering in eenvoudige kortlopende contracten en een trend naar best practices op het gebied van software engineering in het geval van complexere systemen voor eeuwigdurende contracten..

Duplicatie versus hergebruik

Een slim contractsysteem vanuit een software-engineeringperspectief wil hergebruik maximaliseren waar dat redelijk is. Er zijn veel manieren om contractcode in Solidity te hergebruiken. Het gebruik van bewezen, eerder geïmplementeerde contracten waarvan u de eigenaar bent, is over het algemeen de veiligste manier om hergebruik van code te bewerkstelligen.

Duplicatie wordt vaak gebruikt in gevallen waarin eerder gebruikte contracten in eigen bezit niet beschikbaar zijn. Inspanningen zoals OpenZeppelin’s Solidity Library probeer patronen te bieden zodat beveiligde code kan worden hergebruikt zonder duplicatie. Alle contractbeveiligingsanalyses moeten elke hergebruikte code bevatten die niet eerder een vertrouwensniveau heeft vastgesteld dat evenredig is met de fondsen die risico lopen in het beoogde slimme contractsysteem.

Het bouwen en lanceren van applicaties op Ethereum is tegenwoordig misschien wel de meest opwindende grens voor software-ingenieurs, maar het vereist continue modellering van bedreigingen, beveiligingsaudits en planning van incidentrespons..

Het Diligence-team is er om u te helpen waakzaam te blijven en vertrouwen op te bouwen in uw implementaties.

Boek een Blockchain Security Spot Check

Onze 1-daagse beoordelingen helpen u vanaf het begin beveiliging in uw blockchain-code in te bouwen, zodat u op de lange termijn tijd en geld kunt besparen. Boek vandaag nog BeveiligingSlimme contractenNieuwsbrief Schrijf u in op onze nieuwsbrief voor het laatste Ethereum-nieuws, bedrijfsoplossingen, bronnen voor ontwikkelaars en meer.Hoe u een succesvol blockchain-product bouwtWebinar

Hoe u een succesvol blockchain-product bouwt

Hoe u een Ethereum-knooppunt instelt en uitvoertWebinar

Hoe u een Ethereum-knooppunt instelt en uitvoert

Hoe u uw eigen Ethereum-API kunt bouwenWebinar

Hoe u uw eigen Ethereum-API kunt bouwen

Hoe u een sociaal token maaktWebinar

Hoe u een sociaal token maakt

Beveiligingshulpmiddelen gebruiken bij slimme contractontwikkelingWebinar

Beveiligingshulpmiddelen gebruiken bij slimme contractontwikkeling

De toekomst van digitale activa en defiWebinar

De toekomst van financiën: digitale activa en deFi

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me
Like this post? Please share to your friends:
Adblock
detector
map