Mentalitatea Smart Security Security

blogul 1NewsDevelopersEnterpriseBlockchain Explained Evenimente și conferințe ApăsațiBuletine informative

Aboneaza-te la newsletter-ul nostru.

Adresa de email

Vă respectăm confidențialitatea

AcasăBlogDezvoltare blockchain

Mentalitatea Smart Security Security

5 principii de securitate pe care fiecare dezvoltator Ethereum trebuie să le cunoască, plus compromisuri fundamentale. de ConsenSys 17 iunie 2020 Postat pe 17 iunie 2020

Securitate Blockchain

De ConsenSys Diligence, echipa noastră de experți în securitate blockchain.

Deși industria se maturizează, dezvoltarea contractelor inteligente este încă un domeniu relativ nou și maturizat. Prin urmare, ar trebui să vă așteptați la schimbări constante în peisajul securității, pe măsură ce sunt descoperite noi erori și riscuri de securitate și pe măsură ce se dezvoltă noi bune practici. Învățare și urmărire cele mai bune practici este doar începutul activității de securitate pe care va trebui să o faceți ca dezvoltator de contracte inteligente.

Programarea inteligentă a contractelor necesită o mentalitate inginerească diferită de cea cu care ați putea fi obișnuit. Costul eșecului poate fi ridicat, iar schimbarea poate fi dificilă, ceea ce îl face într-un fel mai asemănător cu programarea hardware sau programarea serviciilor financiare decât dezvoltarea web sau mobilă. Prin urmare, nu este suficient să vă apărați împotriva vulnerabilităților cunoscute. În schimb, va trebui să învățați o nouă filozofie a dezvoltării.

Pregătește-te pentru eșec

Orice contract non-banal va conține erori. Prin urmare, codul dvs. trebuie să poată răspunde la erori și vulnerabilități cu grație.

  • Întrerupeți contractul atunci când lucrurile merg prost („întrerupător”).
  • Gestionați suma de bani la risc (limitarea ratei, utilizarea maximă).
  • Aveți o cale eficientă de actualizare pentru remedierea erorilor și îmbunătățiri.

Lansați cu atenție

Este întotdeauna mai bine să prindeți bug-uri înainte de lansarea completă a producției.

  • Testați bine contractele și adăugați teste ori de câte ori sunt descoperiți noi vectori de atac.
  • Furnizați recompense de bug-uri începând cu versiunile alpha testnet.
  • Lansarea în faze, cu utilizare și testare crescândă în fiecare fază.

Păstrați contractele simple

Complexitatea crește probabilitatea de erori.


  • Asigurați-vă că logica contractului este simplă.
  • Modularizează codul pentru a menține contractele și funcțiile mici.
  • Utilizați unelte sau coduri deja scrise acolo unde este posibil (de exemplu, nu rulați propriul dvs. generator de numere aleatorii).
  • Preferă claritatea față de performanță ori de câte ori este posibil.
  • Folosiți blockchain-ul doar pentru părțile sistemului care necesită descentralizare.

Sa fii la curent

Țineți evidența noilor dezvoltări de securitate.

  • Verificați-vă contractele pentru orice eroare nouă imediat ce este descoperită.
  • Treceți la cea mai recentă versiune a oricărui instrument sau bibliotecă cât mai curând posibil.
  • Adoptați noi tehnici de securitate care par utile.

Fiți conștienți de idiosincraziile EVM

Deși o mare parte din experiența dvs. de programare va fi relevantă pentru programarea Ethereum, există câteva capcane de care trebuie să știți.

  • Fii extrem de atent cu privire la apelurile contractuale externe, care pot executa coduri rău intenționate și pot schimba fluxul de control.
  • Înțelegeți că funcțiile dvs. publice sunt publice și pot fi apelate cu rea intenție și în orice ordine. Datele private din contractele inteligente sunt vizibile și de oricine.
  • Țineți cont de costurile cu gazul și de limita de gaze blocate.
  • Rețineți că marcajele de timp sunt imprecise pe un blockchain: minerii pot influența timpul executării unei tranzacții într-o marjă de câteva secunde.
  • Randomania nu este banală pe blockchain, majoritatea abordărilor pentru generarea de numere aleatoare sunt jucabile pe blockchain.

Compensări fundamentale

Există multiple compromisuri fundamentale de luat în considerare atunci când se evaluează structura și securitatea unui sistem de contract inteligent. Recomandarea generală pentru orice sistem de contract inteligent este identificarea echilibrului adecvat pentru aceste compromisuri fundamentale.

