Sicurezza dei contratti intelligenti: un approccio SDLC agile PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Smart Contract Security: un approccio SDLC agile 

Tempo per leggere: 10 verbale

Blockchain è citato come un libro mastro decentralizzato e a prova di manomissione. Ma questo registro a prova di manomissione è vulnerabile a hack e exploit. Il decentramento, che è uno dei maggiori vantaggi della Blockchain, è uno degli svantaggi. 

Bene, va bene, ma per quanto riguarda SDLC? 

L'approccio al ciclo di vita del software di cui stiamo per discutere si basa sulla classificazione delle vulnerabilità di sicurezza nei contratti intelligenti in più fasi. 

Nella prima sezione, abbiamo esposto i problemi di sicurezza negli smart contract. E nella prossima sezione, discutiamo le sue soluzioni suddivise in quattro fasi; Progettazione della sicurezza, implementazione della sicurezza, test prima della distribuzione e l'ultima, monitoraggio e analisi. 

ANALISI DEI PROBLEMI DI SICUREZZA NEGLI SMART CONTACTS 

Gli smart contract sono vulnerabili a vari hack ed exploit. Questi contratti, che sono sinonimo di accordi legali nel mondo reale, funzionano in modo indipendente in base ai termini delle blockchain native. 

Ma hai pensato che anche quelle blockchain native possono essere responsabili di potenziali minacce alla sicurezza negli smart contract? Di seguito, presentiamo alcune delle caratteristiche delle Blockchain per lo stesso:

Decentramento: È considerato uno dei vantaggi dei protocolli basati su blockchain. Ma gli aggressori hanno escogitato un modo per trasformare questa caratteristica positiva in una negativa. 

Gli attori malintenzionati possono creare un'identità falsa per sviluppare e implementare un contratto intelligente. A volte, diventa difficile identificare un contratto vulnerabile poiché solo l'indirizzo pubblico (o) le chiavi pubbliche sono disponibili su blockchain pubbliche. 

Codice Open Source: Questo potrebbe sorprenderti, ma sì, in generale, la maggior parte dei codici degli smart contract sono in qualche modo open source. 

Ad esempio, nel caso di Ethereum Virtual Machine (EVM), il suo bytecode è sempre pubblico. E alcuni decompilatori Solidity possono aiutarti a ottenere un indirizzo di contratto intelligente e il codice Solidity. L'esposizione del codice sorgente rende questa funzionalità un vantaggio per gli aggressori. 

Piattaforme blockchain non evolute: Per uno sviluppatore, è un requisito fondamentale acquisire familiarità con la piattaforma di sviluppo. Esistono molte piattaforme blockchain sottosviluppate o nuove, quindi gli sviluppatori non possono sviluppare una conoscenza approfondita delle operazioni sulla blockchain. 

Questa incoerenza colpisce gli smart contract a causa della mancanza di sincronizzazione. I difetti della piattaforma blockchain rimangono inosservati a causa della sua continua evoluzione. 

Transazioni sconosciute: Nel primo punto abbiamo discusso dell'identità anonima; allo stesso modo, le transazioni su blockchain non sono divulgate. È impossibile tracciare le transazioni, portando a molte attività illegali. Poiché sono coinvolte transazioni finanziarie, qualsiasi problema di sicurezza può comportare enormi perdite finanziarie. 

SOLUZIONI PER LA SICUREZZA DEL CONTRATTO INTELLIGENTE

Ora, andando avanti nella sicurezza degli smart contract, possiamo confrontare tutti i passaggi necessari per mettere in sicurezza uno smart contract con la sua evoluzione. Come nello sviluppo software tradizionale, tendiamo a seguire un ciclo di vita di sviluppo; allo stesso modo, possiamo classificare il ciclo di vita dello sviluppo del contratto. 

Il ciclo di vita dello sviluppo del contratto intelligente può essere suddiviso in quattro fasi: progettazione della sicurezza, implementazione della sicurezza, test prima dell'implementazione, monitoraggio e analisi.

panoramica dei temi di sicurezza da una prospettiva del ciclo di vita degli smart contract
panoramica dei temi di sicurezza dal punto di vista del ciclo di vita degli smart contract

1. PROGETTAZIONE DI SICUREZZA 

Questa prima fase racchiude tre temi; principio di progettazione, modello di progettazione e modellazione di sicurezza (come mostrato nella figura sopra). L'obiettivo principale di questi temi è sulla progettazione del contratto e su come evitare le minacce alla sicurezza. 

PRINCIPIO DI PROGETTAZIONE

