Vulnerabilitățile de securitate DAO Hack și Blockchain

Considerațiile de securitate prevalează asupra tuturor celorlalte considerații din software în general și în mod special în blockchain. Dacă securitatea eșuează, nimic altceva nu contează. Blockchain demonstrează că tranzacțiile descentralizate și fără încredere funcționează, dar multe vulnerabilități de securitate blockchain rămân totuși.

Exploatările de securitate există la nivel de proiectare și arhitectură, în etapa de codificare și în faza operațională. Și în cazul în care vă întrebați, da, blockchain-ul poate fi piratat.

Vulnerabilități de securitate Blockchain – De aici până la eternitate

Diamantele sunt pentru totdeauna, iar contractele inteligente trăiesc atâta timp cât blockchain-ul pe care sunt implementate continuă să fie utilizat. În consecință, toate erorile și vulnerabilitățile de securitate blockchain trăiesc, de asemenea, atât timp cât contractul este valabil.

De obicei, fiecare blockchain oferă propriul limbaj de programare pentru a implementa contracte inteligente. Să aruncăm o privire mai atentă.

Limbi Smart Contract

Mediile blockchain includ propriile limbi pentru dezvoltarea contractelor inteligente.

Platforma Ethereum, de exemplu, include limbajul Solidity pentru a scrie contracte inteligente. Creatorii au conceput Solidity pentru a fi un limbaj complet Turing.

Un limbaj complet Turing permite, în esență, programatorului să implementeze orice este capabil de sistemul de bază. În consecință, acest lucru oferă programatorilor abilități precum implementarea unor bucle în cod, care pot provoca vulnerabilități de securitate blockchain.

Completarea Turing

Limbajele complete ale Turing conțin complexitate prin natură, iar complexitatea invită erori și vulnerabilități.

Rețeaua Bitcoin are, de asemenea, un limbaj de programare pe care îl numește Script. Scriptul nu este complet intenționat pentru a spori securitatea.

Cu cât sunt mai puține opțiuni oferite unui programator, cu atât este mai puțin probabil ca vulnerabilitățile de securitate blockchain să intre în sistem.

Pentru a minimiza riscul de a elibera codul defect în sălbăticie, programatorii trebuie să înțeleagă capcane comune și anti-tipare inerente programării contractelor inteligente. (Anti-modelele reprezintă practici proaste de programare).


Hackul DAO: Problema de reintroducere

imagine a vulnerabilităților de securitate blockchain

Hackul DAO

Problema de reintrare este probabil cea mai înaltă dintre programele de vulnerabilități de securitate blockchain codificate în contracte inteligente. Reintroducerea drenează un cont prin cheltuieli multiple pentru aceeași tranzacție. Cazul de utilizare a procesării rambursărilor se pretează acestui exploat, dar acest defect afectează orice tip de tranzacție dacă nu este abordat în etapa de proiectare și codificare.

Într-unul dintre cele mai infame atacuri de criptocurrency până în prezent, hackerii DAO au exploatat reintroducerea. Niciun lider organizațional nu a dictat cum să conducă DAO (sau organizația autonomă descentralizată), iar DAO a propus să împuternicească utilizatorii cu capacitatea de a vota asupra proiectelor în care să investească..

A strâns peste 150 de milioane de dolari în finanțare în prima lună. Pe 17 iunie 2016, hackerii au scos 50 de milioane de dolari din organizație prin defectul de reintrare. Furca de la Ethereum Classic (ETC) la Ethereum (ETH) a dus la un efort de a rezolva problemele create de acest hack.

Anti-model vulnerabil la reintrare

O logică de reintroducere vulnerabilă pentru cod arată astfel:

funcție de procesare a plății () {

(1) verificați validitatea tranzacției, destinatarului și soldul contului;

(2) procesează tranzacția;

(3) actualizați starea sistemului pentru a arăta că tranzacția a fost procesată;

}

La prima vedere, logica pare corectă și completă, dar defectul se află în ordinea de a face pasul 2 înainte de pasul 3.

În timp ce primul apel către funcție continuă procesarea pasului 2, un alt apel pentru aceeași tranzacție poate intra în funcție. Deoarece informațiile de stare rămân în starea inițială și nu sunt încă procesate la pasul 3, al doilea apel se verifică ca o tranzacție validă de procesat.

În consecință, sistemul cheltuiește moneda pentru aceeași obligație a doua oară. Hackerii trimit mai multe tranzacții la funcție înainte ca statul să fie setat corect.

Cură pentru reintrare

Această modificare a algoritmului corectează problema de mai sus:

funcție de procesare a plății () {

(1) verificați validitatea tranzacției, destinatarului și soldul contului;

(2) actualizați starea sistemului pentru a arăta că tranzacția a fost procesată;

(3) procesează tranzacția;

}

Codul trebuie să ia în considerare toate gestionările de excepții necesare și trebuie să ia în considerare și toate dependențele logice.

Revărsare

Depășirea este un alt defect de securitate obișnuit de care trebuie să fie conștienți programatorii.

Unele limbaje de programare oferă tastare puternică, iar altele oferă tastare slabă. Limbajele puternic tastate refuză să permită programatorilor să atribuie date șir unei variabile numerice, de exemplu, iar limbile slab tastate permit astfel de acțiuni.

