150 miljoonaa dollaria lukittu Ethereum-verkkoon - Kuinka suojautua

Monimutkaisuus on turvallisuuden vihollinen

Pariteetti on Rustissa kirjoitettu Ethereum-toteutus, jota johtaa Ethereumin erittäin lahjakas perustaja Gavin Wood. Toteutus tarjoaa helppokäyttöisen käyttöliittymän (multi-sig) lompakkojen luomiseen. Tätä toimintoa tukevalla monisigmenttisopimuksella todettiin haavoittuvuus 19. heinäkuuta 2017, mikä aiheutti 30 miljoonan dollarin menetyksen. 7. marraskuuta 2017 lompakkosopimukseen löydettiin toinen haavoittuvuus, joka johti 150 miljoonan dollarin lukitsemiseen Etheriin. Vaikka Ethereum ei tarjoa yksinkertaista ratkaisua korkeatasoisiin lompakkoihin, voit suorittaa muutaman askeleen estääksesi tällaisen hyökkäyksen uhreista.

Hyökkääjän jättämä virheraportti

Perinteisessä tuotanto-ohjelmistoympäristössä pystymme ottamaan koodin käyttöön julkisessa käyttöliittymässä, kuten verkkosivustossa. Jos koodi ei näytä toimivan toivottavasti, niin mitä tapahtuu? Ehkä kukaan ei huomaa, ehkä jotkut valittavat, päivän päätteeksi voimme päivittää koodin ja vähäiset haitat on ratkaistu. Kun olemme ottaneet Ethereumin maailmassa käyttöön koodin, se on olemassa ikuisesti, jotta kaikki voivat nähdä ja pelata. Ihanteellisessa maailmassa vain sinulla on pääsy tähän koodiin, blockchain-maailmassa kaikilla on pääsy siihen. Tämä tarkoittaa, että jos koodinpätkä otetaan käyttöön Ethereum-verkkoon, sitä ei useimmissa tapauksissa ole mahdollista päivittää.

Keskustelu

Jos laitamme miljoonan dollarin eetteriin älykkääseen sopimukseen ja älykkäässä sopimuksessa todetaan olevan haavoittuvuus, saattaa tapahtua muutama asia. Se voi jäädä huomaamatta, hakkeri voi huomata sen, joka päättää hyödyntää sitä, tai sopimuksen omistaja paljastaa sen ja he pystyvät perimään varat. Tässä tapauksessa sitä käytti hyväksi henkilö, joka väitti tutkivansa ”edellistä pariteettia”.

Joten miten voimme suojella itseämme?

KISS-periaate - Pidä se yksinkertaisena tyhmänä

Useimmat älykkäät sopimukset tuovat haavoittuvuuksia yrittämällä ottaa huomioon nurkkatapaukset ja optimoinnit. Ensimmäinen pariteettiheikkous johtui yrityksestä optimoida suorituksen aikana käytetty kaasumäärä. Pariteetin nykyinen haavoittuvuus johtui uusien, testaamattomien kirjasto-ominaisuuksien sisällyttämisestä siihen. Hallittavissa oleva älykäs sopimus sisältää minimimäärän toiminnallisuutta, joka tarvitaan tehtävän suorittamiseen. Koodin käyttöönotto ennenaikaisen ratkaisun optimoimiseksi lisää sopimuksen monimutkaisuutta ja vähentää siten tietoturvaa.

Yksikkötestit

Tavallisessa ohjelmistokehityksessä sekä älykkäässä sopimuskehityksessä voi olla kätevää sivuuttaa riittävät yksikkötestit. Kun koodia ei voi peruuttaa tuotannon saavuttua, vaaditaan korkeampaa huolellisuutta. Nyrkkisääntönä, että älykkäässä sopimuksessa tulisi olla riittävä yksikkötesti älykkään sopimuksen toimivuuden ja nurkkakoteloiden todentamiseksi.

Älykkäät sopimustarkastukset

Kaikille tuotannolle lähetettäville älykkäille sopimuksille on tehtävä turvallisuustarkastus. Hyvällä älykkäällä sopimusturvallisuudella on kokemusta reaalimaailman älykkäiden sopimusten rakentamisesta, monista projekteista GitHubilla, ja hän jakaa tarkistusluettelon etsimistään yleisistä heikkouksista. Varmista, että tilintarkastaja voi käydä keskustelua älykkääseen sopimukseesi liittyvistä eri hyökkäysvektoreista. Tämä ei välttämättä tunnu muodolliselta lähestymistavalta, mutta ala on kuitenkin vielä hyvin nuori ja näin se toimii tällä hetkellä.

Näiden ohjeiden noudattaminen voi auttaa vähentämään riskiä ja ahdistusta, joka liittyy älykkäiden sopimusten lähettämiseen Ethereum Mainnettiin.

Testi, auditointi, käyttöönotto.