I principi di progettazione sono idee fondamentali per la progettazione di contratti intelligenti sicuri sulla blockchain. Esistono cinque principi di progettazione essenziali per i contratti: prepararsi al fallimento, implementare con attenzione, mantenere i contratti semplici, rimanere aggiornati e conoscere le proprietà blockchain. 

Ora, potresti pensare, come aiuteranno a creare un contratto intelligente sicuro? 

Prendiamo uno qualsiasi dei principi di cui sopra, diciamo "Prepararsi per il fallimento", questo significa che in assenza di schemi di patch, il contratto dovrebbe essere in grado di rispondere ai bug. E se si verifica un attacco, il contratto dovrebbe essere in grado di sospendere per evitare ulteriori perdite. 

DESIGN PATTERN

Nella progettazione del software, i modelli di progettazione sono le soluzioni che possono essere riutilizzate per risolvere un problema. 

Se prendiamo un esempio di Ethereum, ci sono sei modelli di sicurezza; Check-effects-interaction, arresto di emergenza, Mutex, Speed ​​bump, Rate limit e Balance limit.  

Possiamo utilizzare questi modelli di sicurezza per affrontare i problemi di sicurezza nella blockchain come la vulnerabilità di rientro può essere gestita dal modello Mutex. 

Allo stesso tempo, il modello di arresto di emergenza può aiutarci a terminare l'esecuzione di un contratto se viene colpito da una vulnerabilità. 

MODELLAZIONE DI SICUREZZA

Potrebbe esserci una differenza tra il codice sviluppato e il codice richiesto per i contratti poiché Solidity viene utilizzato per creare contratti; questo linguaggio soddisfa la completezza di Turing, ma è soggetto a errori. 

La figura sopra mostra che questa sottofase copre due fasi; progettazione e implementazione della sicurezza. 

La modellazione della sicurezza è direttamente correlata alla logica aziendale; poiché le specifiche sono derivate dal business, la logica può essere classificata in base a una semantica priva di errori. Questo aiuta in seguito durante il processo di verifica formale eseguito per mitigare le vulnerabilità. 

2. ATTUAZIONE DELLA SICUREZZA

In questa sezione tratteremo due dei tre temi; sicurezza

Modello di sviluppo e sicurezza, poiché abbiamo già trattato la modellazione della sicurezza nell'ultima fase.

SVILUPPO DELLA SICUREZZA

In questa sezione viene illustrato come evitare le vulnerabilità durante il processo di implementazione del contratto. 

Sulla piattaforma Ethereum, abbiamo EIP di sicurezza (proposte di miglioramento di Ethereum) – raccomandazioni per combattere i problemi di sicurezza sul Ethereum piattaforma. Pertanto, questi EIP sono degni di nota per l'implementazione sicura di contratti intelligenti. 

MODELLO DI SICUREZZA

I modelli fungono da origine per i nuovi documenti. I modelli di smart contract con parametri operativi collegano un accordo legale a un codice eseguibile. 

Nel contesto della sicurezza dei contratti intelligenti, è possibile estrarre i modelli di contratto standard con parametri di sicurezza aggiornati, come modelli di sicurezza e librerie di sicurezza. Ciò ridurrà la possibilità di errori nella codifica manuale. 

3. TEST PRIMA DELLA DISTRIBUZIONE

Anche in questo caso, il requisito di questa fase nasce da uno dei vantaggi degli smart contract: "Immutabilità". 

Una volta creati gli smart contract, non c'è modo di modificarli. Pertanto, è obbligatorio eseguire test sufficienti per garantire la sicurezza degli smart contract prima dell'implementazione.

Questa fase copre tre parametri di sicurezza da seguire prima di implementare uno smart contract; Verifica formale rigorosa, strumenti di analisi del codice e audit di sicurezza. 

VERIFICA FORMALE RIGOROSA

La verifica formale è un processo ben definito che sfrutta il ragionamento matematico e le prove matematiche per verificare le proprietà desiderate del sistema. 

Possiamo eseguire verifiche formali sui contratti intelligenti poiché il programma contrattuale è breve e limitato nel tempo. Esistono diversi modi per formalizzare e verificare rigidamente gli smart contract; alcuni si basano sul codice del contratto e altri sulla semantica della macchina virtuale di Ethereum (EVM). 

STRUMENTI DI ANALISI DEL CODICE

L'analisi del codice viene eseguita senza eseguire i programmi. A tale scopo, utilizziamo alcuni strumenti chiamati Static Application Security Testing (SAST) Tools. Questi strumenti aiutano nella scoperta di falle di sicurezza nel codice sorgente. 

