Smart contract audit: što zapravo jamči?

Projekt kaže da je napravio audit. Što audit zapravo jamči?

Na stranici kripto projekta vidiš veliku oznaku: audit completed. Ispod nje logo poznate sigurnosne kompanije, zelena kvačica i link prema PDF izvještaju od pedesetak stranica. Prva reakcija lako može biti: dobro, netko stručan je pregledao kod, znači projekt je siguran. Ali smart contract audit nije potvrda da se ništa loše ne može dogoditi. On je puno korisniji kada razumijemo što je stvarno provjereno, kada je provjereno i što je u međuvremenu možda promijenjeno.

download.webp
Sigurnosni stručnjaci pregledavaju kod smart contracta dok odvojeni slojevi prikazuju auditirane dijelove, otvorene rizike i administratorske ovlasti.

To je razlika koju sam i sam s vremenom počeo puno ozbiljnije gledati.

Jer nakon gotovo svakog većeg exploita pojavi se isto pitanje:

Kako su hakirani ako su imali audit?

Odgovor je često puno manje misteriozan nego što zvuči.

Audit nije osiguranje.

Nije jamstvo.

I nije pečat kojim projekt jednom zauvijek postaje siguran.

Zamislimo tehnički pregled automobila

Najlakše mi je audit objasniti kroz automobil.

Odvezeš automobil na tehnički pregled.

Provjere kočnice, svjetla, gume, emisije i niz drugih stvari.

Automobil prođe.

Znači li to da sljedećih godinu dana ne može imati kvar?

Naravno da ne.

Može ti sutra otići pumpa goriva.

Možeš mjesec dana kasnije zamijeniti dio vozila neispravnim dijelom.

Može netko drugi napraviti grešku prilikom popravka.

Možeš automobil koristiti na način za koji nije napravljen.

Tehnički pregled samo govori da je u trenutku pregleda određeni skup stvari zadovoljio određene uvjete.

Smart contract audit funkcionira slično.

Sigurnosna kompanija dobije određenu verziju koda.

Pregleda je.

Traži poznate vrste ranjivosti.

Pokušava pronaći greške u logici.

Provjerava ovlasti.

Gleda može li se sustav zloupotrijebiti.

Na kraju napiše što je pronašla.

Ali nakon toga život projekta nastavlja dalje.

Smart contract audit ne pregledava čitav kripto projekt

Ovo je jedna od najvećih zabuna.

Kada projekt kaže da je auditiran, prvo bih pitao:

Što je točno auditirano?

Možda je pregledan samo jedan smart contract.

Projekt ih ima dvadeset.

Možda je pregledana verzija 1.2, a trenutačno radi verzija 1.5.

Možda je pregledan token contract, ali nije bridge.

Možda je pregledan staking ugovor, ali nije backend aplikacije.

Možda je sam kod dobar, ali admin wallet koji ima ogromne ovlasti drži jedna osoba.

To znači da rečenica "projekt ima audit" govori puno manje nego što zvuči.

Trebam otvoriti izvještaj i vidjeti njegov scope.

Scope je zapravo odgovor na pitanje što su auditori dobili zadatak pregledati.

Ako je određeni dio izvan scopea, audit o njemu ne govori ništa.

Može biti potpuno siguran.

Može biti katastrofalan.

Iz izvještaja to jednostavno ne znam.

Audit traži greške koje ljudi uspiju pronaći

Ovdje se krije još jedna stvar koju često zaboravljamo.

Auditore ponekad zamišljamo kao neku vrstu automatiziranog skenera koji može dokazati da kod nema ranjivosti.

U stvarnosti iza audita uglavnom stoje ljudi i alati.

Iskusni sigurnosni istraživači prolaze kroz kod i pokušavaju razmišljati kao napadač.

Što ako ovu funkciju pozovem prije one?

Što ako vrijednost bude nula?

Što ako korisnik napravi transakciju nekoliko puta?

Što ako netko privremeno manipulira cijenom?

Što ako administrator promijeni određeni parametar?

Što ako se dva pametna ugovora ponašaju na način koji developer nije očekivao?

To može biti izuzetno kvalitetan posao.

Ali još uvijek postoji jedna neugodna činjenica:

Auditor mora primijetiti problem.

Ako ga ne pronađe, problem ne prestaje postojati.

Zbog toga ozbiljni audit izvještaji gotovo nikada ne kažu:

"Ovaj projekt je potpuno siguran."

Umjesto toga govore o nalazima, razinama rizika i ograničenjima pregleda.

To je puno realniji jezik.

Zelena kvačica može skrivati crveno upozorenje

Zamisli da audit pronađe pet problema.

Jedan kritičan.

Dva ozbiljna.

Dva mala.

Projekt popravi kritičan problem i jedan ozbiljan.

Drugi ozbiljan problem odluči prihvatiti jer smatra da je rizik mali u njihovom slučaju.

