Varnost pametnih pogodb: Agilni pristop SDLC Data Intelligence PlatoBlockchain. Navpično iskanje. Ai.

Varnost pametnih pogodb: agilni pristop SDLC 

Čas branja: 10 min

Blockchain je naveden kot decentralizirana in nepooblaščena knjiga. Toda ta knjiga, zaščitena pred posegi, je ranljiva za vdore in izkoriščanja. Decentralizacija, ki je ena največjih prednosti Blockchaina, je ena izmed slabosti. 

No, to je v redu, kaj pa SDLC? 

Pristop življenjskega cikla programske opreme, o katerem bomo razpravljali, temelji na razvrščanju varnostnih ranljivosti v pametnih pogodbah v več faz. 

V prvem razdelku smo predstavili varnostna vprašanja v pametnih pogodbah. In v naslednjem razdelku razpravljamo o njegovih rešitvah, razdeljenih na štiri faze; Zasnova varnosti, implementacija varnosti, testiranje pred uvedbo in zadnja, spremljanje in analiza. 

ANALIZA VARNOSTNIH VPRAŠANJ V PAMETNIH POGODBAH 

Pametne pogodbe so ranljive za različne vdore in izkoriščanja. Te pogodbe, ki so sinonim za pravne pogodbe v resničnem svetu, delujejo neodvisno na podlagi pogojev domačih verig blokov. 

Toda ali ste pomislili, da so tudi te domače verige blokov lahko odgovorne tudi za morebitne varnostne grožnje v pametnih pogodbah? Spodaj predstavljamo nekatere značilnosti verig blokov za isto:

decentralizacija: Velja za eno od prednosti protokolov, ki temeljijo na verigi blokov. Toda napadalci so iznašli način, kako to pozitivno lastnost spremeniti v negativno. 

Zlonamerni akterji lahko ustvarijo lažno identiteto za razvoj in uvedbo pametne pogodbe. Včasih postane težko prepoznati ranljivo pogodbo, saj so v javnih verigah blokov na voljo samo javni naslov (ali) javni ključi. 

Odprtokodna koda: To vas bo morda presenetilo, toda ja, na splošno je večina kod pametnih pogodb nekoliko odprtokodnih. 

Recimo, v primeru virtualnega stroja Ethereum (EVM) je njegova bajtna koda vedno javna. Nekateri dekompilatorji Solidity vam lahko pomagajo pridobiti naslov pametne pogodbe in kodo Solidity. Zaradi izpostavljenosti izvorne kode je ta funkcija prednost za napadalce. 

Nerazvite platforme blockchain: Za razvijalca je glavna zahteva, da se seznani z razvojno platformo. Obstaja veliko nerazvitih ali novih platform blockchain, zato razvijalci ne morejo razviti poglobljenega znanja o operacijah v blockchainu. 

Ta nedoslednost vpliva na pametne pogodbe zaradi pomanjkanja sinhronizacije. Napake v platformi blockchain ostajajo neopažene zaradi njenega nenehnega razvoja. 

Neznane transakcije: V prvi točki smo obravnavali anonimno identiteto; prav tako transakcije v verigah blokov niso razkrite. Transakcijam je nemogoče slediti, kar vodi do številnih nezakonitih dejavnosti. Ker gre za finančne transakcije, lahko vsaka varnostna težava povzroči veliko finančno izgubo. 

VARNOSTNE REŠITVE PAMETNE POGODBE

Zdaj, če nadaljujemo z varnostjo pametne pogodbe, lahko primerjamo vse potrebne korake, potrebne za zaščito pametne pogodbe, z njenim razvojem. Tako kot pri tradicionalnem razvoju programske opreme sledimo življenjskemu ciklu razvoja; podobno lahko razvrstimo življenjski cikel razvoja pogodbe. 

Življenjski cikel razvoja pametne pogodbe lahko razdelimo na štiri faze: varnostno načrtovanje, izvajanje varnosti, testiranje pred uvedbo ter spremljanje in analiza.

pregled varnostnih tem z vidika življenjskega cikla pametne pogodbe
pregled varnostnih tem z vidika življenjskega cikla pametne pogodbe

1. VARNOSTNI DIZAJN 

Ta prva faza vključuje tri teme; načelo načrtovanja, vzorec načrtovanja in varnostno modeliranje (kot je prikazano na zgornji sliki). Primarni poudarek teh tem je na oblikovanju pogodbe in na tem, kako je mogoče preprečiti varnostne grožnje. 

PRINCIP OBLIKOVANJA

