Dieses Dokuwiki verwendet ein von Anymorphic Webdesign erstelltes Thema.

Razlike

Slijede razlike između dviju inačica stranice.

Poveznica na ovu usporedbu

Starije izmjene na obje strane Starija izmjena
Novija izmjena
Starija izmjena
racfor_wiki:razno:sigurnosne_prijetnje_solidity [2020/01/10 01:41]
kcavar [Chapter 5]
racfor_wiki:razno:sigurnosne_prijetnje_solidity [2024/12/05 12:24] (trenutno)
Redak 3: Redak 3:
 ===== Sažetak ===== ===== Sažetak =====
  
-The fact that we could even recover data from a formatted Hard Drive is kind of amazingYou choose (or not) to delete databut it is still thereeven if it is not that easy to read.+U zadnjih nekoliko godina jedno od najpopularnijih područja globalno bila je tehnologija blockchain i kakve teme vezane uz tehnologiju blockchain, s najvećim naglaskom na kriptovalute, Bitcoin, pametne ugovore i EthereumTržišna je vrijednost ove tehnologije u vrlo kratkom vremenskom roku eksplodirala te privukla brojne ljude diljem svijeta da se počnu zanimati za ove teme i da se uključe u vezane procese - ulaganje u kriptovalute, rudarenje kriptovalutaosmišljavanje pametnih ugovorarazvoj na Ethereum platformi i slično.
  
-The purpose of this paper is to understand how data recovery worksTo do sowe explain the steps and some technics. We will go through how a sinister leading to a try for data recovery can occur. Then, we will see a method that could have been used by computer forensics experts in order to find traces. To finish, we will mention methods to definitely erase data from Hard Drives to avoid leaving traces.+S javljanjem pametnih ugovora pojavila se potreba za prilagođenim programskim jezicima koji bi olakšavali razvijanje istih u skladu sa zahtjevima tehnologije blockchain i pripadajuće platforme na kojoj se ugovor razvijaU tom je kontekstu nastao i programski jezik Solidityjedan od vodećih svjetskih jezika za pametne ugovore.
  
-The reasons for those sinisters are numerousbut human mistakes are majorly involvedPeter Gutmann proposed through his papers an explanation of how this data could still be read on Hard Drives at that time, but also some advices to securely erase data.+Ovaj će seminar kratko razraditi pitanje što je to Solidity i čemu služia koncentrirat će se na sigurnosne prijetnje unutar Solidity-jaSeminar će potaknuti pitanje zašto treba obraćati pozornost na sigurnosne prijetnje te će se detaljno razraditi tri primjera postojećih sigurnosnih prijetnji, kako se protiv njih boriti i, ukoliko je moguće, kako ih spriječiti. Predstavit će se i primjeri iz stvarnog svijeta koji kazuju kakve su efekte upravo te prijetnje imale i kakvi su napadi proizašli iz njih .
  
-This paper is some kind of a warning to all those selling Hard Drives //via //eBay that once contained personal data.+Svrha seminara je upozoriti čitatelja na sigurnosne prijetnje te ga pozvati na aktivno razmišljanje o sigurnosti za vrijeme razvijanja pametnih ugovora.
  
-Keywords: **recovery**; **data**; traces +Ključne riječi: **Solidity, sigurnost**, sigurnosne prijetnje, pametni ugovori
- +
-Uredi +
- +
-Uredi+
  
  
Redak 26: Redak 22:
 Najpopularnije primjene pametnih ugovora programiranih u Solidity-ju su implementacije glasovanja, grupnog financiranja (crowdfunding), aukcija i novčanika s više potpisa (multi-signature wallets). Najpopularnije primjene pametnih ugovora programiranih u Solidity-ju su implementacije glasovanja, grupnog financiranja (crowdfunding), aukcija i novčanika s više potpisa (multi-signature wallets).
  
