La tecnologia blockchain ha consentito enormi e dirompenti innovazioni in molti settori economici differenti e ancora tanto ha da portare, ma la sua architettura presenta ancora alcune importanti vulnerabilità che è importante conoscere per utilizzarle in sicurezza.
Le blockchain sono composte da diversi strati, detti anche livelli o layer, e si distinguono in livelli dell’infrastruttura, del protocollo (detto anche livello di consenso), dei dati, della rete e dell’applicazione sono esempi tipici di questi livelli.
In un precedente approfondimento abbiamo affrontato le più comuni e pericolose vulnerabilità a livello di Protocollo (Se te lo sei perso, corri subito a recuperarlo a questo link: Quali sono gli attacchi più frequenti al livello di protocollo delle blockchain)
Table of Contents
Quali sono le principali vulnerabilità presenti a livello di rete della blockchain
Il livello di rete è vulnerabile agli attacchi di vari problemi di sicurezza della blockchain a causa della sua posizione. I principali rischi sono:
#1 – Sybil Attack
Un operatore di nodo malintenzionato può utilizzare questa grave vulnerabilità per prendere il controllo del livello di rete di una blockchain.
Gli attacchi sibillini possono verificarsi quando un avversario crea e mantiene il controllo su un gran numero di account o nodi in una rete. Questo può portare a un denial of service o eventualmente a un attacco del 51%.
Per proteggersi dagli attacchi Sybil è sufficiente verificare che nessun validatore con un unico indirizzo IP gestisca più di un nodo all’interno di una rete blockchain.
Per una guida completa ai Sybil attack, come funzionano e come proteggersi, corri a leggere il nostro articolo:
Cosa sono i Sybil Attack contro le blockchain e come proteggersi
#2 – Eclipse Attack
Tramite un Eclipse attack, un attaccante può sfruttare questa gravissima falla di sicurezza per influenzare i nodi di una blockchain uno dopo l’altro.
L’hacker disconnetterebbe un nodo dalla rete e poi lo collegherebbe a una serie di altri nodi potenzialmente dannosi. Di conseguenza, l’integrità dei dati in entrata e in uscita potrebbe essere a rischio.
Aumentando la quantità di connessioni a un nodo, il gruppo responsabile di una blockchain può evitare che ciò accada. Inoltre, può eseguire test di penetrazione per garantire il massimo livello di sicurezza possibile.
#3 – Eavesdropping Attack (Attacco di intercettazione)
L’Eavesdropping Attack è un attacco al livello di rete con un livello di gravità basso. L’intercettazione di una rete durante un attacco è un modo per scoprire informazioni potenzialmente sensibili. In seguito, l’aggressore può abusare della rete utilizzando le informazioni importanti per il suo piano.
Gli attacchi di intercettazione dovrebbero essere risolti utilizzando il metodo suggerito, ovvero adottando un modello di crittografia con un elevato livello di sicurezza.
#4 – Denial Of Service Attack (Attacchi che negano l’accesso a un servizio)
Un attacco di tipo Denial of Service è considerato di gravità lieve perché può solo costringere una blockchain a funzionare temporaneamente in modo inefficiente. Un avversario può iniziare un attacco di negazione del servizio (DoS) inondando il bersaglio con un numero eccessivo di richieste.A causa di ciò, la rete non sarà disponibile per l’uso.
Il primo consiglio per garantire la sicurezza di una rete blockchain è quello di espandere il numero di nodi situati in diverse località. In questo modo si limiterà la quantità di spazio disponibile nella coda di memoria.
#5 – BGP Hijack Attack
Sul livello di rete di una blockchain, esiste il potenziale per una vulnerabilità di sicurezza con un livello di gravità basso. Quando il Border Gateway Protocol è stato effettivamente violato, si verifica questo tipo di attacco. In questo modo, l’attaccante modificherà le tabelle di routing per assumere il controllo degli indirizzi IP di una rete.Un semplice aumento del numero di nodi distribuiti su più aree può bloccare il BGP.
#6 – Alien Attack
Si tratta di un problema di bassa gravità che può verificarsi anche come risultato del normale funzionamento del livello peer to peer (P2P) di una blockchain.
All’interno di un ecosistema blockchain di grandi dimensioni, i singoli nodi possono avere difficoltà a distinguersi l’uno dall’altro. Poiché due nodi distinti possono contemporaneamente attivare un contatto errato, ciò può provocare un’invasione di extraterrestri.
Un alien attack riduce le prestazioni del nodo attaccato all’interno della rete, rendendolo infine inutilizzabile. L’implementazione di meccanismi di sicurezza ID, come ChainID, può impedire che ciò accada.
#7 – Timejacking
Il Timejacking una vulnerabilità estremamente significativa che può portare i nodi a ricevere informazioni errate. Quando un avversario corrompe il timestamp di un nodo per disconnetterlo dai suoi pari onesti, questo è un esempio di un classico attacco di timejacking. In seguito, utilizza il timestamp falsificato per stabilire una connessione tra il nodo e una blockchain alternativa discutibile.
Limitare gli intervalli di tempo accettati e utilizzare l’ora di sistema fornita dal nodo sono due delle best practice più comuni e ampiamente raccomandate per risolvere il timejacking.
Quali sono le principali vulnerabilità presenti a livello di dai della blockchain
Le seguenti vulnerabilità della tecnologia blockchain consentono ad attori malintenzionati di violare l’integrità del livello dati di una blockchain:
#1 – Cryptographic Attacks (Attacchi ai sistemi crittografici)
Queste vulnerabilità sono della massima gravità, poiché consentono all’avversario di prendere il controllo del meccanismo di gestione delle chiavi nel livello dati.
Esistono diverse varietà di attacchi crittografici, tra cui Brute Force, Man in the Middle e Replay Accuser.
Evitare l’uso di librerie di crittografia casuali o sconosciute è la principale azione consigliata per neutralizzare questo tipo di attacco.
#2 – Private Kays Prediction (Previsione delle chiavi private)
Se le chiavi private di una blockchain possono essere previste con precisione, il livello dati della blockchain potrebbe trovarsi in una posizione molto precaria.
Utilizzando le proprie chiavi private, i conti firmano le transazioni. Tuttavia, una volta che le chiavi private possono essere indovinate senza grandi sforzi, i conti non sono più al sicuro.
L’incorporazione di un generatore di numeri pseudo-random crittografico che abbia superato più attacchi differenti è un modo in cui la rete potrebbe proteggersi dalla vulnerabilità della previsione delle chiavi private.
#3 – Length Extension Attack
Nonostante l’attacco di estensione della lunghezza non sia particolarmente grave, è necessario porvi rimedio.
Quando un avversario è in grado di calcolare correttamente la lunghezza di un hash, può lanciare questo tipo di attacco. In seguito, si dovrebbe offrire il messaggio come autentico.
La struttura Merkle-Damgard è un’utile strategia preventiva che dovrebbe essere evitata quando possibile per le funzioni hash.
#4 – Transaction Replay Attack
Il Transaction Replay Attack è un attacco grave che dà all’avversario la possibilità di spendere due volte le proprie risorse.
Una certa quantità di criptovaluea viene spesso spesa nel corso di una transazione. Un attacco replay di transazione, invece, ha luogo quando una parte paga la stessa quantità di criptovaluta più di una volta.
L’uso efficiente dei nonces è la soluzione di sicurezza della blockchain necessaria in questo scenario.
#5 – Transaction Malleability Attack
Le blockchain che fanno uso delle firme delle transazioni sono probabilmente vittime di questo attacco, che sfrutta una vulnerabilità di importanza critica.
Un avversario esegue un attacco di malleabilità per alterare il proprio ID prima della conferma del blocco. In questo modo è in grado di effettuare diversi depositi e persino prelievi. Nella maggior parte dei casi, è possibile risalire alla libreria delle firme.
Per garantire l’integrità della blockchain, è necessario verificare regolarmente che la libreria di firme utilizzata sia resistente.
#6 – Time-Locked Transaction Attack
L’hacker è in grado di effettuare solo pochi exploit importanti, il che contribuisce alla scarsa gravità di questo attacco.
Quando una parte ha bloccato alcuni token per un determinato periodo di tempo, può avvenire la manipolazione delle transazioni bloccate a tempo. Il passo successivo è quello di cercare di spendere da questi token prima del periodo di rilascio dei token. È possibile che il destinatario debba ancora ricevere i fondi.
È possibile risolvere questo problema dal punto di vista della sicurezza della blockchain effettuando un’analisi sulla rete per determinare se i token in questione sono bloccati o meno.
#7 – False Top-Up Attack
Exploit come i falsi attacchi di ricarica sono di notevole importanza perché hanno il potenziale di esaurire tutto il denaro in una blockchain.
Se un nemico riesce a effettuare un trasferimento non veritiero, è in grado di lanciare un attacco di ricarica fraudolenta. Sorprendentemente, il trasferimento fraudolento apparirà come una transazione di ricarica in tempo reale.
La soluzione di sicurezza consiste nel confermare i pagamenti su una blockchain dopo un numero predeterminato di blocchi.
#8 – Hash Collision Attack (Attacco tramite collisione di hash)
Attacchi di questo tipo rappresentano una minaccia significativa per il livello dei dati di una blockchain e dovrebbero essere evitati a tutti i costi.Un attacco di collisione è un tipo di attacco comune che si verifica quando due input distinti hanno lo stesso valore hash. La collisione può essere il risultato di una coincidenza spontanea o intenzionale.
La tecnica proposta per risolvere questo problema consiste nell’evitare le vulnerabilità in tutti gli algoritmi coperti dalla struttura Merkle-Damgard. Si raccomanda invece l’uso di SHA-3 o SHA-256, laddove possibile.
#9 – Rug Pull Attack
Gli attacchi Rug Pull sono forse tra i tipi di attacco più letali esistenti nel Web3. Gli aggressori rilasciano spesso un token appariscente, ne diffondono la notizia e invitano le persone ad acquistarlo.
Una volta raggiunto un numero considerevole di depositi totali, gli aggressori estrarranno illegalmente tutta la liquidità, con il risultato che i token non avranno alcun valore. Gli investitori possono evitare questa situazione assicurandosi che lo smart contract alla base del progetto sia stato esaminato e convalidato da un revisore terzo esperto.
Quali sono le principali vulnerabilità presenti nel livello di infrastruttura della blockchain
Al fine di identificare se una blockchain sia o meno vulnerabile alle seguenti falle di sicurezza della blockchain, i gruppi di malintenzionati spesso indagano sul livello di infrastruttura della blockchain.
#1 – Divulgazione di informazioni private
La minaccia rappresentata da una fuga di informazioni, nota anche come attacco di intercettazione (eavesdropping attack), è piuttosto lieve. Un avversario può effettuare intercettazioni su una rete per ottenere informazioni riservate monitorando il sistema.
Dopo aver estratto i dati sensibili, utilizzerebbe le specifiche dei dati privati per violare qualsiasi componente della rete a cui potrebbe accedere. L’utilizzo di tecniche di crittografia con un livello di forza più elevato è la migliore strategia suggerita per prevenire le intercettazioni.
Una verifica del protocollo blockchain può aiutare a scoprire tempestivamente le vulnerabilità alle intercettazioni e a risolverle.
#2 – Denial of Service Attack (DoS)
L’impatto di un attacco di negazione del servizio è piuttosto basso. Quando gli aggressori inondano i nodi principali di una rete con un numero eccessivo di richieste, è praticamente inevitabile che si verifichi un attacco di negazione del servizio. A causa della straordinaria quantità di richieste, il nodo rischia di corrompersi.
Questa falla nella sicurezza della blockchain può essere risolta impedendo che parametri anomali causino la mancata risposta dei nodi.
#3 – Cross-Domain Phishing Attacks
Poiché l’attaccante può sfruttare solo un utente ingenuo e non la blockchain stessa, questa vulnerabilità è classificata come di bassa gravità.
Gli attacchi di phishing si verificano quando l’aggressore usa l’inganno per convincere la vittima a cliccare su un link che porta a un sito web dannoso. L’aggressore utilizza poi questa azione per rubare le criptovalute della vittima.
L’impiego di un software di rilevamento di link dannosi per impedire ai nodi di onorare l’accesso a domini incrociati è una soluzione per il problema di sicurezza della blockchain che è stato identificato.
#4 – Selfish mining
Un avversario può potenzialmente trarre un vantaggio monetario dallo sfruttamento di questa vulnerabilità e, di conseguenza, ottenere il controllo della blockchain principale.
Il mining fatto in modo egoistico si verifica quando un attaccante esegue un fork della rete ed estrae blocchi senza annunciare la propria attività alla blockchain principale. Dopo la trasmissione, il fork ha la possibilità di assumere il controllo della catena principale.
Quando i validatori disonesti possono essere rimossi dalla rete in modo tempestivo, il selfish mining può essere ridotto.
#5 – Bribery Attack (Attacco tramite tangenti)
L’attacco tramite tangenti è piuttosto serio e non deve essere preso alla leggera. Un attacco di corruzione è uno schema in cui un validatore incentiva i suoi pari a favorire una transazione non valida come una legittima. Questo favoritismo di una transazione non valida rispetto a una valida non è etico.
Uno dei modi più pratici che possono essere implementati sulla blockchain per affrontare questa vulnerabilità è quello di esonerare tali validatori dalle loro responsabilità. In alternativa, si raccomanda di passare da PoW a PoS.
#6 – Block Withholding Attack
All’inizio potrebbe non sembrare un gran problema, ma dopo alcuni casi potrebbe diventare piuttosto serio.
Il nemico si unisce a un pool di mining ma non condivide i blocchi che ha estratto con il pool. Di conseguenza, si verificheranno discrepanze in tutta la rete.
Per risolvere questa falla, la sicurezza della blockchain dovrebbe essere rafforzata utilizzando schemi di impegno crittografico più robusti. Questi schemi riveleranno i validatori malintenzionati.
#7 – Pool Hopping Attack
Il danno causato dall’attacco pool hopping è piuttosto limitato.
L’integrità di una blockchain potrebbe essere compromessa da un attacco noto come pool hopping. In questo scenario, un minatore estrae blocchi in modo selettivo solo quando il tasso di hash è particolarmente elevato.
Per rafforzare la sicurezza della blockchain ed eliminare questa vulnerabilità, è necessario utilizzare implementazioni più recenti che rendano impossibile prevedere i tassi di hash futuri.
#8 – Block Discarding Attack (BCD)
Poiché gli attacchi BCD non hanno alcun effetto percepibile sulla blockchain stessa, non sono considerati un grave problema di sicurezza.
Gli aggressori devono controllare un quorum di un numero significativo di nodi per portare a termine l’attacco di block-discarding. Essi approveranno solo i propri blocchi e rifiuteranno i blocchi inviati dai nodi onesti.
Avere una collezione diversificata di validatori è la tecnica più efficace per porre fine a questo fenomeno nel mondo reale. Per questo motivo, la supremazia sarà molto difficile da raggiungere.
#9 – Fork After Withholding Attack
Il livello infrastrutturale di un sistema blockchain è vulnerabile a questa feroce forma di attacco. Si tratta di un tipo avanzato di problema di sicurezza della blockchain, una forma di Block-Withholding-Attack che ha raggiunto questo livello di sofisticazione. A differenza del BWA, ha il potenziale di far guadagnare più soldi all’avversario del pool.
Gli amministratori del pool hanno la possibilità di offrire valori dei beacon regolarmente aggiornati grazie alla soluzione blockchain.
#10 – Uncle-Block Attack
L’attacco degli uncle-block può essere considerato di intensità moderata. Un’altra falla nella sicurezza della blockchain che amplia la funzionalità dell’attacco BW è nota come attacco Uncle-block. Quando un attaccante trattiene molti blocchi collegati tra loro, l’attacco è considerato uno uncle-block piuttosto che un semplice blocco trattenuto.
Le soluzioni di cybersicurezza per il block-withholding e il fork-after-withholding sono applicabili anche in questa situazione.