Op 24 april tussen ongeveer 13:05 en 14:55 uur Nederlandse tijd hebben hackers een aanval uitgevoerd met als doel cryptocurrency te stelen. De website https://www.myetherwallet.com/ was slachtoffer van een Border Gateway Protocol (BGP) hijack, waardoor gebruikers van deze website terechtkwamen op een kopie van de website die gehost werd op een server in Rusland. Nietsvermoedende gebruikers die hier met hun private-key een transactie deden, zijn bestolen door de hackers. Het lijkt erop dat op deze manier 215 Ethereum (zo'n 122.000 euro) is buitgemaakt. Om te begrijpen hoe dit heeft kunnen gebeuren moeten we eigenlijk helemaal terug naar de basis. Hoe werkt het internet en hoe zorgt het ervoor dat mijn datapakketjes bij de juiste ontvanger terechtkomen?
Om op wereldwijde schaal ervoor te zorgen dat je data op de juiste plek terechtkomt, wordt het BorderGateway Protocol (BGP) gebruikt. Dit zijn eigenlijk de routers van het internet. De afzender- en ontvangstadressen zijn de IP-adressen. Het BGP-netwerk moet weten welke servers verantwoordelijk zijn voor welke IP-ranges.
BGP-hijack: hoe werkt het internet
Er zijn wereldwijd afspraken gemaakt over wie controle heeft over welke IP-ranges. Vervolgens adverteren de verantwoordelijken deze IP-ranges naar elkaar, zodat het duidelijk is naar welke server de data moet worden gestuurd. Dit is de kern van het internet wat nog stamt uit de tijd dat het een klein netwerk was waar iedereen elkaar kende, en elkaar vertrouwde. Doordat de ruggengraat van het internet nog steeds op deze manier werkt, biedt het mogelijkheden voor een hacker om te adverteren met een IP-range van een andere partij, waardoor datapakketten terechtkomen bij zo’n hacker. Desondanks is het niet eenvoudig om een dergelijke aanval uit te voeren.
Bij de eerdergenoemde hack heeft een aanvaller geadverteerd met het feit dat hij een verbinding op kan zetten naar een reeks IP-adressen die eigenlijk van Amazon zijn. Deze IP-adressen werden onder andere gebruikt als Domain Name System voor veel klanten van Amazon, waaronder www.myetherwallet.com. Om te begrijpen hoe de hackers misbruik hebben kunnen maken van deze BGP-hijack is het handig te weten hoe we van www.myetherwallet.com naar een IP-adres komen.
Wat is DNS?
Wanneer we het internet op gaan, doen we dit door middel van het opvragen van een hostname, bijvoorbeeld www.computest.nl. Omdat de communicatie op IP-basis gebeurt, moet de hostname eerst omgezet worden naar een IP-adres. Dit gebeurt door middel van het Domain Name System, of DNS. Als gebruiker vraag je aan de server welk IP-adres bij een gegeven hostname hoort. Vervolgens verbindt de gebruiker dan met het IP-adres dat door de DNS-server wordt teruggegeven.
De MyEtherWallet hack
In dit geval heeft de hacker geadverteerd dat hij de route heeft naar een IP-range van Amazon. Binnen deze range zat ook de server die www.myetherwallet.com omzet naar een IP-adres. Als een gebruiker naar www.myetherwallet.com wil, wordt hij eerst doorverwezen naar een server van Amazon om het bijbehorende IP-adres op te vragen (DNS). Omdat de hacker zegt dat deze specifieke server van Amazon is, geeft de hacker een IP-adres terug dat in zijn beheer is. Op deze manier komt de nietsvermoedende gebruiker terecht op een website van de hacker.
Op dit IP-adres had de hacker een website gehost die qua look & feel identiek is aan de echte MyEtherWallet-applicatie, waardoor het voor gebruikers niet van de echte website te onderscheiden was. Gebruikers kregen nog wel de waarschuwing in de browser dat het SSL-certificaat niet in orde was. Het SSL-certificaat was namelijk door een onbetrouwbare bron ondertekend en moderne browsers geven gebruikers hier een waarschuwing over. Ondanks deze waarschuwing was het voor gebruikers na het wegklikken van de melding wel mogelijk om toch door te gaan.
In dit geval kwam de gebruiker dus terecht op een kopie van www.myetherwallet.com, en als hij hier zijn private-key gebruikte om een transactie te doen, werd deze verstuurd naar de hacker. Hierdoor had de hacker dus volledige toegang tot de wallet van de gebruiker en kon hij alle cryptocurrency stelen.
Op welke manier had de hack voorkomen kunnen worden?
Tijdens de BGP-hijack en kort erna werd er naar MyEtherWallet gewezen als schuldige. Echter had MyEtherWallet deze hack niet kunnen voorkomen, in die zin dat de hackers geen kwetsbaarheden in de MyEtherWallet-applicatie hebben gebruikt. Het feit dat de controles op het adverteren van IP-ranges voor BGP beperkt zijn, is een belangrijke factor in deze aanval geweest. Op verschillende momenten in de keten van het adverteren van de Amazon IP-ranges, tot aan het DNS request voor het IP-adres van www.myetherwallet.com, hadden er controles uitgevoerd kunnen worden die de aanval hadden kunnen tegenhouden. Echter is dit niet standaard onderdeel van BGP, waardoor het meeste nog op basis van vertrouwen gebeurt.
Ook had de eindgebruiker zichzelf beter kunnen beschermen door aandacht te besteden aan de SSL-foutmelding die de browser geeft. Deze waarschuwingen zijn er niet voor niets, en zeker als het om (veel) geld gaat is het belangrijk dat de eindgebruiker extra voorzichtig is.
Cryptocurrency aantrekkelijk voor hackers
Hackers verzinnen steeds weer nieuwe manieren om aanvallen uit te voeren die gericht zijn op het stelen van cryptocurrency. Er gaat tegenwoordig veel geld om in deze markt en er is nauwelijks controle op, wat het een aantrekkelijk doel maakt. Het blijft daarom belangrijk dat bedrijven die zich hiermee bezighouden, veel aandacht besteden aan de kwaliteit en veiligheid van hun product. En uiteraard moeten eindgebruikers zich bewust zijn van de gevaren en goed begrijpen welke risico’s het handelen in cryptocurrency met zich meebrengt.