L’importanza del DevSecOps nella Blockchain
“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, modello che comprende l’intera cultura e l’approccio alla sicurezza delle applicazioni. DevSecOps sta per sviluppo, sicurezza e operations e il suo obiettivo è incorporare una mentalità orientata alla sicurezza in tutti gli aspetti della tecnologia e dell’infrastruttura informatica”.
Inizia così la riflessione di Kevin Jones, Senior Product Manager per NGINX e F5, sul perché oggi sia più che mai fondamentale implementare una cultura DevSecOps anche guardando a un fenomeno in grande ascesa come 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 che molti definiscono web3.
Ma esattamente cosa sono il web3 e un’applicazione decentralizzata? Il termine web3 comprende vari concetti che si concentrano sugli aspetti dell’architettura delle applicazioni e dell’esperienza utente. Jones ne ha individuati cinque:
- 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 due aspetti particolarmente importanti per la blockchain. Spesso gli individui che gestiscono questi conti sono bersaglio di attacchi o ricevono troppa credibilità e possono agire in modo illecito.
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 su 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: ciò permette l’attaccante di prelevare 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 aumentare la sicurezza?
Jones conclude la sua riflessione suggerendo cinque strade da percorrere per aumentare la sicurezza:
- 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 e aiutano ad infondere fiducia nel codice e negli utenti dell’applicazione. MythX e Slither sono 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.
- Adottare 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.