-Iako je široko raširen, Solidity je još uvijek u ranoj razvojnoj fazi (trenutna najnovija verzija je 0.6.X), a to ukazuje na puno prostora za sigurnosne prijetnje. Ovaj će seminar razmotriti nekoliko zanimljiviih otkrivenih sigurnosnih propusta te službena ili potencijalna rješenja za sprječavanje istih.+Iako je široko raširen, Solidity je još uvijek u ranoj razvojnoj fazi (trenutna najnovija verzija je 0.6.1), a to ukazuje na puno prostora za sigurnosne prijetnje. Ovaj će seminar razmotriti nekoliko zanimljiviih otkrivenih sigurnosnih propusta te službena ili potencijalna rješenja za sprječavanje istih. Logo Solidity-ja vidljiv je na sljedećoj slici.
  
 {{  :racfor_wiki:blockchain:soliditylogo.png?nolink&180x74  }} {{  :racfor_wiki:blockchain:soliditylogo.png?nolink&180x74  }}
  
  
-===== Napad: Višestruki ulazak (Re-Entrancy) =====+===== Višestruki ulazak (Re-Entrancy) =====
  
 Za razumijevanje ovog napada, potrebno se upoznati s pojmom fallback funkcije. Fallback funkcija je funkcija koja se izvršava kada neki ugovor primi ethere bez ikakvih drugih podataka povezanih s tom transakcijom. Također, izvršavaju se kad identifikator funkcije ne odgovara niti jednoj funkciji dostupnoj u pametnom ugovoru ili kada nikakvi podatci nisu dani pri pozivu funkcije. Fallback funkcije nemaju ime, ne mogu primati argumente, ne mogu vraćati ništa te u jednom ugovoru postoji najviše jedna fallback funkcija. Za razumijevanje ovog napada, potrebno se upoznati s pojmom fallback funkcije. Fallback funkcija je funkcija koja se izvršava kada neki ugovor primi ethere bez ikakvih drugih podataka povezanih s tom transakcijom. Također, izvršavaju se kad identifikator funkcije ne odgovara niti jednoj funkciji dostupnoj u pametnom ugovoru ili kada nikakvi podatci nisu dani pri pozivu funkcije. Fallback funkcije nemaju ime, ne mogu primati argumente, ne mogu vraćati ništa te u jednom ugovoru postoji najviše jedna fallback funkcija.
  
-Ovaj je napad omogućen kada pametni ugovor šalje ethere na nepoznatu adresu pozivom odgovarajuće funkcije nepoznate adrese / primatelja. Napadač pažljivom konstrukcijom svog ugovora na toj nepoznatoj adresi može umetnuti zlonamjerni kod koji će se pokretati pri slanju sredstava na tu nepoznatu adresu. Točnije, u ovom napadu, taj će zlonamjerni kod ponovno pozvati funkciju napadnutog ugovora prije nego što se prošla iteracija ugovora izvršila do kraja te na taj način iskoristiti ranjivi ugovor.+Ovaj je napad omogućen kada pametni ugovor šalje sredstva (Ethere, Wei-je ili neku drugu kriptovalutu) na nepoznatu adresu pozivom odgovarajuće funkcije nepoznate adrese / primatelja. Napadač pažljivom konstrukcijom svog ugovora na toj nepoznatoj adresi može umetnuti zlonamjerni kod koji će se pokretati pri slanju sredstava na tu nepoznatu adresu. Točnije, u ovom napadu, taj će zlonamjerni kod ponovno pozvati funkciju napadnutog ugovora prije nego što se prošla iteracija ugovora izvršila do kraja te na taj način iskoristiti ranjivi ugovor.
  
-Pogledajmo primjer.+Na sljedećim slikama nalazi se primjer. U primjeru su dva pametna ugovora - napadnuti ugovor EtherStore te ugovor napadača Attack. Detaljna objašnjenja nalaze se ispod slika.
  
 {{:racfor_wiki:blockchain:reentry_victim.png?nolink&700x450|Napadnuti ugovor}} {{:racfor_wiki:blockchain:reentry_victim.png?nolink&700x450|Napadnuti ugovor}}
