Il prototipo Leios di Cardano corregge un attacco di temporizzazione negli annunci degli Endorser Block
Gli sviluppatori di Cardano hanno corretto un difetto di temporizzazione nel prototipo Leios che poteva causare la disconnessione reciproca tra nodi onesti. Il problema riguardava la logica di annuncio degli Endorser Block del prototipo e non ha mai fatto parte dell'attuale protocollo della mainnet di Cardano.
By SongMarketCap
Il prototipo Leios di Cardano ha ricevuto una correzione di rete dopo che gli sviluppatori hanno individuato un attacco di temporizzazione che coinvolgeva gli annunci degli Endorser Block. In condizioni specifiche, uno stake pool con credenziali operative valide poteva inviare un annuncio accuratamente temporizzato che induceva un nodo onesto a disconnettersi da un altro peer onesto la cui visione della catena era leggermente in ritardo.
La correzione è stata unita nel branch leios-prototype di Ouroboros Consensus il 18 agosto ed è stata messa in evidenza dal team Consensus di Intersect il 25 agosto. Blink Labs ha successivamente implementato la protezione corrispondente in Dingo.
La differenza di temporizzazione di Leios poteva disconnettere peer onesti
Ouroboros Leios è l'architettura di scalabilità pianificata di Cardano, progettata per aumentare il throughput delle transazioni mantenendo le proprietà di sicurezza del protocollo di consenso sottostante.
Parte del design utilizza gli Endorser Block, che trasportano dati di transazione aggiuntivi insieme ai blocchi di ranking di Cardano. I nodi possono annunciare un Endorser Block prima che arrivino tutti i dati del blocco, aiutando le informazioni a propagarsi nella rete in modo più efficiente.
Il problema individuato riguardava l'Operational Certificate Issue Number, ossia OCIN, associato a tali annunci.
Due nodi onesti possono temporaneamente avere punte immutabili della catena diverse. Un nodo più avanzato può già considerare revocato un OCIN più vecchio, mentre un peer a monte che non ha ancora raggiunto lo stesso punto immutabile può ancora legittimamente considerarlo valido.
La precedente logica del prototipo poteva interpretare un annuncio che usava quell'OCIN più vecchio come comportamento non valido e disconnettere il peer a monte.
Il problema originale su GitHub descrive come uno stake pool attaccante potesse sfruttare quella differenza di temporizzazione inviando un annuncio poco prima che il suo OCIN diventasse immutabile. Poiché il pool poteva incrementare il proprio OCIN quando inseriva una nuova intestazione sulla catena, la sequenza poteva essere usata per innescare disconnessioni tra nodi onesti.
Il problema affermava che il comportamento doveva essere corretto prima che la logica di annuncio potesse essere considerata idonea per la mainnet.
La nuova logica di Leios impedisce la disconnessione
La correzione unita modifica il modo in cui un nodo Leios reagisce quando riceve un annuncio che usa un OCIN che la sua stessa punta immutabile considera già revocato.
Invece di terminare la connessione con il peer, il nodo accetta il messaggio a livello di protocollo di rete. Poiché il nodo ricevente sa già che l'OCIN è obsoleto, l'annuncio viene ignorato piuttosto che elaborato o inoltrato oltre.
La modifica consente a un peer onesto di restare temporaneamente indietro senza essere classificato come malevolo.
Gli sviluppatori hanno anche documentato un caso residuo più circoscritto che coinvolge chiavi KES storiche trapelate. Una chiave trapelata potrebbe ancora essere usata per inviare un piccolo numero di ulteriori falsi annunci di Endorser Block ai peer immediatamente a valle dopo la revoca.
Tali annunci non provocano disconnessioni e non vengono propagati oltre. La discussione di sviluppo descrive il costo di elaborazione aggiuntivo come minimo e il comportamento residuo come indesiderabile, ma non un blocco per l'attuale prototipo.
Non ci sono prove da fonti primarie che questo vettore di attacco abbia interessato la mainnet di Cardano. Il meccanismo di annuncio interessato appartiene al prototipo Leios e la correzione è stata unita nel suo branch di sviluppo dedicato, non in quello di consenso di produzione.
Dingo adotta la stessa protezione di Leios
Blink Labs ha applicato anche il modello di gestione degli OCIN obsoleti a Dingo, la sua implementazione indipendente del nodo Cardano.
L'issue di Dingo è stata aperta il 26 agosto dopo che gli sviluppatori hanno individuato che un annuncio correttamente firmato ma obsoleto poteva ancora essere registrato e inoltrato. La pull request #3563 è stata unita il 27 agosto.
Nell'implementazione aggiornata, gli annunci obsoleti o provenienti da emittenti sconosciuti vengono accettati senza chiudere la connessione con il peer ma non vengono registrati, elaborati o inoltrati. Gli annunci recenti proseguono attraverso l'elaborazione normale, con test di regressione che coprono diversi stati dell'OCIN.
L'aggiornamento di sviluppo di agosto di Intersect ha anche riportato un supporto ampliato di db-analyser per le catene Leios. Lo strumento ora può rigiocare i dati della catena Leios e misurare le transazioni degli Endorser Block certificate, la loro dimensione e il tempo necessario per leggerle e applicarle. Ciò estende i test oltre il throughput includendo i costi di elaborazione del ledger e il comportamento delle risorse.
La correzione per gli annunci obsoleti ora copre due implementazioni. Ouroboros Consensus ha modificato il comportamento nel prototipo originale di Leios il 18 agosto, mentre Dingo ha adottato la corrispondente implementazione nove giorni dopo, allineando il modo in cui entrambe le basi di codice gestiscono lo stesso caso limite di rete prima che Leios raggiunga la distribuzione in produzione.