Načela oblikovanja so temeljne ideje za oblikovanje varnih pametnih pogodb v verigi blokov. Obstaja pet bistvenih načel oblikovanja pogodb: pripravite se na neuspeh, skrbno uvedite, naj bodo pogodbe preproste, bodite na tekočem in morate vedeti o lastnostih verige blokov. 

Zdaj si lahko mislite, kako bodo pomagali ustvariti varno pametno pogodbo? 

Vzemimo katero koli od zgornjih načel, recimo »Pripravite se na neuspeh«, to pomeni, da bi se pogodba morala odzvati na napake, če ni shem popravkov. In če pride do kakršnega koli napada, mora biti pogodba omogočena premor, da se prepreči nadaljnja izguba. 

DIZAJNSKI VZOREC

Pri načrtovanju programske opreme so oblikovalski vzorci rešitve, ki jih je mogoče ponovno uporabiti za rešitev težave. 

Če vzamemo primer Ethereuma, obstaja šest varnostnih vzorcev; Interakcija učinkov preverjanja, zaustavitev v sili, Mutex, ovirak, omejitev hitrosti in omejitev ravnovesja.  

Te varnostne vzorce lahko uporabimo za reševanje varnostnih težav v verigi blokov, kot je ranljivost ponovnega vstopa, ki jo lahko obravnava vzorec Mutex. 

Hkrati nam lahko vzorec zaustavitve v sili pomaga prekiniti izvajanje pogodbe, če jo prizadene ranljivost. 

VARNOSTNO MODELIRANJE

Med razvito kodo in zahtevano kodo za pogodbe lahko pride do razlike, saj se Solidity uporablja za ustvarjanje pogodb; ta jezik izpolnjuje Turingovo popolnost, vendar je nagnjen k napakam. 

Zgornja slika prikazuje, da ta podfaza zajema dve fazi; načrtovanje in izvedba varnosti. 

Varnostno modeliranje je neposredno povezano s poslovno logiko; ker specifikacije izhajajo iz posla, je logiko mogoče razvrstiti po semantiki brez napak. To pomaga kasneje med formalnim postopkom preverjanja, ki se izvaja za ublažitev ranljivosti. 

2. IZVEDBA VARNOSTI

V tem razdelku bomo obravnavali dve od treh tem; varnost

Predloga za razvoj in varnost, saj smo varnostno modeliranje obravnavali že v zadnji fazi.

RAZVOJ VARNOSTI

V tem razdelku bomo videli, kako se je mogoče izogniti ranljivostim med postopkom izvajanja pogodbe. 

Na platformi Ethereum imamo varnostne EIP (predloge za izboljšanje Ethereuma) – priporočila za boj proti varnostnim težavam na Ethereum platforma. Zato so ti EIP-ji vredni omembe za varno izvajanje pametnih pogodb. 

VARNOSTNA PREDLOGA

Predloge služijo kot izvor za nove dokumente. Predloge pametnih pogodb z operativnimi parametri povezujejo pravno pogodbo z izvedljivo kodo. 

V kontekstu varnosti pametnih pogodb je mogoče ekstrahirati standardne pogodbene predloge z nadgrajenimi varnostnimi parametri, kot so varnostni vzorci in varnostne knjižnice. To bo zmanjšalo možnost napak pri ročnem kodiranju. 

3. TESTIRANJE PRED UPORABO

Ponovno zahteva te faze izhaja iz ene od prednosti pametnih pogodb – »Nespremenljivosti«. 

Ko so pametne pogodbe ustvarjene, jih ni več mogoče spremeniti. Zato je pred uvedbo obvezno izvesti zadostne preizkuse za zagotovitev varnosti pametnih pogodb.

Ta faza zajema tri varnostne parametre, ki jih je treba upoštevati pred uvedbo pametne pogodbe; Strogo formalno preverjanje, orodja za analizo kode in varnostna revizija. 

STROGO FORMALNO PREVERJANJE

Formalno preverjanje je dobro definiran postopek, ki uporablja matematično razmišljanje in matematične dokaze za preverjanje želenih lastnosti sistema. 

Formalno preverjanje pametnih pogodb lahko izvedemo, saj je pogodbeni program kratek in časovno omejen. Obstaja več načinov za togo formalizacijo in preverjanje pametnih pogodb; nekateri temeljijo na pogodbeni kodi, drugi pa na semantiki virtualnega stroja Ethereum (EVM). 

ORODJA ZA ANALIZO KODE

Analiza kode se izvede brez izvajanja programov. V ta namen uporabljamo nekatera orodja, imenovana Orodja za testiranje statične varnosti aplikacij (SAST). Ta orodja pomagajo pri odkrivanju varnostnih napak v izvorni kodi. 

