Clear Sky Science · fr

DIVE : un jeu de données multi-étiquette sur les vulnérabilités des contrats intelligents

· Retour à l’index

Pourquoi des accords numériques plus sûrs comptent

Chaque jour, des milliards de dollars transitent via des « contrats intelligents » — des morceaux de code qui exécutent automatiquement des transactions sur des blockchains comme Ethereum. Lorsque ces accords numériques contiennent des erreurs cachées, les conséquences peuvent être graves : fonds gelés, actifs volés et perte de confiance dans les nouveaux systèmes financiers. Cet article présente DIVE, un vaste jeu de données construit avec soin qui aide les chercheurs à détecter et comprendre les faiblesses des contrats intelligents de manière plus fiable, afin que les accords numériques qui sous-tendent les cryptomonnaies et les applications décentralisées deviennent plus sûrs pour tous.

Figure 1
Figure 1.

Comment les contrats numériques vivent et évoluent

Les contrats intelligents traversent plusieurs étapes au cours de leur existence. Ils commencent comme du code source lisible écrit par des développeurs, puis sont compilés en instructions adaptées à la machine et envoyés dans une transaction de déploiement sur la blockchain. Une fois accepté, un contrat reçoit une adresse permanente et son code devient immuable, mais son état interne peut encore évoluer au fur et à mesure des interactions. Tout au long de ce parcours, différents types de données apparaissent — code source, bytecode, paramètres et enregistrements de transactions — qui contiennent autant d’indices sur d’éventuelles failles. DIVE s’articule autour de cette vue du cycle de vie, collectant des caractéristiques à la fois avant le déploiement (code et configuration) et après le déploiement (comportement on-chain) pour offrir une image plus complète de chaque contrat.

Pourquoi les jeux de données anciens n’étaient pas suffisants

Les premières collections de contrats intelligents ont aidé à lancer des approches d’apprentissage automatique pour repérer les vulnérabilités, mais elles présentaient des limites sérieuses. Beaucoup ne contenaient qu’un petit nombre de contrats, se concentraient sur une fenêtre temporelle étroite ou des versions spécifiques du compilateur, ou capturaient un seul type de données, comme le code source ou le bytecode, mais pas les deux. Certaines présentaient les vulnérabilités comme si un seul type pouvait apparaître par contrat, alors que les contrats réels contiennent souvent plusieurs problèmes à la fois. Les étiquettes n’étaient pas toujours cohérentes, car différentes études utilisaient des schémas de nommage distincts et s’appuyaient sur un ou deux outils sans standard commun. Tout cela rendait difficile la comparaison des résultats entre articles ou la construction de détecteurs qui généralisent au-delà d’une étude unique.

Ce que contient le jeu de données DIVE

DIVE regroupe 22 330 contrats Ethereum réels, déployés entre 2016 et 2024 et couvrant les principales versions du langage Solidity. Chaque contrat est décrit par des centaines de caractéristiques. Avant le déploiement, DIVE enregistre des éléments tels que la version du compilateur, les paramètres d’optimisation, l’utilisation de bibliothèques externes, la structure de l’interface publique (fonctions et événements), des mesures de complexité du code et des motifs dans les instructions bas niveau utilisées pour créer le contrat. Après le déploiement, il ajoute des informations issues de la transaction de lancement — consommation de gas, valeur transférée, moment et position dans le bloc — ainsi que des motifs d’instructions du code d’exécution du contrat. Cette double perspective permet aux chercheurs d’étudier comment les choix de codage et le comportement on-chain se rapportent à la sécurité.

Comment les vulnérabilités sont identifiées

Pour décider quels contrats sont vulnérables, DIVE ne se fie pas à un seul outil ni à un simple vote à la majorité. Il exécute plutôt six outils d’analyse différents, chacun avec ses points forts, et centralise leurs résultats via un cadre standardisé. Les sorties des outils sont mappées sur huit catégories bien connues de la liste DASP Top 10, telles que les failles de réentrance, le contrôle d’accès défaillant, les erreurs arithmétiques, les risques de déni de service, la mauvaise génération d’aléatoire, le front running, la manipulation du temps et les appels bas niveau non vérifiés. Un schéma de vote « pondéré » décide ensuite, catégorie par catégorie, du niveau de confiance accordé à chaque outil. En complément, une seconde étape de validation vérifie si le problème signalé est réellement confirmé par le code du contrat — par exemple en s’assurant qu’un bug arithmétique supposé n’est pas déjà neutralisé par des contrôles du compilateur moderne ou des bibliothèques de sécurité. Ce contrôle supplémentaire élimine de nombreuses fausses alertes, en particulier pour les avertissements liés au déni de service et au temps.

Figure 2
Figure 2.

Comment cette ressource peut être utilisée

Parce que DIVE est multi-étiquette, un même contrat peut être marqué de plusieurs types de vulnérabilités, reflétant la manière dont les bugs du monde réel s’agrègent et interagissent. Le jeu de données prend en charge un large éventail d’études : classification binaire et multi-classe, apprentissage multi-étiquette et multi-tâche, transfert d’apprentissage entre versions du compilateur ou années, ainsi que des expériences comparant la valeur des informations pré-déploiement versus post-déploiement. Il documente également la fréquence d’apparition conjointe des vulnérabilités, révélant que certaines, comme la réentrance et les problèmes de contrôle d’accès, ont tendance à coexister, tandis que d’autres sont plus rares et isolées. Ces tendances encouragent des méthodes d’apprentissage avancées qui modélisent les relations entre types de bugs, plutôt que de traiter chaque type individuellement.

Ce que cela signifie pour les utilisateurs quotidiens

Pour la plupart des gens, les contrats intelligents sont une infrastructure invisible derrière des applications de trading, des jeux, des plateformes de prêt et d’autres services blockchain. Le jeu de données DIVE ne corrige pas directement les vulnérabilités, mais il fournit des données détaillées et bien étiquetées nécessaires pour entraîner et évaluer de manière rigoureuse des outils de détection plus performants. Ces outils peuvent, à leur tour, aider les développeurs à repérer les problèmes plus tôt et aider les auditeurs à prioriser leurs inspections. Parce que le cadre est open et peut être relancé sur de nouveaux contrats au fil du temps, DIVE offre une base vivante pour améliorer la sécurité des accords numériques — réduisant le risque que les utilisateurs quotidiens soient lésés par des erreurs cachées dans le code sur lequel ils comptent.

Citation: Alsunaidi, S.J., Aljamaan, H. & Hammoudeh, M. DIVE: A Multi-Label Smart Contract Vulnerability Dataset. Sci Data 13, 664 (2026). https://doi.org/10.1038/s41597-026-07025-5

Mots-clés: sécurité des contrats intelligents, Ethereum, vulnérabilités de la blockchain, jeu de données pour apprentissage automatique, DASP Top 10