Na web stranici svejedno može završiti velika oznaka:

AUDITED.

Tehnički nije lagala.

Audit je napravljen.

Ali korisnik koji ne otvori izvještaj nema pojma što je u njemu ostalo.

Zato mi puno više znači status nalaza nego sam logo auditora.

Je li problem riješen?

Je li potvrđeno da je popravak pregledan?

Je li označen kao acknowledged?

Je li rizik prihvaćen?

Je li nešto još otvoreno?

To su detalji koji mogu potpuno promijeniti značenje dokumenta.

Ni savršen kod ne spašava loše ovlasti

Recimo da je sam smart contract napisan odlično.

Nema očite greške.

Audit nije pronašao ništa kritično.

Ali postoji admin ključ koji može promijeniti ključne parametre.

Možda može zamijeniti implementaciju ugovora.

Možda može pauzirati sustav.

Možda može dodati novu funkciju.

Možda čak može premjestiti sredstva.

Onda najveći rizik više nije bug.

Najveći rizik postaje pitanje tko kontrolira admin ključ.

Ako ga drži jedna osoba, cijeli sustav može ovisiti o sigurnosti jednog walleta.

Ako postoji multisig, želim znati koliko potpisa treba.

Dva od tri?

Četiri od sedam?

Tko su potpisnici?

Može li tim promijeniti pravila bez čekanja?

Postoji li timelock?

To su stvari koje uopće ne izgledaju kao klasični hack.

Ali za korisnikov novac mogu biti jednako važne.

Projekt se može promijeniti dan nakon audita

Ovo mi je posebno važno kod upgradeable smart contracta.

Neki projekti koriste ugovore koji se kasnije mogu nadograditi.

To ima smisla.

Ako postoji greška, developeri je mogu popraviti.

Ako žele dodati novu funkciju, ne moraju seliti cijeli sustav.

Ali postoji i druga strana.

Auditirana verzija nije nužno verzija koja će raditi zauvijek.

Zamisli da je sigurnosna kompanija detaljno pregledala kod u svibnju.

U srpnju projekt napravi upgrade.

Doda novu logiku.

Promijeni nekoliko funkcija.

Sada na stranici još uvijek stoji logo auditora.

Ali dio koda koji danas čuva sredstva možda više nije isti kod koji je auditor pregledao.

Zato datum audita nije ukras.

On je vrlo važan podatak.

Čak ni najbolji smart contract ne živi sam

DeFi je posebno dobar primjer.

Recimo da napravimo lending protokol.

Sam smart contract može biti kvalitetno napisan.

Ali da bi znao vrijednost kolaterala, treba cijenu.

Tu cijenu dobiva od oraclea.

Što ako oracle zakaže?

Što ako tržište postane nelikvidno?

Što ako neki token izgubi peg?

Što ako bridge preko kojeg dolazi imovina bude hakiran?

Što ako napadač uzme flash loan i manipulira tržištem iz kojeg protokol čita podatke?

Nijedna od tih stvari ne mora biti klasična greška u glavnom smart contractu.

Projekt može biti auditiran, a ipak ovisiti o pet drugih sustava koji nose vlastite rizike.

Kripto je pun takvih lanaca ovisnosti.

Kad pukne jedna karika, može povući sve ostale.

Audit nije isto što i bug bounty

Tu bih razlikovao još dvije stvari koje se često stavljaju u isti koš.

Audit je vremenski ograničen pregled.

Bug bounty je otvoreni poziv sigurnosnim istraživačima da nastave tražiti ranjivosti i nakon što projekt radi.

Projekt, primjerice, može ponuditi milijun dolara nagrade nekome tko pronađe kritičnu grešku prije nego što je iskoristi.

To je potpuno druga vrsta zaštite.

Kod ozbiljnog projekta meni je puno zanimljivija kombinacija:

dobar razvojni tim,

više audita,

aktivni bug bounty,

ograničene admin ovlasti,

monitoring,

jasan plan za hitne situacije.

Jedna kvačica sama za sebe nije dovoljna.

Sigurnost je puno više slojeva koji zajedno smanjuju vjerojatnost katastrofe.

Ni tri audita nisu matematički dokaz sigurnosti

Ponekad projekt posebno naglasi:

Audited by three firms.

To je definitivno bolje nego da nitko nikada nije pogledao kod.

Različiti timovi mogu primijetiti različite probleme.

Ali opet ne bih napravio skok do:

Tri audita = nema rizika.

Možda su sva tri pregledala isti uski dio sustava.

Možda je ključni novi upgrade došao nakon njih.

Možda ranjivost nije u kodu nego u ekonomskom dizajnu.

Možda je problem u oracleu.

Možda administrator ima prevelike ovlasti.

Sigurnost nije zbrajanje logotipa na web stranici.

Tri auditora ne pretvaraju rizičan projekt u bezrizičan projekt.

Zašto onda uopće želim vidjeti audit?

