MSTR Cat

Droit crypto/Niveau V · Créateurs et émetteurs/5.3 Promotion et responsabilité/Leçon 5

Audits de contrats intelligents et leurs promesses

Ce que couvre réellement un audit de code, pourquoi « audité » n'est pas une garantie, qui peut s'appuyer sur le rapport, et comment les allégations relatives aux audits engagent la responsabilité des projets.

Ceci est une ressource éducative et non un conseil juridique, fiscal ou en investissement. Le droit des crypto-actifs varie d'un pays à l'autre et d'un État à l'autre, et évolue souvent. Avant d'agir, vérifiez les règles en vigueur là où vous vivez auprès d'un avocat ou d'un conseiller fiscal qualifié.

La voie la plus légère

La voie la moins chère, la moins imposée, la plus simple et la plus discrète que permet la loi, de la meilleure à la moins bonne. Chaque étape indique la règle sur laquelle elle repose et la condition qui la maintient dans la légalité.

  1. Publiez le code source vérifié sur un explorateur de blocs ainsi que l'empreinte (hash) du commit examiné. C'est gratuit et cela rend toute allégation d'audit vérifiable, mais l'allégation doit correspondre au code déployé, non mis à niveau.
  2. Si vous utilisez le mot « audité », liez le rapport complet et listez les observations qui restent ouvertes. Omettre des observations graves non résolues peut être trompeur au titre de l'article 5 de la FTC Act, de la règle 10b-5 ou de l'article 7 de MiCA.
  3. Un projet plus petit peut limiter le périmètre d'une revue aux seuls contrats déployés et ajouter une récompense publique pour signalement de vulnérabilités. Les exclusions du rapport limitent ce qu'il prouve, donc n'alléguiez que ce qu'il couvre.
  4. Un cabinet d'audit ne doit des obligations de négligence ordinaire qu'à son client au titre de l'arrêt Bily (Cal. 1992), si bien que les acheteurs obtiennent rarement réparation auprès des auditeurs ; les projets restent responsables de leurs propres allégations.
  5. Une DAO de l'Utah a besoin d'une revue de sécurité de son code public pour obtenir une reconnaissance juridique. Prévoyez le budget de la revue uniquement si vous choisissez ce cadre juridique (wrapper).

MatérielUne revue de sécurité de contrat intelligent publiée avec sa section d'avertissements, par exemple le rapport FraxGov de Trail of Bits de mai 2023Le code source vérifié et l'adresse du contrat déployé sur un explorateur de blocs (block explorer)Bily v. Arthur Young & Co., 3 Cal. 4th 370 (1992), sur la responsabilité des auditeurs envers les tiers

Curiosité

  1. Si un contrat audité est piraté, les acheteurs peuvent-ils poursuivre l'auditeur ?
  2. Un audit couvre-t-il le code qui est réellement exécuté sur la chaîne ?
  3. Un projet peut-il se retrouver en difficulté juridique simplement pour avoir déclaré qu'il avait été audité ?

