Duniter v1.7.19 : faille sur les piscines

Mise à jour de sécurité de Duniter, corrigeant deux failles concernant l’accès aux piscines.

Cette version n’est pas nécessaire mais recommandée. Pas de resynchronisation a réaliser.

Télécharger Duniter 1.7.19

Bugs

En observant les trames WS2P, j’ai remarqué que les certifications (#1379) et les adhésions (#1380) étaient acceptées à plusieurs reprises dans la piscine d’un même nœud, plus précisément des documents réapparaissaient parfois dans les piscines après avoir été écrits en blockchain, ce qui est anormal.

La cause : dans les deux cas (certifications, adhésions) les piscines acceptaient des documents sans vérifier leur date de péremption. De ce fait, et via divers mécanismes, de vieux documents périmés pouvaient être proposés aux nœuds du réseau et se voir acceptés en piscine, puis répliqués par rebonds.

Conséquence

Une surcharge réseau inutile, car ces certifications et adhésions se voyaient répliquées sur tous les nœuds de façon régulière, plusieurs fois par heure. Également une utilisation du disque inutile, puisque les documents incriminés que j’ai repéré étaient tous déjà écrits en blockchain.

Enfin un vecteur d’attaque pour remplir les piscines, toutefois très limité car les nouveaux documents ont priorité sur les anciens. Par contre les nœuds pourraient se voir saturés par la réception de documents déjà connus.

Correction et verrouillage par un test

Ces bugs ont été reproduis dans des tests automatisés, ce qui une fois les correctifs appliqués, permet de verrouiller le comportement désiré.

À noter que j’ai également verrouillé le comportement pour les identités et transactions, mais il existait déjà le code de contrôle de validité de ces documents. Donc, pas de faille de ce côté-là.

Versions Windows et ARM

@jytou, peux-tu réaliser un build stp ?

Bonne soirée à tous.

6 J'aimes

Cool ! Les piscines vont arrêter de déborder ! :smiley:

C’est parti… :slight_smile: J’ai vu que du coup tu as mergé la branche node 10 donc je garde mon node 10 comme je l’avais paramétré lors des tests qu’on avait faits dessus. :slight_smile:

1 J'aime

@cgeek je crois qu’il va falloir que tu publies wotb et naclb comme la dernière fois… la release ARM a planté :

npm ERR! naclb@1.3.10 install: node-pre-gyp install --fallback-to-build

Non c’est bien la branche 1.7, pas de Node 10.

Ah bah oui j’étais sur la branche dev, au temps pour moi… :poop:

La release windows est dispo, l’arm est dans le four… :slight_smile:

3 J'aimes

Uh oh. Boulette et rollback… la release windows utilise en fait… node 10. Tout simplement parce que même si je l’ai faite en indiquant le tag 1.7.19 au script release (qui du coup fait le checkout du code sur le bon tag), la partie node est indépendante et récupère ce qu’il y a dans le repo local… qui est sur le tip et donc contient node 10… Je la refais…

2 J'aimes

Versions Windows et arm releasées pour de bon cette fois… désolé de la boulette !

3 J'aimes