
Демистификация эксплуатируемых уязвимостей в смарт-контрактах

Этот проект направлен на предоставление ценного ресурса для Web3-разработчиков и аналитиков безопасности, помогая им понять эксплуатируемые ошибки в смарт-контрактах. Мы проводим тщательный анализ эксплуатируемых ошибок, извлечённых из code4rena, и классифицируем каждую ошибку по её природе.
Наши первоначальные исследования показывают, что значительная доля эксплуатируемых ошибок в смарт-контрактах относится к функциональным ошибкам, которые невозможно обнаружить с помощью простых и общих оракулов, таких как повторный вход (reentrancy). Мы стремимся повысить осведомлённость о значимости таких ошибок и призываем практиков разрабатывать более сложные и тонкие автоматические семантические оракулы для их обнаружения.
Значительная часть эксплуатируемых ошибок в смарт-контрактах относится к категории функциональных ошибок, которые невозможно обнаружить с помощью простых и общих оракулов.
Обратите внимание, что этот репозиторий находится в активной разработке, и данные могут меняться со временем из-за текущих конкурсов code4rena.
Набор данных организован в четыре папки:
Мы классифицируем исследованные ошибки по трём основным категориям в зависимости от их природы:
Поскольку классификация функциональных ошибок может быть неоднозначной, мы приветствуем предложения по улучшению наших стандартов классификации. Более подробную информацию о метках вы можете найти в нашей документации, и мы рекомендуем обратиться к нашим текущим рекомендациям по классификации.
Наша цель — создать исчерпывающий список методов обнаружения уязвимостей, который станет ценным ресурсом для Web3-разработчиков и аналитиков безопасности. Мы сосредоточимся на двух основных категориях:
Мы искренне приветствуем любые дополнительные предложения и вклад сообщества, чтобы помочь расширить и улучшить этот список.
Мы считаем, что будущие усилия в области безопасности web3 будут сосредоточены на выявлении функциональных ошибок и разработке соответствующих оракулов. Для этого мы намерены составить список методов, которые помогут в создании автоматических семантических оракулов. Эти методы будут взяты из различных источников, таких как рецензируемые исследовательские статьи, препринты, отраслевые инструменты и онлайн-ресурсы.
В этом разделе будут представлены открытые методы, которые находятся в открытом доступе и активно развиваются. Эти методы могут использоваться напрямую Web3-разработчиками и аналитиками безопасности или как составные части для других инструментов. Мы отдаём приоритет методам, работающим на уровне исходного кода, которые лучше подходят для Web3-разработки и аудита.
| Метод | Язык | Описание | Ключевые слова по безопасности |
|---|---|---|---|
| Move Prover | Move | Формальная спецификация и верификация | Формальная верификация |
Мы приветствуем все виды вклада в наш проект, включая, но не ограничиваясь:
results/contests.csv.Более подробную информацию можно найти в наших рекомендациях по внесению вклада.
Если вы используете наш набор данных в академической публикации, мы будем очень признательны за цитирование следующей работы:``` @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} }
## Уточнение
Пожалуйста, обратитесь к нашей [документации](https://github.com/zhangzhuosjtu/web3bugs/blob/HEAD/docs/classification.md) по классификации.
## Благодарности
Мы хотели бы выразить искреннюю благодарность [code4rena](https://code4rena.com/) за предоставление этой ценной информации в открытый доступ.
<details>
<summary>Мы также выражаем признательность следующим участникам за их ценный вклад.</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 |
|---|
| Метод | Разработчик(и) | Описание | Ключевые слова по безопасности |
|---|
| Slither | Trail of Bits | Фреймворк статического анализа | Детекторы уязвимостей, SlithIR |
| Aderyn | Cyfrin | Фреймворк статического анализа | Статический анализатор, Пользовательские детекторы, Отчёты Markdown |
| Foundry | Paradigm | Инструментарий разработки | Фаззинг, Фаззинг с сохранением состояния (тестирование инвариантов), Дифференциальное тестирование |
| Echidna | Trail of Bits | Фаззер | Фаззинг , Фаззинг с сохранением состояния (тестирование инвариантов), CI/CD |
| Optik | Trail of Bits | Гибридный фаззер (символьное выполнение + фаззинг) | Фаззинг, фаззинг с сохранением состояния, символьное выполнение |
| Woke | Ackee Blockchain | Инструментарий разработки | Тестирование кросс-чейн, Тестирование инвариантов, Детекторы уязвимостей, IR |
| 4naly3er | Picodes | Статический сканер | Code4rena Pre-content Testing |
| Manticore | Trail of Bits | Инструмент символьного выполнения | Символьное выполнение, Тестирование свойств |
| Halmos | a16z | Символьный ограниченный проверщик моделей | Символьное выполнение, Проверка границ |
| Solidity SMTChecker | Ethereum Foundation | Формальная верификация с помощью символьного выполнения | Solidity, Формальная верификация, Символьное выполнение |
| Mythril | Consensys | Инструмент символьного выполнения | Символьное выполнение, Ончейн-анализ, Детекторы уязвимостей, Taint-анализ |
| Pyrometer [WIP] | Nascent | Инструмент символьного выполнения | Символьное выполнение, Абстрактная интерпретация |
| greed | UCSB Seclab | Фреймворк статического/символьного анализа | Символьное выполнение, Проверка границ, Статический анализ, Тестирование свойств |
| ethpwn | ethpwn | Динамический анализ/Отладка | Симуляции EVM, Отладка EVM |
| Ресурс | Ключевые слова |
|---|
| Academic Smart Contract Papers | Список академических статей |
| DeFi Hacks Reproduce - Foundry | Воспроизведение атак |
| Smart Contract Security Verification Standard | Чек-лист по безопасности |
| Awesome MythX Smart Contract Security Tools | Сервис анализа безопасности |
| Common Security Properties of Smart Contracts | Набор средств проверки безопасности |
| Immunefi PoC Templates | Шаблоны PoC |
| Awesome MEV Resources | Ресурсы по MEV |
| Front-Running Attack Benchmark Construction and Vulnerability Detection Technique Evaluation | Набор данных по фронт-раннингу |
| Ultimate DeFi & Blockchain Research Base | Всё в одном для безопасности блокчейна |
| Common Fork Bugs | Набор данных об эксплойтах |