150 milijuna dolara zaključano na mreži Ethereuma - kako se zaštititi

Složenost je neprijatelj sigurnosti

Parity je Ethereumova implementacija napisana u Rustu, a vodio ju je vrlo talentirani suosnivač Ethereuma, Gavin Wood. Implementacija nudi jednostavan GUI za korištenje za izradu novčanika s više znakova. Utvrđeno je da je ugovor s višestrukim potpisima na kojima se temelji ova funkcionalnost ranjiv 19. srpnja 2017. što je rezultiralo gubitkom u iznosu od 30 milijuna dolara. Dana 7. studenog 2017. u ugovoru o novčaniku pronađena je druga ranjivost koja je rezultirala zaključavanjem 150 milijuna dolara u Eteru. Iako Ethereum ne nudi jednostavno rješenje za novčanike visoke sigurnosti, morate poduzeti nekoliko koraka kako biste spriječili da postanete žrtva takvog napada.

Izvještaj o bugi koji je podnio

U tradicionalnom proizvodnom okruženju softvera, možemo kôd implementirati u javno sučelje, poput web stranice. Ako se čini da kôd ne nosi funkcionalnost za koju se nadamo da se čini, što se događa? Možda nitko ne primjećuje, možda se nekoliko ljudi žali, na kraju dana možemo ažurirati kôd i manja smetnja je riješena. U svijetu Ethereuma, kad jednom uvrstimo dio koda, on je tu zauvijek, a svi ga mogu vidjeti i igrati se. U idealnom svijetu, samo vi imate pristup ovom kodu, u svijetu blockchaina svi imaju pristup njemu. To znači da ako se komad koda primijeni u mrežu Ethereuma, u većini slučajeva nije moguće ažurirati ga.

Razgovor s „napadačem“

Ako u Ether pretpostavimo pametni ugovor od milijun dolara i ako se utvrdi da pametni ugovor sadrži ranjivost, može se dogoditi nekoliko stvari. To može proći nezapaženo, može primijetiti haker koji ga odluči iskoristiti ili će ga vlasnik ugovora otkriti i moći će vratiti sredstva. U ovom slučaju iskoristila ga je osoba koja je tvrdila da je "istraživala" prethodni hack Parityja.

Pa kako se možemo zaštititi?

Načelo KISS - Neka bude jednostavno glupo

Većina pametnih ugovora uvodi ranjivosti pokušavajući uzeti u obzir kutne slučajeve i optimizacije. Prva ranjivost Pariteta nastala je zbog pokušaja optimizacije količine plina koja je korištena tijekom izvođenja. Trenutna ranjivost Parity nastala je uključivanjem nove, neprovjerene funkcionalnosti knjižnice. Pametni ugovor koji se može voditi sadržavat će minimalnu količinu funkcionalnosti koja je potrebna za dovršavanje zadatka. Uvođenjem koda za optimizaciju preuranjenog rješenja povećava se složenost ugovora i na taj način smanjuje sigurnost.

Jedinstveni testovi

U uobičajenom razvoju softvera, kao i u razvoju pametnog ugovora, može biti prividno zanemariti odgovarajuće testove jedinice. Kad se kôd ne može opozvati kada dođe do proizvodnje, potrebna je viša razina marljivosti. U pravilu, vaš pametni ugovor treba sadržavati odgovarajuće testove jedinice za provjeru funkcionalnosti vašeg pametnog ugovora, kao i početne slučajeve.

Pametne revizije ugovora

Svaki pametni ugovor koji se pošalje u proizvodnju trebao bi biti podvrgnut reviziji sigurnosti. Dobar revizor zaštite pametnih ugovora imat će iskustvo u izgradnji pametnih ugovora u stvarnom svijetu, bogatstvo projekata na GitHubu, i dijelit će kontrolni popis uobičajenih ranjivosti koje traže. Osigurajte da se revizor može uključiti u razgovor o različitim vektorima napada koji su povezani s vašim pametnim ugovorom. To se možda ne čini formalnim pristupom, no industrija je još uvijek vrlo mlada i tako trenutno funkcionira.

Slijedom ovih smjernica može se smanjiti rizik i anksioznost povezane s slanjem pametnih ugovora na Ethereum Mainnet.

Ispitivanje, revizija, raspoređivanje.