L'analisi effettuata da questi strumenti può comprendere uno o tutti i seguenti passaggi:

(I) Crea una rappresentazione intermedia (IR), ad esempio un albero della sintassi astratta (AST), per un'analisi dettagliata. 

(Ii) Completare l'IR con informazioni sufficienti ottenute dal controllo statico o dall'analisi del flusso di dati e dalle tecniche di verifica formale; queste tecniche includono: esecuzione simbolica, interpretazione astratta e controllo del modello simbolico. 

Ma quali sono gli strumenti che si possono utilizzare per effettuare l'analisi del codice su Smart Contract? 

Sebbene ci siano molti strumenti che è possibile utilizzare per eseguire l'analisi della sicurezza, Oyente è il più popolare. 

Ascoltatore può essere utilizzato per eseguire analisi di sicurezza per i contratti intelligenti EVM. Usa "l'esecuzione simbolica" per scoprire quattro bug comuni; dipendenza dall'ordine delle transazioni, dal timestamp, eccezioni gestite in modo errato e rientranza. 

L'architettura di Oyente
L'architettura di Oyente

L'architettura di Oyente mostra che accetta bytecode e presenta lo stato globale di Ethereum come input. 

Uno degli aspetti positivi di Oyente è che rileva solo le vulnerabilità della sicurezza. La tecnica di esecuzione simbolica utilizzata da Oyente non esplora tutti i percorsi possibili. Pertanto, sorge la necessità di altri strumenti come la sicurezza e gli audit manuali. 

VERIFICA DI SICUREZZA

Inizieremo questa sezione in cui abbiamo lasciato l'ultima; gli audit manuali. 

Ma prima, capiamo la necessità di un audit di sicurezza; che si tratti dell'hacking di Ronin Network o dell'hacking di Poly Network, il codice non verificato è il più vulnerabile a hack e exploit. 

Portano a enormi perdite finanziarie. Non solo l'audit del progetto Web3, in realtà, ma anche l'audit da parte di professionisti esperti è importante in quanto dipende dalla capacità professionale degli auditor di eseguire gli audit di sicurezza. 

Ancora una volta, dove trovare quegli esperti professionisti? Non devi andare da nessuna parte alla ricerca di revisori affidabili; clic https://t.me/quillhash per entrare in contatto con uno di loro! 

Un audit smart contract ideale è una combinazione di analisi del codice manuale e automatizzata; come abbiamo discusso nel punto precedente, anche se dopo l'analisi automatizzata del codice da strumenti come Oyente, esiste la possibilità di vulnerabilità non identificate nel contratto. 

Pertanto, per ovviare a ciò, i revisori della sicurezza possono analizzare manualmente ogni riga di codice e testarla contro potenziali vulnerabilità. 

4. MONITORAGGIO E ANALISI

Ricordi il principio in continua evoluzione della Blockchain di cui abbiamo discusso inizialmente? 

Questa fase si basa sullo stesso tema; una volta che il contratto è stato distribuito ed eseguito, alcune vulnerabilità che sono state lasciate inosservate nelle fasi precedenti possono verificarsi a causa di nuove versioni e aggiornamenti frequenti che in seguito rendono i contratti meno efficienti. 

Possiamo effettuare; bug bounty, monitoraggio della sicurezza e analisi post hoc per superare queste barriere. 

BUG TAGLIA

Poiché stiamo considerando i problemi di sicurezza post-distribuzione con i contratti, le ricompense dei bug possono essere utili. La tecnica di verifica formale discussa in precedenza è una tecnica di analisi statica. Bug bounty, d'altra parte, è una tecnica di analisi dinamica. 

Il concetto alla base di Bug Bounty è semplice; gli hacker scoprono bug e, in cambio, vengono pagati con alcune ricompense finanziarie. Sembra una situazione vantaggiosa per tutti, giusto? Ma non lo è!

Il problema qui è; che il valore dei bug potrebbe essere superiore alla taglia nei mercati grigi e la possibilità è che gli hacker possano sfruttare o vendere i bug per ottenere un prezzo elevato. 

A volte, i proprietari del progetto negano di pagare la taglia a meno che i bug non siano confermati; gli hacker si preoccupano anche dell'incertezza dei pagamenti dopo la rivelazione dei bug. 

Per ovviare a questo, è stato proposto un framework di bug bounty, noto come "Hydra". 