Limbile puternic tastate impun restricții de acoperire. Dacă o matrice este de zece elemente, programatorii nu pot încerca să acceseze al unsprezecelea element. Limbile slab tastate permit un astfel de comportament, dar rezultă blocări. Dacă valoarea maximă admisibilă pe care o deține o variabilă este 99 și îi atribuiți o valoare de 100, urmăriți-o când se execută!

În consecință, depășirea este un exploit pe care îl folosesc hackerii. Dacă un hacker alimentează un parametru către un contract inteligent care este în afara intervalului pe care codul îl poate procesa, rezultă un blocaj. Un astfel de accident alimentează multiple exploatări. Accidentul poate declanșa un atac de refuz de serviciu (atac DDoS), iar informațiile vitale despre componentele interne ale sistemului se dezvăluie uneori în mesaje de eroare.

În aplicațiile web, hackerii umple adesea memoria cu propriul cod rău intenționat, așa că atunci când programul se blochează și merge într-un loc aleatoriu din memorie, codul rău intenționat se execută.

Limbajele slab tastate oferă putere și flexibilitate dinamică, dar necesită, de asemenea, un design și teste mai riguroase pentru a fi întărite împotriva atacurilor.

Hidra cu multe capete

imagine a vulnerabilităților de securitate blockchain

O multitudine de probleme de securitate afectează lumea software-ului. Pe măsură ce apare o nouă tehnologie, apar noi amenințări. Pe lângă exploatările menționate mai sus, aceste defecte notabile reprezintă doar câteva dintre multele alte vulnerabilități de securitate blockchain.

Criptografia proastă creează multe dureri de cap. Criptografia asigură confidențialitatea și, atunci când confidențialitatea se sparge, totul se sparge. Echipa IOTA a făcut greșeala de a scrie propria bibliotecă criptografică de la zero în versiunea inițială a produsului lor. Problema inerentă rulării propriei dvs. criptografii este că toate software-urile complexe conțin bug-uri, deci aveți garantat că aveți criptografie buggy.

Bibliotecile criptografice stabilite supraviețuiesc verificării de către academicieni și se dovedesc fiabile în timp, prin viața în sălbăticie.

În lumea portofelelor, generarea de numere aleatorii trebuie să fie cu adevărat aleatorie. În special în primele zile ale criptomonedei, unele portofele nu au îndeplinit această cerință.

Adresele criptomonede necesită adrese care trebuie să fie unice. Unicitatea provine dintr-un generator de numere aleatorii, iar generatorul de numere aleatorii are nevoie de o sămânță pentru a începe procesul. Dacă sămânța nu reușește să fie cu adevărat aleatorie, sistemul eșuează.

Un rezultat aleatoriu rău înseamnă că aceeași adresă este creată de mai multe ori. Imaginați-vă scenariul în care un portofel atribuie adresa X persoanei A și apoi, uneori, mai târziu atribuie adresa X persoanei B. Când o plată se duce la adresa X, aceasta se adresează doar unei persoane. Care persoană primește banii?

O altă problemă cu aleatorietatea rea ​​apare atunci când un hacker își dă seama de algoritmul folosit pentru a crea sămânța. Hackerul regenerează semințele pentru el însuși și deține sistemul.

Drumul continuă pentru totdeauna și petrecerea nu se termină niciodată

Securitatea este o bătălie fără sfârșit și chiar dacă programatorii, arhitecții și testerii elimină toate vulnerabilitățile din cod, rămân vulnerabilități operaționale.

Într-un mediu de dovadă a muncii, dacă actorii răi controlează 51% din rețea, integritatea este distrusă. Teoria jocurilor asigură atenuarea acestui atac. O nouă criptomonedă cu o rețea mică expune cel mai mare risc la acest atac. Dar un atac de 51% distruge valoarea monedei, astfel încât atacatorii doar se rănesc.

Blockchain-urile trăiesc pe internet și împărtășesc aceeași expunere hackerilor ca și internetul. De exemplu, să presupunem că cumpărați monede de la un schimb de pe un site web. Atacurile prin injecție, scripturile între site-uri, atacurile de phishing și toate celelalte hack-uri tradiționale ale site-ului web prevalează.

Gânduri finale

Așa cum programatorii se protejează împotriva erorilor, programatorii trebuie să ia în considerare securitatea dezvoltării lor. Există unele instrumente pentru a ajuta programatorii în sarcină, dar programatorii trebuie mai întâi să-și înțeleagă propriile vulnerabilități pentru a se feri de ei.

Proiect descentralizat de securitate a aplicațiilor (DASP) aspiră să fie un depozit de informații și resurse privind securitatea blockchain-ului. Se modelează oarecum pe Deschideți proiectul de securitate a aplicațiilor web (OWASP). Top 10 anual OWASP enumeră cu siguranță principalele vulnerabilități ale aplicațiilor web existente în prezent. Top 10 DASP speră să ofere resursa echivalentă pentru blockchain.

Nu toate atacurile sunt cunoscute în prealabil. Un exploit zero-day definește un exploit cunoscut de hackeri înainte ca oricine altcineva să o facă. Așadar, programatorii trebuie să gândească ca atacatorii atunci când proiectează și implementează software. Dacă nu găsiți vulnerabilitățile în codul dvs., așteptați-vă ca un hacker care caută profit să le găsească.

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me
Like this post? Please share to your friends:
Adblock
detector
map