Aller au contenu
Conseils de sécurité · · 3 min de lecture · 542 mots · Mis à jour

Comment vérifier qui contrôle un contrat intelligent

La plupart des contrats déployés sont évolutifs, ce qui signifie que quelqu'un peut modifier ce qu'ils font des fonds déjà détenus. Cette chaîne de contrôle est publique et lisible.

Partager

Le véritable modèle de sécurité d’un protocole ne réside souvent pas du tout dans la logique de ses contrats. Il réside dans la réponse à une question plus simple : qui peut modifier la logique, et à quelle vitesse peut-il le faire ?

Déterminez s’il est évolutif

La plupart des déploiements d’ampleur utilisent un contrat proxy : l’adresse avec laquelle les utilisateurs interagissent conserve l’état et délègue le comportement à une adresse d’implémentation distincte, qui peut être remplacée. Les explorateurs de blocs le détectent généralement et affichent le contrat d’implémentation à côté du proxy.

Si un contrat est évolutif, le « code immuable » n’est pas une propriété qu’il possède. Ce n’est pas automatiquement mauvais — c’est ainsi que les bogues sont corrigés après le déploiement — mais cela déplace l’objet de votre confiance, du code vers les personnes qui le contrôlent.

Identifiez l’administrateur, et de quelle nature il est

Le proxy possède une adresse administrateur habilitée à le mettre à niveau. Ce que cette adresse est compte davantage que sa valeur :

  • Un simple compte externe. Une clé, une personne, aucune seconde approbation. L’arrangement le plus faible, et lisible comme tel.
  • Une multisignature. Mieux — mais les deux nombres qui comptent sont le seuil et le nombre de signataires, et tous deux figurent sur la chaîne. Un trois-sur-cinq n’est véritablement un trois-sur-cinq que si les cinq clés sont détenues par des personnes différentes sur des appareils différents, ce que la chaîne ne peut pas vous dire.
  • Un contrat de gouvernance derrière un verrou temporel. Le plus solide des trois, car il transforme un changement instantané en un changement annoncé — à condition que quelqu’un surveille la file d’attente.

Vérifiez le délai, et s’il peut être contourné

Lorsqu’un verrou temporel existe, son délai est lisible depuis le contrat, tout comme la file des actions en attente. Deux points méritent d’être établis : la durée réelle du délai, et l’existence éventuelle d’un chemin permettant d’agir sans lui — un rôle d’urgence, un gardien ou une fonction de mise en pause détenue séparément.

Un coupe-circuit ou une fonction de mise en pause est généralement une bonne chose, mais c’est aussi un pouvoir. Qui peut l’invoquer, et ce qui lève la pause, font partie de la même chaîne de contrôle.

Pourquoi c’est la question qui revient

Les dossiers du registre reposent bien plus souvent sur le contrôle que sur la cryptographie. Une gouvernance capable d’exécuter sans délai est la forme que prend le prêt flash de gouvernance contre Beanstalk. Un accès privilégié légitimement détenu est la forme que prend la compromission de clé par un initié chez Munchables — voir également menace interne.

Ce que vous pouvez établir, et ce que vous ne pouvez pas

Sur la chaîne, vous pouvez établir : si le contrat est évolutif, l’adresse d’implémentation, l’adresse administrateur, si l’administrateur est une multisignature et à quel seuil, si un verrou temporel existe et quel est son délai, et ce qui est actuellement en file d’attente.

Vous ne pouvez pas établir à partir de la seule chaîne si les signataires sont véritablement des personnes indépendantes, où les clés sont conservées, ni ce qui se passe si l’une d’elles est perdue. Ce sont des questions de communication d’informations, et un projet qui y répond par écrit vous dit quelque chose — qu’un projet qui n’y répond pas vous dit également.

Pas un conseil. Conisec publie à titre d'information uniquement. Rien dans cet article ne constitue un conseil financier, juridique, fiscal ou de sécurité. Vérifiez auprès des sources primaires indiquées ci-dessus avant d'agir.

Pour aller plus loin