Analiza, ki jo izvajajo ta orodja, lahko vključuje enega ali vse naslednje korake:

(I) Ustvarite vmesno predstavitev (IR), kot je drevo abstraktne sintakse (AST), za podrobno analizo. 

(Ii) dopolniti IR z zadostnimi informacijami, pridobljenimi s statično kontrolo ali analizo toka datuma in formalnimi tehnikami preverjanja; te tehnike vključujejo: simbolno izvedbo, abstraktno interpretacijo in preverjanje simbolnega modela. 

Toda katera so orodja, ki jih lahko uporabimo za izvedbo analize kode na pametni pogodbi? 

Čeprav obstaja veliko orodij, ki jih lahko uporabimo za izvedbo varnostne analize, je Oyente najbolj priljubljeno. 

poslušalec se lahko uporablja za izvajanje varnostne analize za pametne pogodbe EVM. Uporablja "simbolično izvajanje" za odkrivanje štirih pogostih hroščev; odvisnost od naročanja transakcij, odvisnost od časovnega žiga, napačno obravnavane izjeme in ponovni vstop. 

Arhitektura Oyenteja
Arhitektura Oyenteja

Arhitektura Oyente kaže, da vzame bajtno kodo in kot vhod predstavi globalno stanje Ethereuma. 

Ena od slabosti Oyente je, da zazna le varnostne ranljivosti. Simbolična tehnika usmrtitve, ki jo uporablja Oyente, ne raziskuje vseh možnih poti. Tako se pojavi potreba po drugih orodjih, kot so varnost in ročne revizije. 

VARNOSTNA REVIZIJA

Ta razdelek bomo začeli tam, kjer smo pustili zadnjega; ročne revizije. 

Toda najprej razumejmo potrebo po varnostni reviziji; naj bo to vdor v omrežje Ronin ali vdor v omrežje Poly, nerevidirana koda je najbolj ranljiva za vdore in izkoriščanja. 

Povzročajo velike finančne izgube. Pravzaprav ni pomembna samo revizija vašega projekta Web3, ampak tudi revizija s strani strokovnih strokovnjakov, saj je to odvisno od strokovne sposobnosti revizorjev za izvajanje varnostnih revizij. 

Še enkrat, kje najti te profesionalne strokovnjake? Ni vam treba nikamor iskati zaupanja vrednih revizorjev; kliknite https://t.me/quillhash da stopiš v stik z enim od njih! 

Idealna revizija pametnih pogodb je kombinacija ročne in avtomatizirane analize kode; kot smo razpravljali v prejšnji točki, čeprav gre za samodejno analizo kode iz orodij, kot je Oyente, obstaja možnost neznanih ranljivosti v pogodbi. 

Da bi to premagali, lahko varnostni revizorji ročno analizirajo vsako vrstico kode in jih preizkusijo glede morebitnih ranljivosti. 

4. SPREMLJANJE IN ANALIZA

Se spomnite nenehno razvijajočega se načela veriženja blokov, o katerem smo razpravljali na začetku? 

Ta faza temelji na isti temi; ko je pogodba uvedena in zagnana, se lahko pojavijo nekatere ranljivosti, ki so ostale neopažene v prejšnjih fazah zaradi novih izdaj in pogostih posodobitev, zaradi katerih so pogodbe kasneje manj učinkovite. 

Lahko izvedemo; bug bounty, nadzor varnosti in post hoc analiza za premagovanje teh ovir. 

NAGRADA ZA HROŠČE

Ker razmišljamo o varnostnih vprašanjih po uvedbi s pogodbami, so nam nagrade za napake lahko v pomoč. Formalna tehnika preverjanja, o kateri smo govorili prej, je tehnika statične analize. Po drugi strani pa je nagrada za hrošče dinamična tehnika analize. 

Koncept nagrade Bug bounty je preprost; hekerji odkrijejo hrošče, v zameno pa so plačani z nekaj finančnimi nagradami. Videti je kot zmagovalna situacija, kajne? Ampak ni!

Ulov tukaj je; da je lahko vrednost hroščev višja od nagrade na sivih trgih in obstaja možnost, da lahko hekerji izkoristijo ali prodajo hrošče, da bi dobili visoko ceno. 

Včasih lastniki projekta zanikajo plačilo nagrade, razen če so napake potrjene; hekerje skrbi tudi negotovost plačil po razkritju hroščev. 

Da bi to premagali, je bil predlagan okvir za nagrado za hrošče, znan kot »Hydra«. 