Un sistem ideal de contract inteligent dintr-o prejudecată de inginerie software este modular, reutilizează codul în loc să îl dubleze și acceptă componente care pot fi actualizate. Un sistem de contract inteligent ideal dintr-o prejudecată arhitecturală sigură poate împărtăși această mentalitate, în special în cazul sistemelor de contract inteligente mai complexe.

Cu toate acestea, există excepții importante în care cele mai bune practici de securitate și inginerie software pot să nu fie aliniate. În fiecare caz, echilibrul adecvat este obținut prin identificarea amestecului optim de proprietăți de-a lungul dimensiunilor sistemului contract, cum ar fi:

  • Rigid vs. Actualizabil
  • Monolitic vs. Modular
  • Duplicare vs. Reutilizare
Rigid vs. Actualizabil

În timp ce mai multe resurse, inclusiv aceasta, subliniază caracteristicile de maleabilitate, cum ar fi modelele Killable, Upgradeable sau Modifiable, există un compromis fundamental între maleabilitate și securitate.

Modelele de maleabilitate prin definiție adaugă complexitate și suprafețe potențiale de atac. Simplitatea este deosebit de eficientă în ceea ce privește complexitatea în cazurile în care sistemul de contracte inteligente efectuează un set foarte limitat de funcționalități pentru o perioadă limitată de timp predefinită, de exemplu, un sistem de contract de vânzare cu token fără cadru de timp finit, fără guvernanță..

Monolitic vs. Modular

Un contract monolitic autonom conține toate cunoștințele identificabile și lizibile la nivel local. Deși există puține sisteme de contracte inteligente deținute cu respect deosebit, care există ca monolite, există un argument care trebuie făcut pentru localizarea extremă a datelor și a fluxului – de exemplu, în cazul optimizării eficienței revizuirii codului.

Ca și în cazul celorlalte compromisuri considerate aici, cele mai bune practici de securitate se îndepărtează de cele mai bune practici de inginerie software în contracte simple de scurtă durată și tendință către cele mai bune practici de inginerie software în cazul sistemelor contractuale perpetue mai complexe.

Duplicare vs. Reutilizare

Un sistem de contract inteligent din perspectiva ingineriei software dorește să maximizeze refolosirea acolo unde este rezonabil. Există multe modalități de a refolosi codul contractului în Solidity. Utilizarea contractelor dovedite anterior desfășurate pe care le dețineți este în general cel mai sigur mod de a realiza refolosirea codului.

Duplicarea se bazează frecvent în cazurile în care nu sunt disponibile contracte independente desfășurate anterior. Eforturi precum Biblioteca Solidity a OpenZeppelin căutați să furnizați modele astfel încât codul sigur să poată fi refolosit fără duplicare. Orice analiză a securității contractului trebuie să includă orice cod reutilizat care nu a stabilit anterior un nivel de încredere proporțional cu fondurile expuse riscului în sistemul de contract inteligent țintă.

Construirea și lansarea aplicațiilor pe Ethereum este, fără îndoială, cea mai interesantă frontieră pentru inginerii software de astăzi, dar necesită modelare continuă a amenințărilor, audit de securitate și planificare a răspunsului la incidente..

Echipa Diligence este aici pentru a vă ajuta să rămâneți vigilenți și să vă construiți încrederea în implementările dvs..

Rezervați un Blockchain Security Spot Check

Recenziile noastre de o zi vă ajută să vă încorporați securitatea în codul dvs. blockchain de la început, astfel încât să puteți economisi timp și bani pe termen lung. Rezervați-vă astăzi Securitate Contracte inteligente Buletin informativ Abonați-vă la newsletter-ul nostru pentru cele mai recente știri Ethereum, soluții pentru întreprinderi, resurse pentru dezvoltatori și multe altele. Adresa de e-mail Conținut exclusivCum să construiți un produs Blockchain de succesWebinar

Cum să construiți un produs Blockchain de succes

Cum se configurează și se execută un nod EthereumWebinar

Cum se configurează și se execută un nod Ethereum

Cum să vă construiți propriul API EthereumWebinar

Cum să vă construiți propriul API Ethereum

Cum să creați un simbol socialWebinar

Cum să creați un simbol social

Utilizarea instrumentelor de securitate în dezvoltarea contractelor inteligenteWebinar

Utilizarea instrumentelor de securitate în dezvoltarea contractelor inteligente

Viitorul activelor digitale și al DeFi-ului financiarWebinar

Viitorul finanțelor: active digitale și DeFi

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