Redak 45: Redak 41:
 U ovom primjeru EtherStore je napadnuti ugovor, a Attack je ugovor napadač.Originalna željena funkcionalnost ugovora EtherStore je da pohranjuje riječnik stanja računa svojih klijenata. Neki klijent može pohraniti određenu količinu valute (wei-ja) koji će se dodati na njegovo stanje računa, te može podizati wei-je sa svog računa. Naravno, u metodi za podizanje novaca, pametni ugovor EtherStore provjerava je li iznos koji se pokušava podići manji od stanja računa klijenta (naravno, nije moguće podići više sredstava nego što postoji na računu) te postoji ograničenje da svaki klijent može podići sredstva maksimalno jednom u tjedan dana. Ova su ograničenja vidljiva u linijama 14 i 16 pametnog ugovora EtherStore. U liniji 17, EtherStore šalje sredstva klijentu te u linijama 18 i 19 osvježava stanje računa i vremensku oznaku zadnjeg podizanja novca. U ovom primjeru EtherStore je napadnuti ugovor, a Attack je ugovor napadač.Originalna željena funkcionalnost ugovora EtherStore je da pohranjuje riječnik stanja računa svojih klijenata. Neki klijent može pohraniti određenu količinu valute (wei-ja) koji će se dodati na njegovo stanje računa, te može podizati wei-je sa svog računa. Naravno, u metodi za podizanje novaca, pametni ugovor EtherStore provjerava je li iznos koji se pokušava podići manji od stanja računa klijenta (naravno, nije moguće podići više sredstava nego što postoji na računu) te postoji ograničenje da svaki klijent može podići sredstva maksimalno jednom u tjedan dana. Ova su ograničenja vidljiva u linijama 14 i 16 pametnog ugovora EtherStore. U liniji 17, EtherStore šalje sredstva klijentu te u linijama 18 i 19 osvježava stanje računa i vremensku oznaku zadnjeg podizanja novca.
  
-Pogledajmo sada napadača. Napadač prvo pohranjuje određena sredstva (1 wei) na svoj račun u EtherStore, a zatim pokreće funkciju za podizanje tih sredstava - također 1 wei. Zahtjev za podizanje sredstava uspješno prolazi sve provjere te se u liniji 17 ugovora EtherStore sredstva (1 wei) šalju napadaču. Upravo ovdje događa se sigurnosni propust. Linija 17 zapravo pokreće fallback funkciju ugovora Attack, a u fallback funkciji nalazi se zloćudni kod. Taj kod ponovno poziva funkciju EtherStore-a za podizanje sredstava (ponovno jednog wei-a). Problem je u činjenici što su sredstva prethodnog poziva već na računu napadača, a novi poziv funkcije withrawFunds kreće se izvršavati prije nego što je prethodni poziv stigao osvježiti potrebne varijable stanja na računu i vremenske oznake podizanja novca. Tu zapravo ulazimo u petlju koja, wei po wei, potpuno prazni ukupan račun ugovora EtherStore, uz uspješne provjere svih varijabli u svakom pozivu.+Napadač prvo pohranjuje određena sredstva (1 wei) na svoj račun u EtherStore, a zatim pokreće funkciju za podizanje tih sredstava - također 1 wei. Zahtjev za podizanje sredstava uspješno prolazi sve provjere te se u liniji 17 ugovora EtherStore sredstva (1 wei) šalju napadaču. Upravo ovdje događa se sigurnosni propust. Linija 17 zapravo pokreće fallback funkciju ugovora Attack, a u fallback funkciji nalazi se zloćudni kod. Taj kod ponovno poziva funkciju EtherStore-a za podizanje sredstava (ponovno jednog wei-a). Problem je u činjenici što su sredstva prethodnog poziva već na računu napadača, a novi poziv funkcije withrawFunds kreće se izvršavati prije nego što je prethodni poziv stigao osvježiti potrebne varijable stanja na računu i vremenske oznake podizanja novca. Tu zapravo ulazimo u petlju koja, wei po wei, potpuno prazni ukupan račun ugovora EtherStore, uz uspješne provjere svih varijabli u svakom pozivu.
  