Hydra uporablja tehnologijo izkoriščanja vrzeli, imenovano N-of-N-version programming (NNVP), kot sistem nagrad za hrošče v verigi blokov. 

Ogrodje Hydra z glavami
Ogrodje Hydra z glavami

VARNOSTNI NADZOR

Za odkrivanje varnostnih ranljivosti lahko uporabimo statično analizo kode, vendar se ta metoda uporabi pred uvedbo pametnih pogodb. 

Toda za iskanje napak in morebitnih ranljivosti v realnem času moramo spremljati in analizirati podatke o transakcijah v verigi blokov. 

Te ranljivosti, odkrite z analizo pametnih pogodb, lahko imenujemo ranljivosti sledenja. V središču teh ranljivosti sledenja so tri vrste pogodb; 

(I) Pohlepne pogodbe (pogodbe, ki ostanejo žive in zaklenejo Ether za nedoločen čas).

(Ii) Razsipne pogodbe (pogodbe, ki neprevidno odvajajo sredstva samovoljnim uporabnikom) in,

(iii) Samomorilne pogodbe (pogodbe, ki jih lahko vsak samovoljni uporabnik ubije). 

Za odkrivanje ranljivosti s spremljanjem objektov ECF je bil predlagan celo koncept objektov brez povratnega klica (ECF). 

V okviru tega je bil predstavljen tudi spletni algoritem; pomagalo je odkriti neznane ranljivosti. V istem predlogu je bilo predlagano izvajanje pametnih pogodb na Testnetu pred uvedbo v Mainnetu. 

Uporabniški vmesnik za spremljanje je platforma za spremljanje verige blokov, ki uporablja React.js. To platformo je mogoče uporabiti za izvajanje transakcij, preverjanje sredstev in poizvedovanje o stanju verige blokov. 

Ne moremo se zanesti na to platformo za varno spremljanje pametnih pogodb, a ker je mogoče najti večino podatkov o transakcijah, povezanih s pametnimi pogodbami, lahko s sledenjem prenosu sredstev zaznamo izkoriščanja v realnem času. 

POST HOC ANALIZA

Post hoc analiza uporablja podatke o transakcijah v verigi blokov za analizo, odkrivanje ali sledenje morebitnim grožnjam v verigi blokov z laičnim izrazom. 

Če govorimo o grafični analizi, je bila zasnovana kot pristop k zbiranju vseh podatkov o transakcijah (to je vključevalo notranje transakcije iz pametnih pogodb). 

S pomočjo teh podatkov so pripravili tri grafe; 

(I) Graf denarnega toka (MFG)

(Ii) Graf ustvarjanja pogodbe (CCG) in,

(iii) Graf pozivanja pogodbe (CIG)

Na podlagi analize zgoraj omenjenih grafov je bilo predlaganih veliko novih ugotovitev, kot so rešitve za varnostna vprašanja med več medsebojnimi pogodbami. 

Pregled analize grafov
Pregled analize grafov

Ponzijeva shema je ena od klasičnih shem goljufije, prek katere je mogoče pridobiti veliko sredstev in vplivati ​​na domačo verigo blokov. Za boj proti tej goljufiji je bil predlagan mehanizem klasifikatorja za odkrivanje Ponzijevih shem na Ethereumu. 

Ta mehanizem uporablja podatkovno rudarjenje in strojno učenje za odkrivanje Ponzijevih pogodb. Ta postopek deluje tudi, če izvorna koda pametnih pogodb ni na voljo. 

Ogrodje zaznavanja pametne Ponzijeve sheme
Ogrodje zaznavanja pametne Ponzijeve sheme

Ključni odvzem

To je to, ja, to je to za zdaj!

Če ste bili z nami do sedaj, bi bili hvaležni. Brez daljšega napenjanja bi na koncu rekli le, da je ekosistem pametnih pogodb decentraliziran in da je hrošče težko popraviti. 

Poskušali smo razčleniti varnost pametnih pogodb z vidika življenjskega cikla programske opreme. 

Najprej smo razpravljali o ključnih funkcijah verige blokov, odgovornih za varnostna vprašanja v pametnih pogodbah. Varnostne rešitve za pametne pogodbe smo razvrstili v štiri faze. Upamo, da bomo prinesli več objav, da boste pred izzivi v rastočem ekosistemu Web3. 

Kaj menite o tem agilnem pristopu SDLC za varnost pametnih pogodb? Delite svoje misli v spodnjih komentarjih!

46 Ogledov

Pošta Varnost pametnih pogodb: agilni pristop SDLC  pojavil prvi na Blog.quillhash.

Časovni žig:

Več od Quillhash