Un audit de contrat intelligent est un examen par des experts en sécurité de la blockchain pour s'assurer que les utilisateurs ne perdront pas de fonds en raison d'un dysfonctionnement ou d'une vulnérabilité de sécurité. De plus, un audit tente d'anticiper les comportements inattendus et indésirables des contrats intelligents avant le déploiement du contrat.
Naviguer dans ce domaine est délicat. Il existe des dizaines de cabinets d'audit, et obtenir des devis de plusieurs d'entre eux prend du temps, et il est difficile de savoir si vous obtenez un prix juste ou non.
Cet article servira de point de départ pour naviguer dans la tâche d'obtenir un audit de contrat intelligent.
Les références aux cabinets d'audit dans cet article ne doivent pas être interprétées comme une approbation.
Le terme « audit de contrat intelligent » est une évolution du jargon de l'industrie, il n'a pas de définition rigoureuse et il peut signifier différentes choses pour différentes personnes. Pour ceux qui viennent d'industries où les normes ISO sont la norme, l'audit intelligent des contrats semblera être le Far West (et franchement, ce serait une évaluation précise).
Bien que certaines vulnérabilités des contrats intelligents soient bien connues, d'autres sont des propriétés émergentes de systèmes complexes et sont difficiles à détecter systématiquement.
Les normes sont caractéristiques des marchés matures, et le web3 dans son ensemble n'est pas un marché mature.
C'est un peu une confusion de termes pour appeler des audits de contrats intelligents des "audits". Dans le domaine de la comptabilité, un « audit » a une définition très rigoureuse ; ce n'est pas le cas dans l'ingénierie blockchain. Ce qu'on appelle un « audit » dans la blockchain est un examen de la sécurité par une équipe d'experts.
Ce qui rend cela encore plus déroutant, c'est qu'il n'y a pas de définition ou de certification formelle de ce qui fait d'une personne un auditeur ou un expert en sécurité dans les contrats intelligents. Oui, il existe des entreprises qui vendent des certifications, mais ces certifications n'ont aucun poids dans l'industrie.
Comme vous pouvez vous y attendre, plusieurs personnes entreprenantes profitent de la confusion pour vendre une expertise qu'elles n'ont pas, car il n'existe aucun moyen établi de mesurer l'expertise.
Caveat emptor.
Cela dit, il est largement admis dans l'industrie que dire "ce contrat intelligent a été audité" signifie "un groupe d'experts en sécurité a été payé pour examiner cette base de code et trouver des problèmes". Puisqu'il n'y a pas de définition formelle de l'expertise, la réputation de l'industrie est souvent utilisée comme indicateur.
Ce sont des entreprises spécialisées dans la recherche sur la sécurité. Certains auditent uniquement les contrats intelligents, tandis que d'autres auditent les contrats intelligents et les applications informatiques traditionnelles. Vous pouvez considérer cela comme une agence composée de chercheurs en sécurité. Jusqu'à récemment, c'était le moyen standard d'obtenir un audit de contrat intelligent. Si vous effectuez une recherche Google sur les sociétés d'audit de contrats intelligents, voici le type de résultats que vous obtiendrez généralement.
Plutôt que de rejoindre une entreprise, certains chercheurs en sécurité travaillent pour eux-mêmes. Ils sont un peu plus difficiles à trouver car ils ont des budgets marketing beaucoup plus petits que les agences, mais comme ils ont moins de frais généraux, ils peuvent souvent proposer de meilleurs prix.
Un inconvénient est qu'une entreprise peut faire réviser votre code par plusieurs auditeurs, alors qu'un auditeur indépendant n'aura qu'un seul examinateur. Mais pour les bases de code plus petites ou moins compliquées, cela peut être plus rentable.
Récemment, quelques plates-formes ( Sherlock DeFi , Code4rena ) sont apparues où les entreprises demandant un audit publient leur code source sur la plate-forme avec une cagnotte monétaire, puis des concurrents indépendants tentent de trouver des bogues et des vulnérabilités.
Plus un participant trouve de bogues, plus il gagne d'argent, mais si un autre concurrent trouve le même bogue, le paiement est dilué entre les deux. Pour les bogues bien compris, le paiement peut être considérablement dilué.
Les gains des auditeurs dans ce format sont assez inférieurs à la moyenne. Les concurrents peuvent rarement s'attendre à gagner beaucoup plus de 1 000 $ par concours malgré des efforts considérables. La principale incitation pour les participants est de prouver leurs capacités afin qu'ils puissent obtenir un emploi dans un cabinet d'audit traditionnel ou attirer des entreprises en tant qu'auditeur solo (chercheur indépendant). Il n'y a également aucune garantie quant à la qualité des personnes participant au concours, car tout le monde peut participer.
Cependant, ces plateformes peuvent être très pédagogiques pour les nouveaux auditeurs. Parce que le format encourage une concentration intense sur la recherche de bogues, puis donne des commentaires sur les bogues qui ont été manqués, ils peuvent fournir une boucle de rétroaction relativement serrée qui aide à accélérer l'apprentissage. En fait, nous guidons une partie de notre formation de solidité pour participer à ces concours à des fins éducatives.
Les meilleurs auditeurs ne consacrent pas beaucoup de temps aux concours, car ils gagnent beaucoup plus d'argent en travaillant pour eux-mêmes ou pour une entreprise. Gardez donc à l'esprit qu'une personne qui réussit un concours d'audit peut simplement signifier qu'elle n'a pas été confrontée à une concurrence importante pour les concours auxquels elle a participé. Il y a aussi un élément de chance lorsqu'un seul concours représente une part importante des revenus publics d'un auditeur. .
Cependant, ce format attire beaucoup plus l'attention sur le code que les autres formats d'audit, et les concours d'audit ont détecté des bogues manqués par d'autres auditeurs. Ils servent également de canal aux entreprises pour commercialiser subtilement leurs protocoles auprès des communautés de développeurs et d'auditeurs, ils constituent donc une contribution précieuse à l'écosystème.
Certains groupes Discord de développeurs examineront votre code gratuitement (par souci d'être utile, alors n'abusez pas de la générosité des autres). Si vous avez une base de code petite et simple, demander à quelques experts de faire don de leur temps peut parfois être la voie la plus rentable pour vous. Il serait extrêmement hypocrite d'appeler un tel examen un « audit », mais s'il s'agit de la seule option disponible, c'est certainement mieux que pas d'examen du tout.
Certains auditeurs utilisent une liste de contrôle rigide pour une liste des vulnérabilités des contrats intelligents et vérifient si le problème est présent ou non. C'est une bonne première passe, mais de nombreux bogues sont spécifiques à l'application (comme nous le notons dans cet article). Vous voulez vous assurer que l'auditeur tiendra compte des nuances et des exigences commerciales de votre application. En examinant leurs audits passés, vous pouvez voir s'ils vont mécaniquement à l'encontre d'une liste ou plonger profondément dans les spécificités de votre application. Un auditeur qui ne fournit pas d'audits antérieurs est généralement un signal d'alarme.
Si votre projet utilise des Tokenomics exotiques DeFi ou Zero Knowledge Proofs , vous voudrez vous assurer que votre auditeur sélectionné a de l'expérience avec cela. De même, si vous construisez un dapp sur une chaîne non compatible evm comme Solana , vous aurez besoin d'un auditeur expérimenté avec cette blockchain.
Certains cabinets d'audit ne s'embêteront pas avec de petites bases de code comme un jeton ERC20 ou un NFT de base, car ils ne gagneront pas assez d'argent pour payer l'appel de vente et la gestion du compte.
Parce qu'il n'y a pas de définition formelle ou acceptée d'un audit, certaines entreprises ont surgi et produisent ce que l'on appelle avec dérision des «audits de tampon en caoutchouc». Ces entreprises fournissent des rapports d'audit simplement parce que l'acheteur voulait un audit afin qu'il puisse dire à ses clients : "Regardez, nous avons été audités !"
Tous les protocoles ne font pas intentionnellement l'objet d'audits de tampon en caoutchouc ; ils peuvent simplement avoir choisi l'auditeur sans savoir qu'ils sont des auditeurs de tampon automatique.
Même si un contrat intelligent est audité, il peut toujours être piraté par la suite ; ce n'est pas un cas rare.
Rekt.news a un classement qui suit les hacks de contrats intelligents en fonction du montant d'argent perdu. Il est facile de voir que la plupart des protocoles piratés n'ont pas du tout été audités.
Cependant, certains des protocoles ont eu des audits, certains plus d'un, que les auditeurs ont encore manqués. Dans certains cas, cela peut être dû au fait que les auditeurs étaient incompétents ou n'ont pas fait assez d'efforts, mais en général, il n'est pas possible de garantir qu'une base de code est exempte de bogues.
La bonne nouvelle est que certaines vulnérabilités ne sont pas seulement ignorées par les auditeurs ; ils sont également manqués par les pirates. Certains contrats intelligents avaient duré des mois avec une vulnérabilité en direct avant d'être corrigés. Un audit décent s'assurera que le "fruit à portée de main" pour les pirates est éliminé.
C'est une pratique courante avec des protocoles DeFi bien financés qui ont l'intention de détenir beaucoup d'argent; il est tout à fait normal que trois cabinets d'audit ou plus examinent le code.
Ce qu'un auditeur rate, un autre peut l'attraper, et vice versa. De même, un auditeur peut remarquer une vulnérabilité, et les développeurs peuvent corriger cette vulnérabilité tout en en introduisant une autre.
1. Obtenez des devis Vous contacterez diverses entreprises pour demander des devis et vous coordonnerez en fonction de leur disponibilité et de vos dates de lancement.
2. L'audit commence Vous devriez être dans un gel de code lorsque vous allez auditer. Si les auditeurs examinent une base de code différente de celle que vous lancerez en prod, vous gaspillez probablement de l'argent !
3. Rapport d'audit La plupart des rapports d'audit (qui ne suivent pas une liste de contrôle fixe) renverront une liste de résultats classés comme critiques, élevés, moyens, faibles, informatifs et optimisation du gaz. Ceux-ci sont expliqués dans la section suivante. Un audit peut durer de quelques jours à quelques mois, selon la portée du projet.
4. Examiner les correctifs En fonction de l'accord, l'auditeur examinera les modifications apportées par les développeurs et s'assurera que le correctif corrige réellement le bogue. Le nombre d'examens de révision considérés comme acceptables dépend de l'auditeur.
5. Publier le rapport Les auditeurs publient généralement leur rapport si le client le permet (et les clients souhaitent généralement que l'audit soit public pour montrer qu'ils ont été audités).
La plupart des rapports d'audit regroupent les résultats de sécurité par gravité :
Critique
Haut
Moyen
Faible
Informationnel
Optimisation du gaz
Toutes les entreprises n'utilisent pas les mêmes étiquettes. Comme nous l'avons noté, en l'absence de normes universelles, il n'existe pas de définition uniforme de ce qui est considéré comme une vulnérabilité « élevée » ou « moyenne ». Certains auditeurs ne sont pas d'accord sur la note appropriée pour attribuer le même bogue, mais voici quelques facteurs que les auditeurs utilisent pour attribuer la gravité :
Résultat du pire cas. Tous les fonds volés sont catastrophiques. Les bogues où un pirate ne peut pas voler des fonds mais où les utilisateurs ne sont pas suffisamment protégés contre une balle dans le pied seraient étiquetés avec une faible gravité.
Nombre d'utilisateurs concernés. L'ensemble du protocole perdant de l'argent est plus grave qu'un utilisateur individuel perdant de l'argent.
Incitation à mener l'attaque. Si un attaquant a besoin de dépenser plus de capital pour mener une attaque qu'il n'en gagnerait pour l'exécuter, la gravité est réduite. Il s'agit toujours d'une vulnérabilité car l'attaquant pourrait avoir un motif non économique pour mener une attaque (se montrer, se venger, etc.).
Obscurité de l'attaque. Si la vulnérabilité est quelque chose comme manquer un contrôle d'accès, alors un attaquant non averti peut mener l'attaque. Si la faiblesse dépend d'une compréhension approfondie d'un mécanisme de tokenomics sophistiqué utilisant des mathématiques avancées, il est alors moins probable que l'attaquant trouve le problème.
Certains auditeurs combinent les deux derniers facteurs en un seul : la probabilité d'une attaque. Dans ce modèle, ils utilisent le tableau suivant pour attribuer la gravité :
Certains auditeurs font une distinction entre les vulnérabilités critiques et les vulnérabilités élevées, et d'autres auditeurs regroupent les vulnérabilités critiques avec les vulnérabilités élevées. Dans les deux cas, ceux-ci sont considérés comme des bogues extrêmement graves ! Pour ceux qui font une distinction, Critique peut signifier que l'ensemble du protocole est gravement affecté, tandis qu'un Élevé signifie que des utilisateurs individuels peuvent être gravement affectés.
Les problèmes de gravité moyenne signifient généralement des problèmes qui peuvent être dommageables mais peu susceptibles de se produire.
Certains auditeurs signaleront des problèmes, tels que le non-respect du guide de style Solidity ou des noms de variables et de fonctions mal orthographiés ou trompeurs. Ce ne sont pas des vulnérabilités de sécurité, mais cela pourrait semer la confusion sur la route. Tous les auditeurs ne signalent pas les problèmes d'information.
Certains auditeurs suggéreront des moyens d'améliorer l'efficacité du gaz de certains codes. Celles-ci ne sont pas liées à la sécurité, mais elles amélioreront certainement l'expérience utilisateur.
Estimations basées sur des informations publiques
Si vous regardez sur Fiverr, vous trouverez des services pour auditer des contrats intelligents à bas prix, mais voudriez-vous vraiment dépendre de ce type de service pour quelque chose d'aussi critique ? Étant donné que les contrats comportent généralement des accords de non-divulgation, les tarifs peuvent être difficiles à déterminer, mais voici quelques informations publiques.
1. Pools de récompenses pour les audits concurrentiels Les plateformes d'audit concurrentielles annoncent le pool de récompenses, et bien sûr, cet argent provient du client qui paie pour l'audit. Ici, vous pouvez voir des cagnottes aussi basses que 5 000 et parfois jusqu'à des centaines de milliers de dollars pour de très grands projets. Bien sûr, les personnes qui organisent le concours s'attendent à des frais pour faire fonctionner la plate-forme, donc le coût réel sera plus élevé.
2. Salaires des sous-traitants Le cabinet d'audit Spearbit a publié les tarifs auxquels il paie ses auditeurs (qui sont des sous-traitants et non des employés), de sorte que l'on peut en déduire le coût d'un audit (sans compter les opérations et la marge bénéficiaire) sur cette base. Le salaire par auditeur est de 3 000 à 20 000 par semaine selon l'ancienneté. Gardez à l'esprit qu'il ne s'agit pas d'un travail à temps plein, mais d'un engagement par engagement.
3. Vérificateurs indépendants Un autre point de données dont nous disposons concerne les vérificateurs indépendants qui ont rendu publics leurs bénéfices. L'un prétend gagner 40 000 $ par mois les bons mois, en effectuant environ quatre audits par mois, un autre réclame 50 000 $ en un mois avec cinq audits. C'est le haut de gamme de ce qu'un auditeur indépendant peut s'attendre à faire, mais ce n'est pas en dehors du domaine du possible ; les ingénieurs du personnel des grandes entreprises de la Silicon Valley gagnent plus que cela .
Il n'y a pas de modèle de tarification standard, mais voici quelques pratiques que les auditeurs utilisent pour déterminer le prix qu'ils proposent.
Un modèle de tarification courant est $ / lignes de code. Cela pourrait coûter entre quelques dollars et des dizaines de dollars par ligne.
D'autres auditeurs utilisent une combinaison de taille et de complexité. Une NFT de 1 000 lignes est considérablement plus simple qu'une bibliothèque mathématique de 1 000 lignes. Le cabinet d'audit portera un jugement subjectif basé sur la combinaison de ces facteurs.
Certains auditeurs accorderont une remise si le projet à auditer est bifurqué ou très similaire à un projet établi, car ils peuvent tirer parti des audits antérieurs pour déterminer si votre projet a appris des erreurs passées. De plus, le nombre total de lignes qui n'ont pas été examinées représente un petit pourcentage du projet. Différents auditeurs auront un seuil différent pour ce qui constitue des projets « similaires » aux projets établis.
Ce modèle est courant chez les auditeurs indépendants. Le chercheur en sécurité reçoit un petit acompte et reçoit un paiement pour chaque bogue trouvé avec un prix plus élevé pour les problèmes de gravité plus élevée. Cela a l'avantage d'inciter l'auditeur à chercher plus fort, mais cela peut aussi inciter à exagérer la gravité des bogues.
Par rapport à d'autres travailleurs du savoir hautement spécialisés, comme les avocats (dont les meilleurs peuvent gagner plus d' un million de dollars par mois ), les audits de contrats intelligents ne sont pas d'un coût prohibitif, mais ils peuvent constituer un fardeau important pour les petites entreprises.
Devenir un auditeur de contrat intelligent n'est pas facile. En règle générale, le niveau de compétence requis est comparable à la tentative d'obtenir un emploi hautement compétitif dans la Silicon Valley, ce qui signifie que les salaires de départ seront facilement à six chiffres. Un cabinet d'audit doit facturer une marge importante en plus de ces salaires pour rester rentable, il n'est donc pas surprenant que les audits coûtent des dizaines de milliers de dollars, voire des centaines de milliers de dollars.
RareSkills n'est pas un cabinet d'audit, mais nombre de nos instructeurs sont des auditeurs professionnels et nous effectuons des recherches sur la sécurité. Nous avons une vue d'initié des entreprises qui sont réputées et de celles qui ne le sont pas. N'hésitez pas à nous contacter et à nous faire part de vos besoins, nous vous dirigerons vers la bonne ressource selon votre situation.
Si vous cherchez à former vos ingénieurs à la manière de développer des contrats intelligents sécurisés, notre formation sur les contrats intelligents, leader du secteur, destinée aux ingénieurs professionnels, pourrait vous intéresser.
Également publié ici .