-Ovo je jedan od većih i važnijih sigurnosnih prijetnji koje treba imati na umu pri dizajniranju pametnih ugovora. Ovakvo neželjeno ponašanje može se spriječiti na više načina. Jedno od rješenja je korištenje funkcije transfer() pri slanju sredstava vanjskim ugovorima. Funkcija transfer sa svojim pozivom šalje dovoljno gas-a (platne jedinice za izvršavanje funkcija) da bi se sredstva poslala, ali nedovoljno da bi vanjski ugovor izveo operaciju poput zvanja nekog drugog ugovora - to automatski sprječava ponovno pozivanje napadnutog ugovora. Još jedno rješenje je koristiti "checks-effects-interactions" slijed događaja pri dizajniranju funkcija pametnih ugovora. Ova metoda predlaže da se u svakoj funkciji prvo naprave provjere i zadovolje uvjeti da bi se funkcionalnost ugovora izvršila, zatim da se osvježe sve varijable (kao da je akcija već izvršena), a tek se na kraju akcija stvarno izvrši. Na taj način spriječili smo ovakav napad jer već u drugom pozivu ugovora, uvjeti neće biti zadovoljeni.+Ovo je jedan od većih i važnijih sigurnosnih prijetnji koje treba imati na umu pri dizajniranju pametnih ugovora. Ovakvo neželjeno ponašanje može se spriječiti na više načina. Jedno od rješenja je korištenje funkcije transfer() pri slanju sredstava vanjskim ugovorima. Funkcija transfer sa svojim pozivom šalje dovoljno gas-a (platne jedinice za izvršavanje funkcija) da bi se sredstva poslala, ali nedovoljno da bi vanjski ugovor izveo operaciju poput zvanja nekog drugog ugovora - to automatski sprječava ponovno pozivanje napadnutog ugovora. Još jedno rješenje je koristiti "checks-effects-interactions" slijed događaja pri dizajniranju funkcija pametnih ugovora. Ova metoda predlaže da se u svakoj funkciji prvo naprave provjere i zadovolje uvjeti da bi se funkcionalnost ugovora izvršila, zatim da se osvježe sve varijable (kao da je akcija već izvršena), a tek se na kraju akcija stvarno izvrši. Na taj način sprječava se ovakav napad jer već u drugom pozivu ugovora, uvjeti neće biti zadovoljeni.
  
 Najpoznatiji napad ove vrste je napad na The DAO organizaciju (Decentralized autonomous organization). U tom trenutku, njihov pametni ugovor držao je na sebi više od 150 milijuna dolara. Ovakvim napadom napadač je uspio trećinu svih sredstava prebaciti na vanjski račun. Kako bi ispravili grešku, Ethereum zajednica odlučila se na kontroverzno rješenje - napraviti granu na Ethereum blockchainu i virtualno vratiti sva sredstva na originalni ugovor. Kao posljedica, dan danas postoje dva službena Ethereum blockchaina - Ethereum i Ethereum Classic (na Ethereum classic još se vidi posljedica napada). Najpoznatiji napad ove vrste je napad na The DAO organizaciju (Decentralized autonomous organization). U tom trenutku, njihov pametni ugovor držao je na sebi više od 150 milijuna dolara. Ovakvim napadom napadač je uspio trećinu svih sredstava prebaciti na vanjski račun. Kako bi ispravili grešku, Ethereum zajednica odlučila se na kontroverzno rješenje - napraviti granu na Ethereum blockchainu i virtualno vratiti sva sredstva na originalni ugovor. Kao posljedica, dan danas postoje dva službena Ethereum blockchaina - Ethereum i Ethereum Classic (na Ethereum classic još se vidi posljedica napada).
