150 milijonov dolarjev zaklenjenih v mreži Ethereum - Kako se zaščititi

Kompleksnost je sovražnik varnosti

Parity je izvedba Ethereuma, napisana v Rustu, pod vodstvom zelo nadarjenega soustanovitelja Ethereuma, Gavina Wooda. Izvedba omogoča enostavno uporabo GUI za ustvarjanje denarnic z več znaki. Za večstransko pogodbo, ki temelji na tej funkcionalnosti, je bilo 19. julija 2017 ugotovljeno ranljivost, ki je povzročila 30 milijonov dolarjev izgube. 7. novembra 2017 je bila v pogodbi o denarnici odkrita druga ranljivost, ki je povzročila zapora 150 milijonov dolarjev v Eteru. Medtem ko Ethereum ne ponuja preproste rešitve za denarnice z visoko varnostjo, je nekaj korakov, da preprečite, da postanete žrtev takega napada.

Poročilo o napaki, ki ga je vložil

V tradicionalnem proizvodnem programskem okolju lahko kodo postavimo v javni vmesnik, kot je spletno mesto. Če se zdi, da koda ne nosi funkcionalnosti, za katero upamo, da je, kaj se zgodi? Morda nihče ne opazi, mogoče se nekaj ljudi pritožuje, na koncu dneva lahko posodobimo kodo in manjša nadloga se odpravi. V svetu Ethereuma, ko enkrat postavimo delček kode, je to za vedno, da ga lahko vsi vidijo in igrajo. V idealnem svetu imate dostop samo do te kode, v svetu blockchaina pa imajo vsi dostop do nje. To pomeni, da če je del kode nameščen v mrežo Ethereum, ga v večini primerov ni mogoče posodobiti.

Pogovor z

Če v pametno pogodbo vložimo milijon dolarjev v Ether in če ugotovi, da pametna pogodba vsebuje ranljivost, se lahko zgodi nekaj. To lahko ostane neopaženo, opazil ga bo heker, ki se bo odločil, da ga bo izkoristil, ali ga bo lastnik pogodbe odkril in sredstva mu bo uspelo povrniti. V tem primeru ga je izkoristil posameznik, ki je trdil, da je "raziskal" prejšnji krak paritete.

Kako se torej zaščititi?

Načelo KISS - Naj bo preprosto neumno

Večina pametnih pogodb uvede ranljivosti tako, da poskušajo upoštevati primere in optimizacije. Prva ranljivost paritete je bila posledica poskusa optimizacije količine porabljenega plina med izvedbo. Trenutna ranljivost Parity je nastala zaradi vključitve nove, nepreverjene knjižnične funkcionalnosti. Pogodljiva pametna pogodba bo vsebovala minimalno količino funkcionalnosti, ki je potrebna za dokončanje naloge. Uvedba kode za optimizacijo prezgodnje rešitve poveča zapletenost pogodbe in s tem zmanjša varnost.

Preizkusi enot

Pri skupnem razvoju programske opreme in pametnem razvoju pogodb je lahko spregledati ustrezne preizkuse enot. Ko je koda nepreklicna, ko doseže proizvodnjo, je potrebna večja skrbnost. Vaša pametna pogodba mora praviloma vsebovati ustrezne preizkuse enot za preverjanje funkcionalnosti vaše pametne pogodbe, kot tudi primere v ustreznih primerih.

Pametne revizije pogodb

Vsaka pametna pogodba, poslana v produkcijo, mora opraviti varnostno revizijo. Dober revizor za varnost pametnih pogodb bo imel izkušnje s sestavljanjem pametnih pogodb v resničnem svetu, veliko projektov na GitHubu, in bo delil kontrolni seznam skupnih ranljivosti, ki jih iščejo. Zagotovite, da se bo revizor lahko pogovarjal o različnih vektorjih napadov, povezanih z vašo pametno pogodbo. To se morda ne zdi formalni pristop, vendar je industrija še vedno zelo mlada in tako trenutno deluje.

Upoštevanje teh smernic lahko pomaga zmanjšati tveganje in tesnobo, povezano s pošiljanjem pametnih pogodb na Ethereum Mainnet.

Preizkus, revizija, uvedba.