Le prototype Leios de Cardano corrige une attaque temporelle dans les annonces d’Endorser Block

Les développeurs de Cardano ont corrigé une faille de synchronisation dans le prototype Leios qui pouvait amener des nœuds honnêtes à se déconnecter les uns des autres. Le problème touchait la logique d’annonce d’Endorser Block du prototype et n’a jamais fait partie du protocole actuel du mainnet Cardano.

By SongMarketCap

Cardano News - Le prototype Leios de Cardano corrige une attaque temporelle dans les annonces d’Endorser Block

Le prototype Leios de Cardano a reçu un correctif réseau après que les développeurs ont identifié une attaque temporelle impliquant des annonces d’Endorser Block. Dans des conditions spécifiques, un stake pool disposant d’identifiants opérationnels valides pouvait envoyer une annonce minutée qui amenait un nœud honnête à se déconnecter d’un autre pair honnête dont la vision de la chaîne était légèrement en retard.

Le correctif a été fusionné dans la branche leios-prototype d’Ouroboros Consensus le 18 août et mis en avant par l’équipe Consensus d’Intersect le 25 août. Blink Labs a ensuite implémenté la protection correspondante dans Dingo.

Une différence de synchronisation dans Leios pouvait déconnecter des pairs honnêtes

Ouroboros Leios est l’architecture d’évolutivité prévue pour Cardano, conçue pour augmenter le débit des transactions tout en conservant les propriétés de sécurité du protocole de consensus sous-jacent.

Une partie de la conception utilise des Endorser Blocks, qui transportent des données de transaction supplémentaires aux côtés des blocs de ranking de Cardano. Les nœuds peuvent annoncer un Endorser Block avant que les données complètes du bloc n’arrivent, ce qui aide l’information à se propager plus efficacement sur le réseau.

Le problème identifié impliquait le numéro d’émission du certificat opérationnel, ou OCIN, attaché à ces annonces.

Deux nœuds honnêtes peuvent temporairement avoir des extrémités immuables de chaîne différentes. Un nœud plus avancé peut déjà considérer un ancien OCIN comme révoqué, tandis qu’un pair en amont qui n’a pas encore atteint le même point immuable peut encore légitimement le considérer comme valide.

La logique précédente du prototype pouvait interpréter une annonce utilisant cet ancien OCIN comme un comportement invalide et déconnecter le pair en amont.

Le ticket GitHub initial décrit comment un stake pool attaquant pouvait exploiter cette différence de synchronisation en envoyant une annonce peu avant que son OCIN ne devienne immuable. Comme le pool pouvait incrémenter son OCIN en plaçant un nouveau header sur la chaîne, la séquence pouvait être utilisée pour déclencher des déconnexions entre nœuds honnêtes.

Le ticket précisait que ce comportement devait être corrigé avant que la logique d’annonce puisse être considérée comme adaptée au mainnet.

La nouvelle logique de Leios empêche la déconnexion

Le correctif fusionné modifie la manière dont un nœud Leios réagit lorsqu’il reçoit une annonce utilisant un OCIN que sa propre extrémité immuable considère déjà comme révoqué.

Au lieu de mettre fin à la connexion avec le pair, le nœud accepte le message au niveau du protocole réseau. Comme le nœud récepteur sait déjà que l’OCIN est périmé, l’annonce est ignorée plutôt que traitée ou relayée.

Ce changement permet à un pair honnête de prendre temporairement du retard sans être classé comme malveillant.

Les développeurs ont également documenté un cas résiduel plus étroit impliquant des clés KES historiques divulguées. Une clé divulguée pourrait encore être utilisée pour envoyer un petit nombre d’annonces supplémentaires d’Endorser Block frauduleuses aux pairs immédiatement en aval après la révocation.

Ces annonces ne déclenchent pas de déconnexions et ne sont pas propagées davantage. La discussion de développement décrit le coût de traitement supplémentaire comme minimal et le comportement restant comme indésirable, mais pas bloquant pour le prototype actuel.

Il n’existe aucune preuve de source primaire que ce vecteur d’attaque ait affecté le mainnet de Cardano. Le mécanisme d’annonce concerné appartient au prototype Leios, et le correctif a été fusionné dans sa branche de développement dédiée plutôt que dans la branche de consensus de production.

Dingo adopte la même protection Leios

Blink Labs a également appliqué le modèle de gestion des OCIN périmés à Dingo, sa mise en œuvre indépendante d’un nœud Cardano.

Le ticket Dingo a été ouvert le 26 août après que les développeurs ont identifié qu’une annonce correctement signée mais périmée pouvait encore être enregistrée et relayée. La pull request no 3563 a été fusionnée le 27 août.

Dans la mise en œuvre mise à jour, les annonces périmées ou à émetteur inconnu sont acceptées sans fermeture de la connexion avec le pair, mais ne sont ni enregistrées, ni traitées, ni relayées. Les annonces récentes suivent le traitement normal, avec des tests de régression couvrant plusieurs états d’OCIN.

La mise à jour de développement d’août d’Intersect a également signalé un support élargi de db-analyser pour les chaînes Leios. L’outil peut désormais rejouer les données de chaîne Leios et mesurer les transactions d’Endorser Block certifiées, leur taille et le temps nécessaire pour les lire et les appliquer. Cela étend les tests au delà du débit vers les coûts de traitement du registre et le comportement des ressources.

Le correctif concernant les annonces périmées couvre désormais deux mises en œuvre. Ouroboros Consensus a modifié le comportement dans le prototype Leios d’origine le 18 août, tandis que Dingo a adopté sa mise en œuvre correspondante neuf jours plus tard, alignant la manière dont les deux bases de code gèrent le même cas limite réseau avant que Leios n’atteigne un déploiement en production.