Redak 56: Redak 52:
 Ovaj se napad bazira na postojanju overflowa i underflowa. Overflow i underflow javljaju se kao posljedica načina na koji računalo zapisuje brojeve u memoriju. Za zapis svakog tipa podatka rezerviran je određen broj bitova u memoriji. Primjerice za tip podatka uint8 rezervirano je 8 bitova te je posljedično u taj tip podatka moguće zapisati samo brojeve u rasponu [0,255]. Kada bi u varijabli tipa uint8 bio zapisan broj 255 i kada bismo mu pribrojili 1, umjesto 256 u varijabli bi bila zapisana vrijednost 0. Analogno, kada bismo varijabli sa vrijednošću 0 pokušali oduzeti 1, dobili bismo 255, a ne -1. Ova je pojava dovela do nekih ozbiljnih sigurnosnih prijetnji u razvoju pametnih ugovora. Ovaj se napad bazira na postojanju overflowa i underflowa. Overflow i underflow javljaju se kao posljedica načina na koji računalo zapisuje brojeve u memoriju. Za zapis svakog tipa podatka rezerviran je određen broj bitova u memoriji. Primjerice za tip podatka uint8 rezervirano je 8 bitova te je posljedično u taj tip podatka moguće zapisati samo brojeve u rasponu [0,255]. Kada bi u varijabli tipa uint8 bio zapisan broj 255 i kada bismo mu pribrojili 1, umjesto 256 u varijabli bi bila zapisana vrijednost 0. Analogno, kada bismo varijabli sa vrijednošću 0 pokušali oduzeti 1, dobili bismo 255, a ne -1. Ova je pojava dovela do nekih ozbiljnih sigurnosnih prijetnji u razvoju pametnih ugovora.
  
-Pogledajmo primjere.+Na sljedećoj slici nalazi se primjer objašnjen u tekstu ispod slike.
  
 {{:racfor_wiki:blockchain:overflow-timelock.png?nolink&700x479}} {{:racfor_wiki:blockchain:overflow-timelock.png?nolink&700x479}}
Redak 62: Redak 58:
 Zamišljena funkcionalnost prikazanog pametnog ugovora TimeLock je pohrana novca te mogućnost podizanja uz minimalnu vremensku odgodu od jednog tjedna. Uporabom funkcije increaseLockTime, klijent može proizvoljno povećati željeno vrijeme na koje će sredstva biti zaključana. Upravo je u toj funkciji sigurnosna prijetnja - poznavanjem činjenice da varijabla tipa uint može sadržavati brojeve zapisane maksimalno sa 256 bitova te poznavanjem trenutnog vremena na koje su sredstva zaključana, vrlo je lako izračunati potreban broj sekundi koji treba pribrojiti da bi se dogodio overflow te da bi se sredstva otključala upravo sada. Zamišljena funkcionalnost prikazanog pametnog ugovora TimeLock je pohrana novca te mogućnost podizanja uz minimalnu vremensku odgodu od jednog tjedna. Uporabom funkcije increaseLockTime, klijent može proizvoljno povećati željeno vrijeme na koje će sredstva biti zaključana. Upravo je u toj funkciji sigurnosna prijetnja - poznavanjem činjenice da varijabla tipa uint može sadržavati brojeve zapisane maksimalno sa 256 bitova te poznavanjem trenutnog vremena na koje su sredstva zaključana, vrlo je lako izračunati potreban broj sekundi koji treba pribrojiti da bi se dogodio overflow te da bi se sredstva otključala upravo sada.
  
-Sličan bi problem nastao kada bismo recimo s računa na kojem je dostupno 100 wei-ja uspješno skinuli 101 wei. U tom slučaju dogodio bi se underflow i odjednom bi stanje računa napadača postalo izuzetno veliko.+Sličan bi problem nastao kada bi se primjerice s računa na kojem je dostupno 100 wei-ja uspješno skinuo 101 wei. U tom slučaju dogodio bi se underflow i odjednom bi stanje računa napadača postalo izuzetno veliko.
  
 Trenutno rješenje za sprječavanje ovakvih napada je korištenje (ili razvoj) matematičkih paketa koji bi zamijenili standardne matematičke operacije te koji bi provjerama sprječavali pojavu overflowa i underflowa. Primjer takve knjižnice je Safe Math Library kojeg razvija OppenZeppelin. Trenutno rješenje za sprječavanje ovakvih napada je korištenje (ili razvoj) matematičkih paketa koji bi zamijenili standardne matematičke operacije te koji bi provjerama sprječavali pojavu overflowa i underflowa. Primjer takve knjižnice je Safe Math Library kojeg razvija OppenZeppelin.
  
