A cura di Kevin Jones, Senior Product Manager per NGINX, F5
La sicurezza è sempre stata uno degli aspetti più importanti dell’informatica e oggi molte organizzazioni e i loro sviluppatori adottano una mentalità orientata alla sicurezza nella realizzazione delle applicazioni. Questi principi e azioni sono spesso descritti collettivamente come “DevSecOps”, che comprende l’intera cultura e l’approccio alla sicurezza delle applicazioni. DevSecOps sta per sviluppo, sicurezza e operations. L’obiettivo è incorporare una mentalità orientata alla sicurezza in tutti gli aspetti della tecnologia e dell’infrastruttura informatica.
Uno dei mercati più nuovi ed entusiasmanti dell’information technology è quello della blockchain, che si presenta come un gigantesco ecosistema di protocolli e applicazioni decentralizzate, che mirano a portarci in una versione aggiornata del web, quella che molti definiscono web3.
Che cos’è il web3 e che cos’è esattamente un’applicazione decentralizzata?
Il termine web3 comprende vari concetti che si concentrano sugli aspetti dell’architettura delle applicazioni e dell’esperienza utente:
- Decentralizzazione
- Apertura
- Immutabilità
- Programmabilità
- Trasparenza
Questi concetti fondamentali mirano a restituire agli utenti il controllo della propria identità utilizzando la crittografia a chiave pubblica e a far crescere l’adozione dell’economia peer-to-peer attraverso varie meccaniche e protocolli blockchain. Molte blockchain e i protocolli che le circondano possono elaborare transazioni avanzate e gestire lo stato utilizzando contratti intelligenti che vengono eseguiti all’interno di ambienti virtualizzati isolati.
Questi vengono poi sincronizzati tra tutti i nodi della rete attraverso un meccanismo chiamato algoritmo di consenso. Si tratta di un meccanismo che consente agli utenti o ai nodi di coordinarsi in un ambiente distribuito, per garantire che tutti i nodi del sistema possano concordare su un’unica source of truth, anche se alcuni agenti falliscono. Inoltre, molte blockchain operano in modo censorship-resistant, mantenendo i loro protocolli aperti e senza restrizioni.
Come si presenta la struttura?
L’architettura basata su blockchain presenta un rischio intrinseco, in quanto la colonna portante della rete è tipicamente alimentata da una criptovaluta digitale basata su token e solitamente ha un valore economico. Questi token sono conservati in indirizzi, generalmente memorizzati in conti di proprietà esterna o all’interno di smart contract. Inoltre, poiché la sicurezza è gestita anche grazie all’uso della crittografia a codice pubblico, ogni indirizzo della rete è soggetto ad attacchi.
Il bilancio di ciascun account è condiviso in rete su un registro, conosciuto come libro contabile pubblico, visibile a chiunque, il che lascia una finestra aperta agli hacker per colpire utenti o contatti specifici. Ciò rende la privacy e l’anonimato un aspetto particolarmente importante per la blockchain. Spesso gli individui, che gestiscono questi conti, sono bersaglio di attacchi o ricevono troppa credibilità e possono agire in modo illecito:
- Social Engineering
- Trust o codici di accesso gestiti in modo inadeguato
- Appropriazione indebita e frode
- Truffe
Inoltre, la portata tecnologica di queste varie tipologie di blockchain, protocolli e applicazioni decentralizzate è già ampia e in rapida crescita. È quindi importante riflettere sulle implicazioni per la sicurezza di questo ecosistema in veloce espansione. Tutto ciò che è costruito con un concetto essenziale di decentralizzazione si riferisce a uno scenario più ampio e quindi a numero maggiore di possibilità di attacchi che devono essere attentamente analizzati e messi in sicurezza.
Ecco alcuni punti che vale la pena considerare quando si verifica la sicurezza delle applicazioni decentralizzate e dell’infrastruttura tecnologica:
- Blockchain di livello 1 (Bitcoin ed Ethereum)
- Blockchain di livello 2 (Sidechain e Rollup)
- Smart contract
- Compilatori
- Portafogli software
- Portafogli hardware
- Client blockchain (minatori e validatori)
- Borse depositarie (centralizzate)
- Scambi DeFi (decentralizzati)
- Fornitori
- Mercati (NFT)
Attacchi frequenti negli smart contract
Quando si parla di DevSecOps nel ciclo di vita dello sviluppo di un’applicazione, in genere ci si riferisce allo sviluppo guidato dalla sicurezza. Questo è anche comunemente noto come l’atto di “spostare la sicurezza a sinistra” (shifting security left). È uno degli aspetti più importanti della cultura DevSecOps, perché inizia con gli sviluppatori che pensano alla sicurezza come codice. Poiché gli smart contract basati su blockchain possono immagazzinare valore e agire come una banca, ciò rende il codice al loro interno estremamente vulnerabile agli attacchi e deve essere scritto tenendo conto di una sicurezza rigorosa.
Abbiamo assistito a diversi hack che hanno preso di mira gli smart contract e le vulnerabilità sono solitamente incentrate sullo sfruttamento del codice. Una delle più grandi violazioni della storia ha avuto luogo l’anno scorso, quando Poly Network, un protocollo cross-chain, ha riferito che un aggressore ha violato uno smart contract, trasferendo l’equivalente di 610 milioni di dollari USA spostando vari beni ad indirizzi di portafogli esterni controllati dall’hacker.
Le vulnerabilità dello sviluppo di smart contract sono numerose, ma alcuni degli attacchi più frequenti sono:
- Underflow e Overflow – In genere si verificano quando le operazioni aritmetiche fanno sì che i numeri interi senza segno raggiungano la dimensione massima del byte, causando un “avvolgimento” del valore che potrebbe provocare un comportamento imprevisto nella logica aziendale dell’applicazione.
- Rientranza del contratto – L’azione di sfruttare un contratto rientrando più volte, dove l’attaccante di solito preleva più fondi di quelli consentiti.
- Transaction Front Running – Si riferisce al processo in cui qualcuno utilizza la tecnologia o il vantaggio di mercato per ottenere una conoscenza preventiva delle transazioni imminenti.
- Segreti mal gestiti.
- Controllo degli accessi mal implementato.
Cosa si può fare per spianare il terreno?
- Costruire una cultura orientata alla sicurezza, i concetti di DevSecOps sono un ottimo punto di partenza per le organizzazioni che vogliono costruire una cultura della sicurezza.
- Eseguire audit. Le verifiche conferiscono una nuova prospettiva sulla logica dell’applicazione e sui processi operativi, aiutano ad infondere fiducia nel codice e negli utenti dell’applicazione. MythX e Slither, ottimi strumenti per la verifica degli smart contract di Ethereum.
- Offrire bug bounty ed eseguire pen-test crowd sourced. La sicurezza basata sul crowd sourced è un metodo comprovato per contribuire a rafforzare la vostra impronta di sicurezza. Inserendo la vostra azienda in programmi di bug bounty ed eseguendo test di penetrazione delle vostre applicazioni e infrastrutture, sarà possibile essere all’avanguardia rispetto a vulnerabilità e hacking.
- Adottate una strategia open source. La trasparenza della vostra applicazione è importante in una tecnologia come la blockchain, perché consente ai partecipanti di scegliere in base alla verifica e agli audit del vostro codice. Inoltre, la presenza di componenti open source consente una maggiore responsabilità del progetto in un contesto di comunità.
- Implementare la firma multipla per le operazioni amministrative. L’implementazione di smart contract che adottano un’architettura a firma multipla per le funzioni amministrative come il trasferimento di proprietà, fondi e altre operazioni critiche fornirà un ulteriore livello di sicurezza alla vostra applicazione.
Conclusione
Blockchain, applicazioni decentralizzate e i vari protocolli che le circondano stanno crescendo rapidamente. Questi nuovi ed entusiasmanti modi di distribuire le applicazioni hanno il potenziale per sconvolgere molti settori diversi fra loro. Tuttavia, è fondamentale concentrarsi su una mentalità orientata alla sicurezza e implementare una cultura DevSecOps ove possibile.