Explorer

  1. Un audit de contrat intelligent est une revue de sécurité d'une version spécifique du code d'un projet, réalisée par un cabinet externe et payée par le projet. Il produit un rapport listant les observations par niveau de gravité et, souvent, les correctifs apportés par le projet. Le terme est emprunté à l'audit financier, mais le livrable est différent : son périmètre, sa durée et sa méthode sont définis par un contrat privé entre l'auditeur et le projet. Les acheteurs ne voient généralement que le rapport public. Les rapports de preuve de réserves (proof-of-reserves), que certaines plateformes d'échange appellent également des audits, sont une chose distincte (leçon 4.1.6).
  2. Le rapport lui-même énonce ses limites. La revue FraxGov de mai 2023 par Trail of Bits indique, par exemple, que le travail a suivi un cahier des charges (statement of work), que les évaluations sont « limitées dans le temps » et s'appuient sur des informations fournies par le client, et que les observations « ne doivent pas être considérées comme une liste exhaustive des problèmes de sécurité ». Elle note également que les outils automatisés ont des limites. Les correctifs sont suivis par commit, l'identifiant d'une version spécifique du code, tel que « Résolu dans le commit ed4e708 ». Un audit décrit donc un code particulier à un moment donné, et non ce qui est déployé ou mis à niveau ultérieurement.
  3. Le code audité peut encore échouer. Le 13 mars 2023, le protocole de prêt Euler Finance a perdu environ 197 millions de dollars. La cause en était un contrôle d'intégrité manquant dans une fonction appelée donateToReserves, qui avait été ajoutée dans le cadre d'un correctif pour un problème antérieur et qui avait elle-même fait l'objet d'un audit. Euler a déclaré avoir été audité bien plus souvent que la norme habituelle et disposer d'une récompense de 1 million de dollars pour signalement de vulnérabilités. D'ici au 3 avril 2023, l'attaquant avait restitué des fonds d'une valeur d'environ 240 millions de dollars, après plusieurs semaines de négociations. Les audits réduisent le risque ; ils ne l'éliminent pas.
  4. Pour un acheteur envisageant de poursuivre un auditeur de code, la jurisprudence relative aux auditeurs financiers montre les obstacles probables. Dans Bily v. Arthur Young & Co. (1992), la Cour suprême de Californie a statué que la responsabilité d'un auditeur pour négligence ordinaire ne s'étend qu'à son client. D'autres peuvent intenter une action en fausse déclaration par négligence uniquement s'ils étaient des bénéficiaires spécifiquement visés du rapport et connus de l'auditeur, et pour fraude intentionnelle s'ils étaient raisonnablement prévisibles. Un acheteur de jetons lisant un rapport public aurait généralement besoin de plus que la preuve que l'auditeur a fait preuve de négligence.
  5. Les propres déclarations du projet concernant un audit comportent davantage de risques. Dire « audité » ou « sécurisé » tout en omettant des observations graves non résolues, ou tout en exécutant un code différent, peut constituer une déclaration trompeuse. Si le jeton est une valeur mobilière, cela peut étayer des réclamations au titre de la règle 10b-5 de la SEC ou du paragraphe (a)(2) de l'article 12 (leçon 5.3.2). Sinon, la FTC Act interdit les « actes ou pratiques déloyaux ou trompeurs » (leçon 5.1.7), et dans l'UE, l'article 7 de MiCA exige que le marketing soit « loyal, clair et non trompeur ». La Utah Decentralized Autonomous Organizations Act, en vigueur depuis le 1er janvier 2024, exige même une revue de sécurité du code d'une DAO pour sa reconnaissance juridique.
  6. Lisez un audit comme un contrat, pas comme un badge. Vérifiez qui a payé, ce qui était inclus dans le périmètre, quelles observations ont été corrigées, lesquelles ont été « reconnues » et laissées ouvertes, et si les contrats peuvent être mis à niveau ou suspendus par une clé d'administrateur (leçon 5.1.5). Une vérification pratique : prenez l'identifiant du commit figurant dans le rapport, ouvrez le contrat déployé sur un explorateur de blocs et confirmez que le code source vérifié correspond à la version examinée et qu'aucune mise à niveau ultérieure ne l'a remplacé. S'ils ne correspondent pas, le rapport n'apporte que peu d'informations sur le code en usage.

Faits clés

  • Un audit de contrat intelligent examine une version spécifique du code dans le cadre d'un contrat privé entre l'auditeur et le projet.
  • Le rapport FraxGov de mai 2023 de Trail of Bits indique que ses observations ne doivent pas être considérées comme une liste exhaustive des problèmes de sécurité.
  • Euler Finance a perdu environ 197 millions de dollars le 13 mars 2023 en raison d'un défaut dans une fonction audité, et les fonds ont été restitués d'ici au 3 avril 2023.
  • Dans Bily v. Arthur Young & Co. (1992), la Cour suprême de Californie a limité la responsabilité des auditeurs pour négligence ordinaire à leurs seuls clients.
  • Au titre de l'arrêt Bily, les tiers peuvent poursuivre un auditeur pour fausse déclaration par négligence uniquement en tant que bénéficiaires spécifiquement visés connus de l'auditeur, ou pour fraude intentionnelle.
  • La Utah Decentralized Autonomous Organizations Act, entrée en vigueur le 1er janvier 2024, exige que le code publiquement accessible d'une DAO ait fait l'objet d'une revue de sécurité.

Exercice neuf, six, trois, un

9RassemblerÉnumérez jusqu'à 9 allégations concernant la sécurité que vous avez vues sur des sites web de jetons ou de protocoles, telles que « audité », « sécurisé », le nom d'entreprises d'audit ou des programmes de récompense pour signalement de vulnérabilités (certaines listes sont plus courtes).
6RegrouperClassez-les en 6 groupes : allégations accompagnées d'un rapport lié, allégations sans rapport, rapports comportant des observations graves non résolues, rapports portant sur une version antérieure du code, allégations relatives aux récompenses pour signalement de vulnérabilités et langage vague concernant la sécurité.
3DistillerRéduisez les 6 groupes à 3 : allégations que vous pouvez vérifier par rapport au code déployé, allégations que vous ne pouvez vérifier qu'en partie, et allégations que vous ne pouvez pas du tout vérifier.
1CristalliserRédigez une phrase expliquant ce qu'un rapport d'audit peut et ne peut pas vous dire sur le code exécuté sur la chaîne aujourd'hui.

Vérification des faits

Les dates, les chiffres et les affirmations ont été vérifiés à l’aide des sources publiées listées ci-dessous.

Ouvrir dans l'académie interactive →

EN PT ES ZH JA KO RU DE MS