Nakon svega ovoga moglo bi izgledati kao da audit nema vrijednost.

Ima.

Za mene je vrlo pozitivan signal kada ozbiljan projekt prije puštanja velikih količina kapitala daje kod vanjskim sigurnosnim stručnjacima.

Još je bolji signal kada javno objavi cijeli izvještaj.

Tada mogu vidjeti što je pronađeno.

Mogu vidjeti kako je tim reagirao.

Mogu vidjeti je li projekt pokušao sakriti probleme ili ih otvoreno objasniti.

Audit također često pronađe vrlo stvarne greške prije nego što dođu do produkcije.

Korisnici ih nikada ne vide upravo zato što ih je auditor pronašao na vrijeme.

Problem nije audit.

Problem je način na koji ga marketing pretvara u obećanje koje audit nikada nije dao.

Što ja gledam kada projekt kaže da je auditiran

Ne zaustavljam se na naslovnoj stranici.

Prvo gledam tko je napravio pregled.

Zatim datum.

Nakon toga scope.

Koja verzija koda?

Koji smart contracti?

Koje funkcije?

Onda pogledam nalaze.

Ima li kritičnih ili high-risk problema?

Jesu li riješeni?

Što je ostalo otvoreno?

Nakon toga me zanima postoji li mogućnost nadogradnje ugovora i tko ima administratorske ovlasti.

Ako projekt drži veliku količinu sredstava, želim vidjeti postoji li aktivan bug bounty i kakav je plan ako se nešto ipak dogodi.

Ne trebam razumjeti svaku liniju Solidity koda.

Već samo tih nekoliko pitanja daje puno bolju sliku od velike zelene oznake AUDITED.

Najsigurnija rečenica nije "auditiran je"

U kriptu često tražimo jednu stvar koja će nam ukloniti potrebu za daljnjim razmišljanjem.

Doxxed team.

Audit.

MiCA.

Veliki partner.

Poznata burza.

Veliki VC fond.

Sve to može biti korisna informacija.

Ali nijedna nije zamjena za razumijevanje rizika.

Smart contract audit mi govori da je određeni kod u određenom trenutku prošao određenu vrstu stručnog pregleda.

To je vrijedno.

Ali nakon toga projekt i dalje živi.

Kod se mijenja.

Tržište se mijenja.

Povezuju se novi protokoli.

Pojavljuju se nove vrste napada.

Ljudi griješe.

Administratorski ključevi mogu biti kompromitirani.

I zato ću sljedeći put kada vidim veliki logo sigurnosne kompanije biti puno mirniji ako audit postoji.

Ali neću zbog toga automatski zaključiti da je projekt siguran.

Radije ću postaviti puno korisnije pitanje:

Što je auditor stvarno provjerio, što nije provjerio i što se promijenilo nakon što je završio pregled?

Jer audit može drastično smanjiti rizik.

Ali projekt koji ti kaže da audit znači da rizika više nema upravo ti je dao razlog da počneš gledati još pažljivije.

– Mario Jaklenec | KriptoEntuzijasti –

Kripto nije igra sreće, nego disciplina i razumijevanje onoga u što ulažeš.
Znanje, rizik, analiza i dugoročno razmišljanje – to je put kojim hodamo.

Edukacija bez hypea. Zajednica bez slijepog praćenja. Cilj bez iluzija.

Hvala svima što čitate naše članke na kriptoentuzijasti.io!

🌐 Posjeti nas: https://kriptoentuzijasti.io

💬 Pridruži se zajednici: https://discord.gg/kriptoentuzijasti

🐦 Prati nas na X-u: https://twitter.com/k_entuzijasti

🧠💡 Analiziraj prije nego vjeruješ – misli samostalno, jer će inače tržište misliti umjesto tebe.

U svijetu kriptovaluta gdje je buka veća od znanja, edukacija je tvoj najvažniji alat.

Ne gradi mišljenje o tržištu na temelju memova, FOMO objava i lažnih obećanja o "pasivnoj zaradi" – nego na znanju, iskustvu i razumijevanju kako stvari zaista funkcioniraju.

Ako vam se sviđa ono što čitate, podijelite članak na društvenim mrežama i pomozite nam širiti kripto znanje.

Zajedno gradimo svijet kripta!

Kripto Licence i Stvarnost: Što Zapravo Znači Kada Projekt Kaže da je Registriran 

Token nije projekt – a tu grešku skupo plaćaš 

Dobar projekt nije dobra investicija – i tu većina pogriješi 

Odgovori

Vaša adresa e-pošte neće biti objavljena. Obavezna polja su označena sa * (obavezno)

BobiAI Chat

🗑️ ×

Košarica

🛒

Vaša košarica je trenutno prazna.

Krenite u kupovinu
💎

Odaberi pretplatu

Pristup svim člancima u kategoriji

Već imaš račun? Prijavi se | Registriraj se
🔒 Sigurno plaćanje