Hydra utilizza una tecnologia di exploit gap denominata programmazione N-of-N-version (NNVP) come sistema di ricompense dei bug sulla blockchain. 

La struttura Hydra con teste
La struttura Hydra con teste

MONITORAGGIO DELLA SICUREZZA

Possiamo utilizzare l'analisi statica del codice per scoprire le vulnerabilità della sicurezza, ma questo metodo viene utilizzato prima di distribuire gli smart contract. 

Ma per trovare bug e potenziali vulnerabilità in tempo reale, dobbiamo monitorare e analizzare i dati delle transazioni sulla blockchain. 

Queste vulnerabilità scoperte dall'analisi dei contratti intelligenti possono essere chiamate vulnerabilità di traccia. Tre tipi di contratto sono al centro di queste vulnerabilità di traccia; 

(I) Contratti avidi (contratti che rimangono vivi e bloccano Ether a tempo indeterminato).

(Ii) Contratti prodighi (contratti che perdono fondi incautamente a utenti arbitrari) e,

(III) Contratti suicidi (contratti che qualsiasi utente arbitrario può uccidere). 

Anche una nozione di oggetti ECF (Efficacely Callback Free) è stata proposta per identificare le vulnerabilità monitorando gli oggetti ECF. 

In tale contesto è stato presentato anche un algoritmo online; ha aiutato a scoprire vulnerabilità sconosciute. Nella stessa proposta, è stato suggerito di eseguire contratti intelligenti su Testnet prima di implementarli sulla Mainnet. 

Monitoring UI è una piattaforma di monitoraggio Blockchain che utilizza React.js. Questa piattaforma può essere utilizzata per effettuare transazioni, mantenere un controllo sugli asset e informarsi sullo stato della Blockchain. 

Non possiamo fare affidamento su questa piattaforma per il monitoraggio sicuro degli smart contract, ma poiché è possibile trovare la maggior parte dei dati delle transazioni relativi agli smart contract, possiamo rilevare gli exploit in tempo reale monitorando il trasferimento di asset. 

ANALISI POST HOC

Post Hoc Analysis utilizza i dati delle transazioni blockchain per analizzare, scoprire o tracciare potenziali minacce sulla blockchain in parole povere. 

Se discutiamo l'analisi del grafico, è stata progettata come un approccio per raccogliere tutti i dati delle transazioni (questo includeva le transazioni interne dai contratti intelligenti). 

Con l'aiuto di questi dati, hanno preparato tre grafici; 

(I) Un grafico del flusso di denaro (MFG)

(Ii) Grafico di creazione del contratto (CCG) e,

(III) Grafico di invocazione del contratto (CIG)

Sulla base dell'analisi dei grafici sopra citati, sono state proposte molte nuove scoperte, come soluzioni ai problemi di sicurezza tra più contratti che interagiscono tra loro. 

Una panoramica dell'analisi del grafico
Una panoramica dell'analisi del grafico

Lo schema Ponzi è uno dei classici schemi di frode attraverso il quale è possibile acquisire un gran numero di fondi e influenzare la blockchain nativa. Per combattere questa frode, è stato proposto un meccanismo di classificazione per rilevare gli schemi Ponzi su Ethereum. 

Questo meccanismo utilizza il data mining e l'apprendimento automatico per rilevare i contratti Ponzi. Questo processo funziona anche se il codice sorgente degli smart contract non è disponibile. 

Il quadro del rilevamento intelligente dello schema Ponzi
Il quadro del rilevamento intelligente dello schema Ponzi

Key Takeaway

Questo è tutto, sì, per ora è tutto!

Se sei stato con noi fino ad ora, te ne saremmo grati. Senza allungare di più, in una nota conclusiva, diremmo solo che l'ecosistema degli smart contract è decentralizzato, ed è difficile correggere i bug. 

Abbiamo cercato di abbattere la sicurezza degli smart contract dal punto di vista del ciclo di vita del software. 

Abbiamo prima discusso le caratteristiche chiave della blockchain responsabili problemi di sicurezza nei contratti intelligenti. Abbiamo classificato le soluzioni di sicurezza per gli smart contract in quattro fasi. Ci auguriamo di portare più post per tenerti al passo con le sfide nel crescente ecosistema Web3. 

Cosa ne pensi di questo agile approccio SDLC per la sicurezza dei contratti intelligenti? Condividi i tuoi pensieri nei commenti qui sotto!

46 Visualizzazioni

Il post Smart Contract Security: un approccio SDLC agile  apparve prima Blog.quillhash.

Timestamp:

Di più da quillhash