-Primjer ovog napada u stvarnom svijetu je konstrukcija ponzijeve sheme na Ethereumu (PoWHC - Proof of Weak Hands Coin), čiji su kreatori zaboravili na problem overflowa i underflowa te posljedično izgubili 866 ethera sa pametnog ugovora.+Primjer ovog napada u stvarnom svijetu je konstrukcija ponzijeve sheme na Ethereumu (PoWHC - Proof of Weak Hands Coin), čiji su kreatori zaboravili na problem overflowa i underflowa te posljedično izgubili 866 Ethera sa pametnog ugovora.
  
  
Redak 81: Redak 77:
 Svrha ovog ugovora je dodijeliti nagradu sretnim dobitnicima - korisnicima sa adresom čijih su zadnjih 8 hex znakova nule. Ukoliko se provjera uspješno izvrši, poziva se funkcija _sendWinnings koja šalje pobjedniku novčanu nagradu. Problem je u tome što je autor ugovora HashForEther zaboravio specificirati vidljivost funkcije _sendWinnings na privatnu te bilo tko može jednostavno pozvati izravno tu funkciju i dobiti novčanu nagradu. Svrha ovog ugovora je dodijeliti nagradu sretnim dobitnicima - korisnicima sa adresom čijih su zadnjih 8 hex znakova nule. Ukoliko se provjera uspješno izvrši, poziva se funkcija _sendWinnings koja šalje pobjedniku novčanu nagradu. Problem je u tome što je autor ugovora HashForEther zaboravio specificirati vidljivost funkcije _sendWinnings na privatnu te bilo tko može jednostavno pozvati izravno tu funkciju i dobiti novčanu nagradu.
  
-Kako bi se izbjegla ova neugodnost, dobra je praksa uvijek specificirati vidljivost svim funkcijama, čak i javnim funkcijama, kako bismo uvijek razmislili koja funkcija treba imati kakvu vidljivost i rjeđe nailazili na ovakav problem+Kako bi se izbjegla ova neugodnost, dobra je praksa uvijek specificirati vidljivost svim funkcijama, čak i javnim funkcijama, kako bi programer uvijek razmislio koja funkcija treba imati kakvu vidljivost i rjeđe nailazio na ovakav problem.
  
 Primjer iz stvarnog svijeta je napadač koji je uočio ovakav propust u Parity multi-signature novčaniku na Ethereum platformi te iskoristivši tu ranjivost prebacio vrtoglavih 31 milijun dolara vrijednosti u Etheru na svoj račun u samo nekoliko minuta. Da napad nije vrlo brzo uočen i da je napadač imao još nekoliko sati, uspio bi otići sa 180 milijuna dolara vrijednosti sa svih ranjivih novčanika na mreži. Napad je spriječen tako da je grupa dobroćudnih hakera, uočivši napad, brzo analizirala isti te su brzom reakcijom sami hakirali preostale novčanike s navedenom ranjivošću i sami ukrali preostalih 150 milijuna dolara prije nego što je to uspio učiniti napadač. Nakon reorganizacije ranjivog koda i uklanjanja sigurnosne prijetnje, dobroćudni su napadači vratili ukradene iznose prethodnim vlasnicima. Nažalost, preostalih 31 milijun dolara nije se mogao vratiti prvobitnim vlasnicima. Primjer iz stvarnog svijeta je napadač koji je uočio ovakav propust u Parity multi-signature novčaniku na Ethereum platformi te iskoristivši tu ranjivost prebacio vrtoglavih 31 milijun dolara vrijednosti u Etheru na svoj račun u samo nekoliko minuta. Da napad nije vrlo brzo uočen i da je napadač imao još nekoliko sati, uspio bi otići sa 180 milijuna dolara vrijednosti sa svih ranjivih novčanika na mreži. Napad je spriječen tako da je grupa dobroćudnih hakera, uočivši napad, brzo analizirala isti te su brzom reakcijom sami hakirali preostale novčanike s navedenom ranjivošću i sami ukrali preostalih 150 milijuna dolara prije nego što je to uspio učiniti napadač. Nakon reorganizacije ranjivog koda i uklanjanja sigurnosne prijetnje, dobroćudni su napadači vratili ukradene iznose prethodnim vlasnicima. Nažalost, preostalih 31 milijun dolara nije se mogao vratiti prvobitnim vlasnicima.
