
Démystifier les bugs exploitables dans les contrats intelligents

Ce projet vise à fournir une ressource précieuse aux développeurs Web3 et aux analystes de sécurité en facilitant leur compréhension des bugs exploitables dans les contrats intelligents. Nous menons une analyse approfondie des bugs exploitables extraits de code4rena et classons chaque bug selon sa nature.
Nos recherches préliminaires suggèrent qu'une proportion notable des bugs exploitables dans les contrats intelligents sont des bugs fonctionnels, qui ne peuvent pas être détectés à l'aide d'oracles simples et généraux comme la réentrance. Nous visons à sensibiliser à l'importance de ces bugs et à encourager les praticiens à développer des oracles sémantiques automatiques plus sophistiqués et nuancés pour les détecter.
Un nombre important de bugs exploitables dans les contrats intelligents appartient à la catégorie des bugs fonctionnels, qui ne peuvent pas être détectés à l'aide d'oracles simples et généraux.
Veuillez noter que ce dépôt est actuellement en cours de développement actif, et que les données peuvent changer au fil du temps en raison des concours code4rena en cours.
Le jeu de données est organisé en quatre dossiers :
Nous classons les bugs étudiés en trois catégories principales selon leur nature :
Comme la classification des bugs fonctionnels peut être ambiguë, nous accueillons volontiers les suggestions visant à améliorer nos normes de classification. Vous trouverez des informations plus détaillées sur les étiquettes dans notre documentation, et nous vous encourageons à consulter nos lignes directrices actuelles pour plus d'informations.
Notre objectif est de créer une liste complète de techniques de détection de vulnérabilités qui constituera une ressource précieuse pour les développeurs Web3 et les analystes de sécurité. Nous nous concentrerons sur deux catégories principales :
Nous accueillons chaleureusement toutes suggestions ou contributions supplémentaires de la communauté pour aider à élargir et améliorer la liste.
Nous pensons que les futurs efforts de sécurité web3 privilégieront l'identification des bugs fonctionnels et le développement d'oracles correspondants. À cette fin, nous avons l'intention de compiler une liste de techniques fournissant des orientations pour la création d'oracles sémantiques automatiques. Ces techniques proviendront de divers matériaux, tels que des articles de recherche évalués par des pairs, des prépublications, des outils industriels et des ressources en ligne.
Cette section comprendra des techniques open-source disponibles publiquement et actuellement en développement actif. Ces techniques peuvent être utilisées directement par les développeurs Web3 et les analystes de sécurité, ou comme blocs de construction pour d'autres outils. Nous accordons la priorité aux techniques au niveau du code source, qui sont mieux adaptées aux contextes de développement Web3 et d'audit.
| Technique | Language | Description | Security-related Keywords |
|---|---|---|---|
| Move Prover | Move | Spécification et vérification formelles | Vérification formelle |
Nous acceptons tous types de contributions à notre projet, y compris, mais sans s'y limiter :
results/contests.csvDe plus amples détails sont disponibles dans nos lignes directrices de contribution.
Si vous utilisez notre jeu de données pour une publication académique, nous vous serions très reconnaissants de citer le travail suivant :``` @inproceedings{DBLP:conf/icse/ZhangZXL23, author = {Zhuo Zhang and Brian Zhang and Wen Xu and Zhiqiang Lin}, title = {Demystifying Exploitable Bugs in Smart Contracts}, booktitle = {{ICSE}}, pages = {615--627}, publisher = {{IEEE}}, year = {2023} }
## Clarification
Please refer to our classification [documentation](https://github.com/zhangzhuosjtu/web3bugs/blob/HEAD/docs/classification.md).
## Remerciements
Nous souhaitons adresser nos sincères remerciements à [code4rena](https://code4rena.com/) pour avoir mis ces précieuses informations à la disposition du public.
<details>
<summary>Nos remerciements vont également aux contributeurs suivants pour leur précieuse contribution.</summary></br>
+ [__ItsNio__](https://github.com/niothefirst)
+ [__Wen Xu__](https://github.com/tarafans)
+ [__Patrick Collins__](https://github.com/PatrickAlphaC)
+ [__Meng Xu__](https://twitter.com/meng_xu_cs)
+ [__y3s0n__](https://github.com/CharesFang)
+ [__William Aaron Cheung__](https://github.com/Troublor)
+ [__soaphorn__](https://github.com/soaphorn)
+ [__Fabio Gritti__](https://github.com/degrigis)
+ [__Yannick__](https://twitter.com/MillusPontius)
</details>
| Technique | Bug Category |
|---|
| Technique | Developer(s) | Description | Security-related Keywords |
|---|
| Slither | Trail of Bits | Cadre d'analyse statique | Détecteurs de vulnérabilités, SlithIR |
| Aderyn | Cyfrin | Cadre d'analyse statique | Analyseur statique, Détecteurs personnalisés, Rapports Markdown |
| Foundry | Paradigm | Chaîne d'outils de développement | Fuzzing, Fuzzing avec état (Test d'invariants), Test différentiel |
| Echidna | Trail of Bits | Fuzzer | Fuzzing , Fuzzing avec état (Test d'invariants), CI/CD |
| Optik | Trail of Bits | Fuzzer hybride (Exécution symbolique + Fuzzing) | Fuzzing, Fuzzing avec état, Exécution symbolique |
| Woke | Ackee Blockchain | Chaîne d'outils de développement | Test inter-chaînes, Test d'invariants, Détecteurs de vulnérabilités, IR |
| 4naly3er | Picodes | Scanner statique | Tests de pré-contenu Code4rena |
| Manticore | Trail of Bits | Outil d'exécution symbolique | Exécution symbolique, Test de propriétés |
| Halmos | a16z | Vérificateur de modèles borné symbolique | Exécution symbolique, Vérificateur de bornes |
| Solidity SMTChecker | Ethereum Foundation | Vérification formelle par exécution symbolique | Solidity, Vérification formelle, Exécution symbolique |
| Mythril | Consensys | Outil d'exécution symbolique | Exécution symbolique, Analyse on-chain, Détecteurs de vulnérabilités, Analyse de taint |
| Pyrometer [WIP] | Nascent | Outil d'exécution symbolique | Exécution symbolique, Interprétation abstraite |
| greed | UCSB Seclab | Cadre d'analyse statique/symbolique | Exécution symbolique, Vérificateur de bornes, Analyses statiques, Test de propriétés |
| ethpwn | ethpwn | Analyse dynamique/Débogage | Simulations EVM, Débogage EVM |
| Ressource | Mots-clés |
|---|
| Articles académiques sur les contrats intelligents | Liste d'articles académiques |
| Reproduction de hacks DeFi - Foundry | Réplication d'attaques |
| Norme de vérification de la sécurité des contrats intelligents | Liste de contrôle de sécurité |
| Outils de sécurité Awesome MythX pour contrats intelligents | Service d'analyse de sécurité |
| Propriétés de sécurité courantes des contrats intelligents | Suite de conformité de sécurité |
| Modèles de PoC Immunefi | Modèles de PoC |
| Ressources MEV Awesome | Ressources MEV |
| Construction de benchmarks d'attaques front-running et évaluation de techniques de détection de vulnérabilités | Jeu de données front-running |
| Base de recherche ultime sur la DeFi et la blockchain | Sécurité blockchain tout-en-un |
| Bugs de fork courants | Jeu de données d'exploits |