La sécurité! TOUS concernés

Bonjours à tous les humains,
J’aimerai vous faire part des résultats d’une attaque que j’ai mené sur Cesium.
Quand j’ai compris que le client dérivait la clé privée à partir de 2 mots de passe, j’ai eu envie de tester quelque chose: une attaque par brute force.
Avec l’API de Duniter, on peut télécharger la liste des clés publiques des membres en une seule requête HTTP. J’ai aussi téléchargé une wordlist de mots de passe français trouvée sur Internet, dont j’ai filtré tout les MDP de moins de 8 charactères (la limite de Cesium). Ensuite, j’ai codé un petit programme Rust qui génère les clés correspondant aux MDP de la wordlist et qui les compare avec celles de la liste. Devinez quoi, j’ai cracké 3 comptes membres:

Soudan Philippe, DXF5FnVDnnwrvEJqTynxfCv5o2o8id9henmzKZw319Qh
Id: c*****c
Mdp: c*****c

Perrot Elisabeth, 6kS1SEGWr16amWYBMd8JuCuFW8vTQC8HvBBHpGZNq4vj
Id: l*****e
Mdp: c*****m

Aubrun Elisabeth, 67nTY2oTHP7KDPbgGpqJgzSMYVwHvrd53bDv1KQCtNn4
Id: n*****e
Mdp: b*****e

J’en ai donc évidemment profité pour me certifier mon comtpe perso: 2Mm73GqbYYTotpBFrbRZwG8hLecyerfdxXPQeJBbAJKQ
Voilà j’ai maintenant 3 certifications alors que je n’ai jamais rencontré la moindre personne utilisant la June de toute ma vie.

Je vous avoue que j’ai un peu le seum de pas avoir cracké 2 comptes de plus, mais c’est quand même un bon résultat. Ma wordlist comprenais seulement 6000 mot de passes (36M de possibilités) et j’ai utilisé un laptop qui mettais environ 80ms pour tester une clé. En reproduisant l’attaque avec plus de moyens, je pense que l’on pourrait facilement cracker beaucoup plus de comptes.

Bref tout ça pour dire que les développeurs de Césium ont vraiment fait du caca. Avant Cesium, je n’avait jamais vu de wallet générer la clé privée à partir de MDP. Et c’est pour une bonne raison: il ne faut jamais faire confiance au humains pour générer de l’entropie forte. Les clés privée doivent toujours être générées aléatoirement, et non entièrement dérivées à partir de valeurs choisies par l’utilisateur.

9 « J'aime »