
Desmitificando los errores explotables en los contratos inteligentes

Este proyecto tiene como objetivo proporcionar un recurso valioso para desarrolladores Web3 y analistas de seguridad, facilitando su comprensión de los bugs explotables en contratos inteligentes. Realizamos un análisis exhaustivo de bugs explotables extraídos de code4rena y clasificamos cada bug según su naturaleza.
Nuestra investigación inicial sugiere que una proporción notable de bugs explotables en contratos inteligentes son bugs funcionales, que no pueden detectarse mediante oráculos simples y generales como la reentrancia. Nuestro objetivo es concienciar sobre la importancia de dichos bugs y animar a los profesionales a desarrollar oráculos semánticos automáticos más sofisticados y matizados para detectarlos.
Un número significativo de bugs explotables en contratos inteligentes cae dentro de la categoría de bugs funcionales, que no pueden detectarse mediante oráculos simples y generales.
Ten en cuenta que este repositorio se encuentra actualmente en desarrollo activo, y los datos pueden cambiar con el tiempo debido a los concursos de code4rena en curso.
El dataset está organizado en cuatro carpetas:
Clasificamos los bugs analizados en tres categorías principales según su naturaleza:
Dado que clasificar bugs funcionales puede ser ambiguo, agradecemos sugerencias para mejorar nuestros estándares de clasificación. Puedes encontrar información más detallada sobre las etiquetas en nuestra documentación, y te animamos a consultar nuestras directrices de clasificación actuales para obtener más información.
Nuestro objetivo es crear una lista completa de técnicas de detección de vulnerabilidades que sea un recurso valioso para desarrolladores Web3 y analistas de seguridad. Nos centraremos en dos categorías principales:
Acogemos con satisfacción cualquier sugerencia o contribución adicional de la comunidad para ayudar a ampliar y mejorar la lista.
Creemos que los futuros esfuerzos de seguridad web3 priorizarán la identificación de bugs funcionales y el desarrollo de oráculos correspondientes. Con este fin, tenemos la intención de recopilar una lista de técnicas que sirvan de guía en la creación de oráculos semánticos automáticos. Estas técnicas se obtendrán de diversos materiales, como artículos de investigación revisados por pares, preprints, herramientas de la industria y recursos en línea.
Esta sección incluirá técnicas de código abierto que están disponibles públicamente y actualmente en desarrollo activo. Estas técnicas pueden ser utilizadas directamente por desarrolladores Web3 y analistas de seguridad, o como componentes básicos para otras herramientas. Damos prioridad a las técnicas a nivel de código fuente, que son más adecuadas para los contextos de desarrollo y auditoría Web3.
| Técnica | Lenguaje | Descripción | Palabras clave relacionadas con la seguridad |
|---|---|---|---|
| Move Prover | Move | Especificación y Verificación Formal | Verificación Formal |
Aceptamos todo tipo de contribuciones a nuestro proyecto, incluyendo, entre otras:
results/contests.csvPuedes encontrar más detalles en nuestras directrices de contribución.
Si utilizas nuestro dataset para una publicación académica, agradeceríamos una cita al siguiente trabajo:``` @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} }
## Aclaración
Consulte nuestra [documentación](https://github.com/zhangzhuosjtu/web3bugs/blob/HEAD/docs/classification.md) de clasificación.
## Agradecimientos
Queremos expresar nuestro más sincero agradecimiento a [code4rena](https://code4rena.com/) por poner esta valiosa información a disposición del público.
<details>
<summary>Nuestro agradecimiento también se extiende a los siguientes colaboradores por su valiosa contribución.</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>
| Técnica | Categoría de Bugs |
|---|
| Técnica | Desarrollador(es) | Descripción | Palabras clave relacionadas con la seguridad |
|---|
| Slither | Trail of Bits | Framework de Análisis Estático | Detectores de Vulnerabilidades, SlithIR |
| Aderyn | Cyfrin | Framework de Análisis Estático | Analizador Estático, Detectores Personalizados, Informes Markdown |
| Foundry | Paradigm | Cadena de Herramientas de Desarrollo | Fuzzing, Fuzzing con Estado (Pruebas de Invariantes), Pruebas Diferenciales |
| Echidna | Trail of Bits | Fuzzer | Fuzzing, Fuzzing con Estado (Pruebas de Invariantes), CI/CD |
| Optik | Trail of Bits | Fuzzer Híbrido (Ejecución Simbólica + Fuzzing) | Fuzzing, Fuzzing con Estado, Ejecución Simbólica |
| Woke | Ackee Blockchain | Cadena de Herramientas de Desarrollo | Pruebas Cross-chain, Pruebas de Invariantes, Detectores de Vulnerabilidades, IR |
| 4naly3er | Picodes | Escáner Estático | Pruebas Pre-concurso de Code4rena |
| Manticore | Trail of Bits | Herramienta de Ejecución Simbólica | Ejecución Simbólica, Pruebas de Propiedades |
| Halmos | a16z | Comprobador de Modelos Acotados Simbólico | Ejecución Simbólica, Comprobador de Límites |
| Solidity SMTChecker | Ethereum Foundation | Verificación Formal mediante Ejecución Simbólica | Solidity, Verificación Formal, Ejecución Simbólica |
| Mythril | Consensys | Herramienta de Ejecución Simbólica | Ejecución Simbólica, Análisis On-Chain, Detectores de Vulnerabilidades, Análisis de Taint |
| Pyrometer [WIP] | Nascent | Herramienta de Ejecución Simbólica | Ejecución Simbólica, Interpretación Abstracta |
| greed | UCSB Seclab | Framework de Análisis Estático/Simbólico | Ejecución Simbólica, Comprobador de Límites, Análisis Estáticos, Pruebas de Propiedades |
| ethpwn | ethpwn | Análisis Dinámico/Depuración | Simulaciones de EVM, Depuración de EVM |
| Recurso | Palabras clave |
|---|
| Artículos Académicos sobre Smart Contracts | Lista de Artículos Académicos |
| Reproducción de Hackeos DeFi - Foundry | Replicación de Ataques |
| Estándar de Verificación de Seguridad de Smart Contracts | Lista de Verificación de Seguridad |
| Impresionantes Herramientas de Seguridad para Smart Contracts de MythX | Servicio de Análisis de Seguridad |
| Propiedades de Seguridad Comunes de Smart Contracts | Suite de Cumplimiento de Seguridad |
| Plantillas de PoC de Immunefi | Plantillas de PoC |
| Impresionantes Recursos de MEV | Recursos de MEV |
| Construcción de un Benchmark de Ataques de Front-Running y Evaluación de Técnicas de Detección de Vulnerabilidades | Dataset de Front-Running |
| Base de Investigación Definitiva de DeFi y Blockchain | Seguridad Blockchain Todo-en-Uno |
| Errores Comunes en Forks | Dataset de Exploits |