Redak 88: Redak 84:
  
  
-===== Chapter 4 =====+===== Zaključak =====
  
-Uredi+Ovaj je seminar razradio samo tri sigurnosne prijetnje, međutim postoji mnoštvo drugih raznih sigurnosnih prijetnji u programskom jeziku Solidity. Neke su prijetnje već nađene te već postoje rješenja i preporučene dobre prakse kako bi se te probleme spriječilo, a mnogi problemi tek čekaju da budu nađeni i iskorišteni. Pogotovo s obzirom na činjenicu da je i ova tehnologija relativno mlada, a pogotovo programski jezik Solidity. Puno govori i već spomenuta činjenica da Solidity još uvijek nije dočekao službenu verziju 1, nego je trenutna zadnja verzija 0.6.1.
  
-Uredi+Unatoč nekolicini sigurnosnih prijetnji, Solidity je popularan programski jezik u blockchain svijetu i svijetu pametnih ugovora te je donio puno više dobroga nego što je narušeno napadima. Kao i u svakoj tehnologiji, korisnik mora biti upoznat sa potencijanim opasnostima, truditi se razvijati ugovore u skladu s najboljim praksama te voditi računa da uvijek radimo u najnovijoj verziji Solidity-ja (pogotovo u ovoj ranoj fazi), jer je velika vjerojatnost da svaka nova verzija zakrpava neke postojeće nađene sigurnosne propuste.
  
  
Redak 108: Redak 104:
  
 [[https://blog.sigmaprime.io/solidity-security.html|https://blog.sigmaprime.io/solidity-security.html]] [[https://blog.sigmaprime.io/solidity-security.html|https://blog.sigmaprime.io/solidity-security.html]]
 +
 +[[http://hackingdistributed.com/2016/06/18/analysis-of-the-dao-exploit/|http://hackingdistributed.com/2016/06/18/analysis-of-the-dao-exploit/]]
 +
 +[[https://en.wikipedia.org/wiki/Ethereum_Classic|https://en.wikipedia.org/wiki/Ethereum_Classic]]
 +
 +[[https://en.wikipedia.org/wiki/The_DAO_(organization)|https://en.wikipedia.org/wiki/The_DAO_(organization)]]
 +
 +[[https://solidity.readthedocs.io/en/latest/contracts.html?highlight=library#visibility-and-getters|https://solidity.readthedocs.io/en/latest/contracts.html?highlight=library#visibility-and-getters]]
 +
 +[[https://www.freecodecamp.org/news/a-hacker-stole-31m-of-ether-how-it-happened-and-what-it-means-for-ethereum-9e5dc29e33ce/|https://www.freecodecamp.org/news/a-hacker-stole-31m-of-ether-how-it-happened-and-what-it-means-for-ethereum-9e5dc29e33ce/]]
  
 [[https://github.com/sigp/solidity-security-blog|https://github.com/sigp/solidity-security-blog]] [[https://github.com/sigp/solidity-security-blog|https://github.com/sigp/solidity-security-blog]]
  
  
racfor_wiki/razno/sigurnosne_prijetnje_solidity.1578620495.txt.gz · Zadnja izmjena: 2024/12/05 12:23 (vanjsko uređivanje)
Dieses Dokuwiki verwendet ein von Anymorphic Webdesign erstelltes Thema.
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0