Extension duniter-connect (fork de polkadot{.js})

Je viens de publier sur les stores chrome et firefox une v0.61.3 qui set ed25519 en génération de key au lieu de sr25519, qui ajoute la réseau GTest directement dans les metadata avec le bon ss58, et qui permet de changer manuellement le noeud duniter pour les scan de dérivations dans les paramètres si nécessaire.

Faut-il faire une mise à jour manuelle, ou est-ce automatique ?

Ca dépend je ne sais pas trop, tu peux vérifier ta version sur chrome/brave via chrome://extensions, sur firefox via about:addons.

Sinon les liens des stores sont dans le message principal de ce topic.

Derniere mise à jour 17 juillet 2025 ce doit être la bonne ! :slightly_smiling_face:

Pour info, j’ai déplacé la version Chrome de Duniter connect dans un nouveau workspace dédié à Axiom-Team, je même espace que g1-companion utilisera très vite, car jusqu’a présent c’était dans un workspace nommé axiom-team mais dépendant de mon workspace perso.

Le nouveau lien pour installer et mettre à jour Duniter Connect sur Chrome est donc: https://chromewebstore.google.com/detail/duniter-connect/honnmdcemjomhickjacemnnoepmfgknb

:warning: Si vous l’avez déjà installé sur Chrome, vous devez désintaller l’extension et installer celle ci par ce biais pour la garder à jour.

La dernière version en date est 0.62.8

J’ai essayé d’importer une phrase de restauration, mais ça tourne en boucle au scan des comptes

En version v0.62.8.

Comme l’import d’un compte est une opération hors ligne et que le scan des balance des dérivations nécessite une connexion, ce serait bien de pouvoir skip cette étape (par exemple en la rendant optionnelle cochée par défaut dans les options avancées d’import avec la dérivation).

C’est déja skippable kkpart dans les options.

Hello,

J’ai repéré une vulnérabilité qui permet à un site d’accéder aux informations de tous les comptes présents dans l’extension, sans y avoir donné l’accès (CVSS 4.8).

Quand on supprime un compte de l’extension, si ce compte était le seul accessible par un site, alors le site sur lequel il était accessible peut récupérer la liste de tous les comptes.

Au fait, dans l’extension, les permissions du site passent automatiquement à “tous les comptes” quand le compte est supprimé.

Ce n’est pas bien méchant, mais ça divulgue quand même des informations que l’utilisateur n’a pas souhaité.

Étapes :

  1. Importer un compte A, B et C dans l’extension
  2. Accéder au site demandant l’accès au portefeuille
  3. Autoriser le compte B
  4. Supprimer le compte B de l’extension
  5. Le site a maintenant accès aux informations des portefeuilles A et C

En image, cela donne ça :backhand_index_pointing_down:

bug

Bravo pour cette découverte.
Ce bug est probablement également présent sur l’upstream polkadot.js extension.

Est-ce que tu te sens de faire une PR pour patch ?

L’asso Axiom-Team peut te fournir un accès à claude code si tu es adhérent de l’asso, au besoin.

Merci

Le problème vient bien de l’extension en elle-même comme c’est l’extension qui gère les permissions :slight_smile:

Dans le fichier Tabs, la méthode filterForAuthorizedAccount retourne tous les comptes si le site n’a aucune autorisation sur un compte, mais qu’il a quand même eu l’autorisation par le passé.

return accounts.filter(
      (allAcc) =>
        auth.authorizedAccounts?.length
          // we have a non-empty list, use it
          ? auth.authorizedAccounts.includes(allAcc.address)
          // if no authorizedAccounts, check isAllowed (default true for backwards compat)
          : auth.isAllowed !== false
    );

Actuellement si l’utilisateur souhaite que le site puisse accéder à tous ses comptes, il n’en sélectionne aucun lors de la sélection ou les sélectionne tous. Mais on doit pouvoir faire la différence entre ne rien sélectionner et tout sélectionner, sinon ça pose ce genre de soucis.

J’ai essayé de démarrer une version de développement en local pour tenter de corriger ça, mais sans succès pour le moment.

Il faut que je pense à faire ma présentation (notamment pour demander l’accès au GitLab) :sweat_smile:

Ce que je veux dire, c’est que le bug est probablement sur l’upstream que voici : GitHub - polkadot-js/extension: Simple browser extension for managing Polkadot and Substrate network accounts in a browser. Allows the signing of extrinsics using these accounts. Also provides a simple interface for compliant extensions for dapps. · GitHub

Duniter connect est un fork de cette extension. Ce serait intéressant de voir si tu reproduis ce bug sur cette extension directement :wink:

Ah pardon, j’avais mal compris :grimacing:

Du coup, je viens de tester et le problème n’est pas présent sur l’extension d’origine.

Ok alors la dernière chose à faire avant d’attaquer une investigation et fix côté duniter-connect est de merger l’upstream sur notre fork (ça fait quelques mois que je ne l’ai pas fait) et de voir si une correction à été apporté de leur part entre temps ou non.

Parceque ça m’étonne quand même beaucoup que ce soit une régression de notre côté, je ne vois pas à quel moment j’aurais touché à ça, hormis peut être lorsque j’ai permis dans duniter-connect de créer des wallet sans mot de passe, peut être que j’ai dû refac au passage les fonction de détection de wallet.
Ou bien quand j’ai passé les wallet de sr25519 à ed25519 (l’upstream ne donne pas le choix c’est SR ou rien).

Mais vraiment j’en doute fort, mais c’est la piste que j’ai comme ça à chaud sans avoir mis le nez dedans.

J’ai regardé et il semble bien que le problème ne vienne pas de l’upstream :

Ah oui c’est donc suite à la possibilité d’avoir des wallets sans mots de passe que j’ai apporté cette régression.
Il faut ajouter un guard, je vous laisse voir. Bien vue!

J’ai fait ça avec ton mail du forum : https://git.duniter.org/elliot. Hésite pas à partager tes poc sur ton espace perso. Merci pour la détection de vulnérabilité, c’est précieux et ça touche un logiciel d’importance critique.

En local dans le dépôt, la commande git blame te permet de connaître le dernier commit d’une ligne de code.

Sur gitlab j’ai demandé l’historique des commits sur ce fichier et repéré celui qui modifiait la ligne.

Super merci !

Ça marche :slightly_smiling_face:

Bonjur, je viens d’arriver dans l’équipe et je souahite participer, On m’a indiqué ce bug pour commencer, on bosse ensemble ou je tente de le fix seul ?

Holà :waving_hand:

(je viens de voir ton message juste après t’avoir répondu ici :face_with_tongue:)

Tu peux t’en occuper seul, je ne suis pas dessus pour le moment :slightly_smiling_face:

Si besoin, n’hésite pas !