Meer dan 1,2 miljoen etherische applicaties hebben een weinig bekende beveiligingshulpmiddel gebruikt om de kostbare fouten te voorkomen die het gevolg zijn van zelfuitvoerende regels met code die bekend staan als slimme contracten.
Gelanceerd door ethereum technologie startup Amberdata in oktober, de gratis tool is beschikbaar voor iedereen in het grote publiek om de veiligheid van actieve applicaties op de ethereum blockchain te interpreteren. Slimme contracten met bugs die zijn uitgebuit hebben geleid tot enorme verliezen, zelfs voor honderden miljoenen.
De geautomatiseerde service scant op veelvoorkomende kwetsbaarheden die worden aangetroffen in slimme contractcode en genereert een letterclassificatie (bijvoorbeeld A, B of C) voor de beveiliging van een gedecentraliseerde toepassing (dapp).
De functie is een van de vele hulpmiddelen die de beste werkwijzen stimuleren en de transparantie vergroten tussen dapp-ontwikkelaars en eindgebruikers in het etherische ecosysteem.
Bovendien is het een functie die al geruime tijd bestaat in de bredere webruimte. Browser met privacybewustzijn DuckDuckGo heeft onlangs een Chrome-browserextensie gelanceerd die wordt gebruikt om websites (geen daps) met een letterrang te waarderen, zodat gebruikers eenvoudig kunnen zien hoe goed of slecht servicebeheerders de privacy van gebruikers beschermen.
“Onze visie is om de standaard van vertrouwen online te verhogen”, schrijft DuckDuckGo in een blogbericht vanaf januari 2017.
Op dezelfde manier is de visie achter Amberdata’s tool voor het beoordelen van de veiligheid, zoals Shawn Douglass in een persbericht onderlijnde door Amberdata CEO, om ‘een betere toegang tot en een betere zichtbaarheid van slimme contracten’ te bieden.
Hij voegde toe:
“We hopen dat we door deze hulpprogramma’s aan de community te leveren, de afhankelijkheden van buitenaf kunnen verkleinen en de gemeenschap in staat stellen om sneller en veiliger te ontwikkelen.”
De beoordelingen
Maar hoe worden deze toepassingen op ethereum precies beoordeeld op Amberdata?
Verwijzend naar 13 soorten kwetsbaarheden die automatisch door het programma werden gescand, vergeleek Amberdata CTO Joanes Espanol elk van deze met “motorverlichting op een dashboard van een auto”.
“Het betekent alleen dat ik moet controleren wat er met de auto aan de hand is. Elk van deze kan resulteren in een beveiligingsfout, “verklaarde Espanol aan CoinDesk.
En hoe meer beveiligingsfouten die door de beveiligingsscan van Amberdata worden gedetecteerd, hoe lager het alfabetletterniveau dat een dapp ontvangt. Deze scores variëren van een A + helemaal tot een F.
Maar ze zijn niet strikt afhankelijk van het aantal beveiligingsfouten. Elk van de 13 kwetsbaarheden heeft verschillende gradaties, legt Espanol uit, die van invloed zijn op het eindcijfer van een dapp. Twee veelvoorkomende kwetsbaarheden met een lage ernst die worden gemarkeerd door Espanol, omvatten “oproep door gedelegeerde naar een door de gebruiker opgegeven adres” en “oproep naar extern contract”.
Dit laatste kan een potentieel beveiligingsrisico vormen als een dapp, in plaats van op zichzelf te staan in een slim contract, aanvullende contracten met buggy-code aanroept.
Evenzo is een gedelegeerde oproep een andere bewerking die normaal wordt gebruikt om slimme contractcode op te splitsen in meerdere subcontracten, zodat eventuele noodzakelijke upgrades van de software stuk voor stuk kunnen worden gemaakt zonder de hele applicatie te beëindigen.
“Dat is het goede deel van die gedelegeerde oproepen. Maar het slechte is dat ik nu als eigenaar van het contract slechte dingen zou kunnen doen. Ik zou dus contracten kunnen gaan vervangen die het gedrag van de originele [applicatie] veranderen “, legt Espanol uit.
Als zodanig heeft Espanol in beide gevallen beschreven dat de beveiligingsaudit “waarschuwingen” uitzendt in plaats van directe codefouten aan te geven.
Inderdaad, een dergelijke dapp die momenteel gebruik maakt van een berichtenoproep en die eerder een slimme contractupgrade had geïmplementeerd met gebruik van de terugroepactie van gedelegeerd bedrijf in januari, is TrueUSD. Gemaakt door blockchain startup TrustToken, de USD-gesteunde stablecoin op ethereum is momenteel gerangschikt met een C-letter cijfer.
Hoewel dat niet goed klinkt, kijkend naar de kwetsbaarheden die zijn gemarkeerd voor TrueUSD, vertelde TrustToken beveiligingsingenieur William Morriss aan CoinDesk in een vorig interview, alle geïdentificeerde zorgen waren eigenlijk niet “kritisch”.
“De kwetsbaarheden die worden gemeld zijn geen manieren waarop we kunnen worden aangevallen … We zijn ons ervan bewust en wanneer mensen kwetsbaarheden bij ons brengen, behandelen we ze heel serieus”, zei Morriss.
Morriss ging uitgebreid in op de kwestie van berichtoproepen en voegde daaraan toe dat voor TrueUSD alle externe contracten eigendom zijn van en beheerd worden door de bedrijven zelf, in tegenstelling tot derden met mogelijk lagere beveiligingsnormen.
Hoe een A + te krijgen
Fouten met een “hoge” ernst raken de beveiligingsbeoordeling van de applicatie moeilijker omdat ze een groter potentieel voor codefout en misbruik aangeven.
Een van de meest voorkomende hiervan, ‘integer overflow’, geeft aan dat bewerkingen die worden uitgevoerd binnen een slim contract, waarden kunnen genereren die de codebeperkingen overschrijden, wat leidt tot gekke, onvoorspelbare gedragingen die in het slechtste geval tot verlies van middelen kunnen leiden.
De keerzijde is ‘integer underflow’, een andere kwetsbaarheid van ‘hoge’ ernst, waardoor exact omgekeerd kan gebeuren en een waarde onder het gedefinieerde bereik op vergelijkbare wijze foutieve uitvoer veroorzaakt.
Er zijn ook enkele eigenschappen in Solidity die dapp-ontwikkelaars gewoon moeten vermijden, volgens het waarderingssysteem van Amberdata, waaronder “suicide ()” en “tx.origin.” Dit laatste wordt door Espanol omschreven als “verouderde code” die uit de database kan worden verwijderd. Soliditeitstaal helemaal op een toekomstige datum, terwijl het eerste het risico inhoudt gekaapt te worden door externe partijen om gebruikersfondsen te bevriezen – dat ze nooit meer terug kunnen komen.
Omdat het geen van deze vier kwetsbaarheden heeft, heeft de beruchte populaire ethereum-dapp CryptoKitties momenteel een A + -beveiligingsbeoordeling op Amberdata. De softwaretechnicus van CryptoKitties, Fabiano Soriani, schrijft dit toe aan “zo veel mogelijk tests uitvoeren”.
Het toevoegen van die “passieve bronnen”, zoals geschreven documentatie en videozelfstudies over dapp-ontwikkeling, is niet voldoende om veilige applicaties op ether te bouwen, vertelde Soriani aan CoinDesk:
“Wanneer iemand een audit uitvoert, wijzen ze dingen voor je aan. Het is een zeer goede aanvullende bron [voor passieve bronnen] omdat ontwikkelaars met een meer traditionele achtergrond niet bekend zijn met blockchain. “
‘Het is een nieuwe reeks problemen’
Inderdaad, als het gaat om het bouwen van doppen, kan het belang van een luchtdichte, ondoordringbare code niet worden onderschat. De kernredenering daarvoor is tweeledig.
Ten eerste zijn dapps, in tegenstelling tot traditionele applicaties, over het algemeen open-source computerprogramma’s en zoals Morriss uitlegt, is “een verhoogde mate van voorzichtigheid” vereist wanneer code wordt uitgevoerd die “openbaar” is.
“Als er een bug in een traditionele applicatie zit, kun je er misschien enkele jaren mee wegkomen … maar als je een bug in je slimme contract hebt, zullen mensen het snel vinden en profiteren van je vernietiging of in hun voordeel, “zei Morriss.
Ten tweede draaien dapps op ethereum uitsluitend op slimme contracten. Speciaal gecodeerd in programmeertaal Solidity en uitgevoerd in het zenuwcentrum van de blockchain, de Ethereum Virtual Machine (EVM), een belangrijke kracht van dapps is dat ze niet kunnen worden gewijzigd.Het nadeel hiervan is duidelijk. Programmeurs kunnen fouten of bugs in de software niet gemakkelijk corrigeren als ze eenmaal op de blockchain zijn geïmplementeerd.
“Morriss zei tegen CoinDesk dat het een” ernstige fout “was om een beveiligingsaudit van derden of een scan om deze redenen over te slaan. Het was belangrijk voor ontwikkelaars om niet het slachtoffer te worden van hun eigen” overmoed “en ervoor te zorgen dat” testen elke tak van uw code.”
“Met ethereum is het een nieuwe reeks problemen waarvan mensen zich niet bewust zijn wanneer ze coderen in Solidity”, benadrukte Espanol bij CoinDesk.