Mise à jour : 14 septembre 2026. Un audit de contrat intelligent peut constituer une preuve utile, mais ne représente pas une certification de sécurité. La question essentielle n’est pas « Ce projet a-t-il été audité ? » mais plutôt « Qu’a-t-on audité précisément ? Quelle version a été examinée ? Quels points restent en suspens ? Et le code déployé est-il toujours conforme au système examiné ? »
Les recommandations de sécurité d'Ethereum indiquent clairement que les audits ne constituent pas une solution miracle et ne permettent pas de déceler toutes les failles. De même, le processus d'audit d'OpenZeppelin considère la portée, les résultats, la gravité, l'état de la correction et l'examen des correctifs comme des éléments distincts du tableau de sécurité. L'objectif pratique pour un acheteur est donc de lire le rapport comme un document d'évaluation des risques, et non comme un argument marketing.
Liste de vérification rapide des signaux d'alerte
| Que vérifier |
Signal à faible risque |
Drapeau rouge |
| Portée |
Les référentiels, fichiers, contrats, réseaux et exclusions exacts sont listés. |
L’appellation « audité » est employée sans définition claire de son périmètre. |
| Version |
Le hachage de commit, l'étiquette ou la version exacte du code est identifié. |
Aucun commit ni le code déployé n'ont été modifiés après l'audit. |
| Résultats critiques/élevés |
Résolu et revérifié indépendamment. |
Ouvert, partiellement résolu, accepté sans mesure d'atténuation convaincante, ou sans examen de correction. |
| Pouvoirs administratifs |
Les rôles sont documentés et protégés par multisignature/verrouillage temporel le cas échéant. |
Un seul portefeuille peut immédiatement créer, suspendre, vider, mettre à niveau ou modifier ses paramètres. |
| Possibilité de mise à niveau |
Le modèle de proxy et l'autorité de mise à niveau sont inclus et clairement documentés. |
La mise en œuvre auditée peut être remplacée après l'audit sans délai ni examen significatifs. |
| Dépendances et oracles |
Les hypothèses de confiance et les systèmes externes sont identifiés. |
Le rapport exclut tout composant qui contrôle la tarification, la conservation, les ponts ou le comportement du protocole de base. |
| Âge d'audit |
Assez récent pour la base de code actuelle, avec des révisions de suivi après les changements majeurs. |
Un ancien audit réutilisé comme preuve pour un produit sensiblement différent. |
Étape 1 : Vérifier que le rapport est authentique et provient bien de l’auditeur.
Légende : Commencez par consulter l’identité du rapport, la date, l’auditeur et le résumé de la gravité avant de lire les conclusions individuelles.
Vérifié : les rapports d’audit réputés mentionnent généralement le projet, la période d’évaluation, l’auditeur et le code examiné. Les rapports publiés par OpenZeppelin et les rapports de diligence de Consensys incluent souvent une section relative au périmètre et à la révision du code. Par exemple, le rapport USDKG de Consensys indique le hachage exact du commit examiné, tandis que les rapports d’OpenZeppelin précisent systématiquement le dépôt et le commit ou la demande de fusion concernés.
Idée fausse : un PDF mis en ligne par le projet est automatiquement fiable car il contient le logo d’un auditeur. Cela ne suffit pas. Les fichiers peuvent être obsolètes, modifiés ou sortis de leur contexte d’origine.
Action : rechercher le rapport sur le site ou dans le dépôt de l’auditeur, dans la mesure du possible. Comparer le nom du projet, la date du rapport, l’URL et les détails de version avec la copie fournie par l’équipe en charge du jeton.
Références principales : documentation d'audit OpenZeppelin et audit Consensys Diligence USDKG .
Étape 2 : Lire le périmètre avant les conclusions
Légende : Le badge d'audit importe moins que le périmètre d'audit : il faut identifier précisément les contrats et les éléments qui ont été examinés.
Un audit ne porte que sur ce qui est inclus dans son périmètre. Un rapport peut examiner un contrat de jeton, mais exclure le staking, les ponts, les coffres-forts, la gouvernance, l'infrastructure frontale, les dépendances externes ou une mise à niveau ultérieure.
Vérifié : l’audit Panoptic d’OpenZeppelin détaille son périmètre et précise que les correctifs ont été répartis dans différents dépôts. Un autre rapport d’OpenZeppelin concernant un émulateur EVM indique explicitement que seules les modifications d’une requête d’extraction spécifique ont été auditées, et non l’intégralité des fichiers. Ces exemples montrent pourquoi l’affirmation « le projet a été audité » peut être une conclusion trop générale.
Idée fausse : si un contrat de l’écosystème est audité, l’ensemble du protocole est couvert. Ce n’est pas le cas.
Action : listez tous les composants permettant de détenir ou de transférer des fonds, de fixer des prix, de modifier des autorisations, de créer des jetons ou de mettre à jour des contrats. Indiquez ensuite si chacun d’eux fait partie du périmètre d’audit. Tout champ vide important est une question complémentaire.
Exemples de références : audit OpenZeppelin Panoptic et audit OpenZeppelin EVM Emulator .
Étape 3 : Faire correspondre le hachage de validation au code qui a été réellement déployé.
Légende : Un rapport est lié à une révision de code ; vérifiez que la révision auditée correspond toujours aux contrats déployés.
C'est l'un des contrôles les plus négligés. Un audit peut avoir été excellent, mais le code peut avoir été modifié par la suite.
Vérifié : la documentation de Code Inspector d’OpenZeppelin indique que les rapports sont liés à un commit spécifique, et les directives de vérification des contrats d’Ethereum expliquent que le code source vérifié aide les utilisateurs à établir que le code source publié correspond au bytecode déployé.
Idée fausse : l’expression « audité le mois dernier » signifie que le contrat déployé aujourd’hui est le contrat audité. Le temps, à lui seul, ne le prouve pas.
Action : repérez le hachage de commit, l’étiquette ou la demande de fusion dans le rapport. Consultez ensuite la documentation de déploiement du projet et le code source vérifié sur l’explorateur de blocs approprié. Si l’implémentation déployée est plus récente, recherchez un audit de suivi ou une revue de différences documentée.
Références principales : documentation d’OpenZeppelin Code Inspector et guide de vérification des contrats d’Ethereum.org .
Étape 4 : Traiter le diagnostic avec autant de sérieux que la gravité
Légende : « Critique », « Élevé » ou « Moyen » ne représentent que la moitié de l’histoire ; vérifiez si chaque problème est résolu, partiellement résolu ou toujours en suspens.
La gravité indique l'importance potentielle d'une anomalie. Le statut indique ce qui s'est passé ensuite. L'outil d'audit d'OpenZeppelin distingue différents statuts : résolu, partiellement résolu, accusé de réception (non résolu) et sans réponse.
Idée fausse : l’expression « audit terminé » signifie que le projet a tout corrigé. Ce n’est pas le cas. L’audit peut être terminé alors que des points restent à éclaircir.
Action : dressez une liste concise de tous les problèmes critiques et importants, puis consignez leur statut final et les éléments de preuve relatifs à la correction. Pour les problèmes de niveau moyen, soyez particulièrement vigilant lorsque plusieurs d’entre eux révèlent une même faiblesse de conception, comme un problème de contrôle d’accès, de manipulation des prix ou d’erreurs comptables.
Ne négligez pas non plus d'emblée les anomalies de faible gravité. Leur importance dépend du contexte du système, de leur combinaison avec d'autres problèmes et de la manière dont les acteurs privilégiés peuvent utiliser la fonctionnalité affectée.
Étape 5 : Lisez la section « Constatation, impact, conditions préalables et solution », et pas seulement le titre.
Légende : Les étiquettes de gravité ne sont qu’un point de départ ; il est essentiel de comprendre les conditions d’exploitation, les actifs concernés et le raisonnement de l’auditeur.
Un résultat utile explique généralement les problèmes potentiels, leur importance, le chemin d'exécution concerné, les prérequis et une recommandation. Un résultat « Élevé » nécessitant un administrateur compromis peut représenter un risque pratique différent d'une exploitation sans autorisation que n'importe quel utilisateur peut déclencher.
Vérifié : OpenZeppelin décrit la gravité d'un problème comme reflétant des facteurs tels que l'impact, la probabilité et la difficulté d'exploitation. L'analyse de Trail of Bits portant sur 246 détections de contrats intelligents a également révélé que des problèmes graves surviennent dans de multiples catégories, et pas seulement dans des classes de bogues connues comme la réentrance. Leurs données ont mis en évidence le contrôle d'accès, l'authentification, la synchronisation, les données numériques, la validation et d'autres classes comme sources importantes de risques.
Idée reçue : la réentrance est le seul bug des contrats intelligents qui mérite notre attention. C’est faux. La logique métier, le contrôle d’accès, la validation, la conception de l’oracle et la comptabilité peuvent être tout aussi importants.
Action : pour chaque constatation grave, répondre à quatre questions : Qui peut la déclencher ? Quels sont les avantages ou les inconvénients ? Quelles hypothèses sont nécessaires ? La solution proposée a-t-elle été examinée ?
Références principales : modèle de problèmes d’audit OpenZeppelin , analyse des résultats d’audit Trail of Bits et considérations de sécurité Solidity .
Étape 6 : Examiner les rôles privilégiés, les clés d’administration, les droits de suspension, de création et de mise à niveau
Légende : Les fonctions privilégiées méritent une attention particulière car un chemin de code sécurisé peut tout de même comporter des risques en matière de gouvernance ou de gestion des clés.
De nombreux protocoles incluent délibérément des rôles privilégiés. Cela ne les rend pas automatiquement non sécurisés, mais cela modifie le modèle de confiance.
Vérifié : Les recommandations de sécurité d’Ethereum concernant les contrats intelligents mettent en garde contre le risque qu’un propriétaire unique devienne un point de défaillance central. Elles préconisent le contrôle d’accès basé sur les rôles et le contrôle multisignature pour réduire ce risque. La documentation d’OpenZeppelin sur le verrouillage temporel explique que l’exécution différée permet aux utilisateurs d’examiner les opérations de maintenance et de se retirer au moment opportun.
Idée fausse : l’absence de vulnérabilités critiques signifie que les administrateurs ne peuvent pas nuire aux utilisateurs. La sévérité de l’audit et le pouvoir de gouvernance sont deux choses différentes.
Action : recherchez dans le rapport des termes tels queowner ,admin ,role ,multisig ,timelock ,pause ,mint , ,upgrade ,blacklist , etwithdraw . Identifiez ensuite qui occupe chaque rôle actuellement et la rapidité avec laquelle ce rôle peut agir.
Références principales : Guide de sécurité des contrats intelligents Ethereum et documentation sur le contrôle d’accès d’OpenZeppelin .
Étape 7 : Vérifier la possibilité de mise à niveau, les oracles, les ponts et autres hypothèses de confiance externes
Légende : Auditez le périmètre de confiance, et pas seulement les fichiers Solidity : les proxys, les oracles, les ponts et les dépendances externes peuvent modifier le risque réel.
Un proxy évolutif peut conserver la même adresse publique tout en modifiant sa logique d'implémentation. Les oracles peuvent fournir des prix qui déterminent les liquidations. Les ponts peuvent introduire des hypothèses distinctes en matière de conservation ou de validation. Les bibliothèques et protocoles externes peuvent présenter des défaillances indépendantes.
Vérifié : OpenZeppelin indique que les systèmes basés sur un proxy séparent une adresse proxy stable du code d’implémentation modifiable. Sa documentation précise également que les mises à jour nécessitent une autorisation rigoureuse. Le guide de sécurité d’Ethereum explique le risque de manipulation de l’oracle et souligne que des données de prix incorrectes peuvent entraîner l’exécution de contrats avec des données erronées.
Idée fausse : la vérification du code source à l’adresse du proxy prouve que le comportement futur est immuable. Pour les systèmes évolutifs, ce n’est pas forcément le cas.
Action : déterminer si le contrat est évolutif, qui autorise les mises à jour, si celles-ci sont retardées et si l’implémentation actuelle est vérifiée. Ensuite, lister tous les systèmes externes dont la défaillance pourrait affecter les fonds des utilisateurs.
Références principales : documentation du proxy OpenZeppelin et guide de sécurité des contrats intelligents Ethereum .
Étape 8 : Prendre une décision d’achat, d’évitement ou d’étude en fonction du risque résiduel
Légende : La décision finale doit refléter les risques qui subsistent après les corrections, et non l’existence d’un label d’audit.
Même après correction, le risque persiste. OpenZeppelin a clairement indiqué dans ses audits publiés que les revues à durée limitée ne peuvent garantir la détection de tous les bogues et risques. Lors de l'audit Audius, par exemple, les auditeurs ont recommandé des tests bêta, un programme de primes aux bogues et un nouvel audit après la découverte d'un grand nombre de problèmes graves. Lors de l'audit Panoptic, ils ont recommandé une surveillance accrue et un nouvel audit après des modifications importantes du code.
Idée reçue : des audits multiples éliminent totalement le risque lié aux contrats intelligents. C’est faux. Ils améliorent la fiabilité, mais la sécurité dépend aussi de la précision du déploiement, des opérations, de la sécurité des clés d’administration, de la surveillance, de la réponse aux incidents, des hypothèses économiques et des mises à jour futures.
Action : classer le projet dans l'une des trois catégories suivantes :
- Achat / poursuite des recherches : le code actuellement déployé correspond au périmètre examiné ; les problèmes importants ont été résolus et revérifiés ; les pouvoirs privilégiés sont acceptables et transparents ; les dépendances externes sont comprises.
- Approfondir l'enquête : des informations clés manquent, l'audit est antérieur à des mises à niveau majeures, ou certains problèmes de niveau moyen/élevé ne sont que partiellement résolus ou reconnus.
- À éviter pour le moment : des problèmes critiques/importants restent non résolus, le déploiement ne correspond pas à la révision auditée, les contrats principaux étaient hors périmètre ou les administrateurs ont mal divulgué leur contrôle unilatéral sur les fonds des utilisateurs.
Comment interpréter les expressions courantes en audit
| Phrase |
Ce que cela signifie habituellement |
Votre prochaine action |
| « Aucun problème critique détecté » |
L'examen n'a pas permis d'identifier de constatation critique dans son champ d'application et son délai. |
Lisez toujours les niveaux de confiance élevé et moyen, les hypothèses de confiance, les exclusions et les pouvoirs administratifs. |
| "Résolu" |
Le projet a modifié le code et l'auditeur a accepté la correction dans l'ensemble des correctifs examinés. |
Vérifiez que le correctif fait bien partie du code déployé. |
| « Reconnu » |
L'équipe reconnaît le problème, mais n'a peut-être pas modifié le code. |
Lisez la justification ; ne considérez pas cela comme équivalent à une valeur fixe. |
| «Partiellement résolu» |
La mesure d'atténuation réduit le risque, mais n'élimine pas complètement le problème. |
Comprendre la voie d'exploitation restante ou l'hypothèse. |
| « Hors du champ d'application » |
L'auditeur n'a pas évalué cette composante. |
Ne tirez aucune conclusion quant à la sécurité de ce composant à partir du rapport. |
| « Considéré comme digne de confiance » |
Le modèle d'audit repose sur le bon fonctionnement de cet acteur ou de cette dépendance. |
Décidez si vous êtes prêt à accepter cette hypothèse de confiance. |
Cinq signaux d'alarme qui méritent un arrêt immédiat
- Le projet ne peut pas afficher le rapport original hébergé par l'auditeur. Une capture d'écran ou un logo ne suffisent pas.
- Le rapport ne précise ni sa portée ni sa version. Sans commit, étiquette ni fichiers exacts, il est difficile de savoir ce qui a été examiné.
- Les questions critiques ou importantes restent en suspens sans justification solide et documentée.
- Le protocole est évolutif, mais le rapport aborde à peine la question de l'autorité de mise à jour ou des rôles privilégiés.
- Le déploiement a subi des modifications importantes après l'audit et aucun compte rendu de suivi n'est disponible.
Si l'un de ces éléments apparaît, la meilleure chose à faire est de ne pas chercher à le minimiser. Suspendez votre décision d'investissement et demandez des preuves actualisées.
Une procédure de rapport d'audit préalable à l'achat de 10 minutes
- Ouvrez le rapport sur le site officiel du commissaire aux comptes.
- Consignez la date du rapport, le dépôt, la portée et le hachage du commit.
- Confirmez les contrats déployés et les adresses de mise en œuvre.
- Lire tous les résultats critiques et élevés.
- Vérifier le statut final de chaque problème sérieux.
- Recherchez les rôles privilégiés et les pouvoirs d'urgence.
- Identifier les mises à niveau de proxy et qui les contrôle.
- Identifier les oracles, les ponts, les systèmes de garde et les dépendances externes.
- Recherchez les modifications apportées après le commit audité.
- Déterminez le risque résiduel que vous acceptez avant d'acheter.
En résumé
Un audit de contrat intelligent atteste d'un examen, mais ne garantit pas sa sécurité. Le signal le plus probant n'est pas le logo de l'auditeur, mais la chaîne de preuves reliant un périmètre clairement défini, une révision précise du code, des constats sérieux, des correctifs vérifiés, le bytecode déployé et des contrôles opérationnels transparents.
L'erreur la plus dangereuse lors de la lecture d'un document est de s'arrêter à la mention « audité ». La question la plus pertinente est : quels problèmes peuvent encore survenir après cet audit ? Si vous pouvez y répondre clairement et que vous êtes à l'aise avec les risques restants, votre décision sera plus éclairée. Si le périmètre, l'état des correctifs, les droits d'administration ou la version déployée ne sont pas clairement définis, il est impératif de mener une enquête avant tout achat.
Sources primaires
Cet article est fourni à titre informatif uniquement et ne constitue pas un conseil financier. Un audit ne peut éliminer les risques liés aux contrats intelligents, à la gouvernance, aux oracles, ainsi que les risques économiques, opérationnels et de marché.