Docker-образ от Trail of Bits со всеми инструментами безопасности Ethereum в одном контейнере: Slither, Echidna, Manticore, Etheno, solc-select. Готовая среда для аудита смарт-контрактов без настройки зависимостей.
# Запуск с монтированием текущего проекта docker run -it -v $PWD:/home/user/project trailofbits/eth-security-toolbox # Внутри контейнера: cd /home/user/project slither . echidna-test contracts/MyContract.sol --contract TestMyContract # Переключить версию компилятора solc-select install 0.8.20 solc-select use 0.8.20
Этот репозиторий содержит скрипты для создания Docker-контейнера, предустановленного и преднастроенного со всеми инструментами безопасности Ethereum от Trail of Bits, включая:
Также включены другие полезные инструменты, разработанные сторонними организациями:
Используйте наш предсобранный Docker-контейнер для быстрой установки и запуска набора инструментов:
docker pull ghcr.io/trailofbits/eth-security-toolbox:nightly
docker run -it ghcr.io/trailofbits/eth-security-toolbox:nightly
Альтернативно, соберите образ с нуля:
git clone https://github.com/trailofbits/eth-security-toolbox.git
cd eth-security-toolbox
docker build -t eth-security-toolbox .
Просто запустите экземпляр Docker-контейнера:
docker run -it ghcr.io/trailofbits/eth-security-toolbox:nightly
Несколько версий Solidity предустановлены через solc-select. По умолчанию solc
соответствует последнему релизу. Это можно изменить с помощью инструмента solc-select:
$ solc --version
solc, the solidity compiler commandline interface
Version: 0.8.22+commit.4fc1097e.Linux.g++
$ solc-select use 0.4.26
$ solc --version
solc, the solidity compiler commandline interface
Version: 0.4.26+commit.4563c3fc.Linux.g++
Вы также можете просмотреть установленные версии и установить новые:
$ solc-select versions
0.8.22 (current, set by /home/ethsec/.solc-select/global-version)
0.7.6
0.6.12
0.5.17
0.4.26
ethsec@f95fb29a709d:~$ solc-select install 0.8.0
Installing solc '0.8.0'...
Version '0.8.0' installed.
ethsec@f95fb29a709d:~$ solc-select use 0.8.0
Switched global version to 0.8.0
$ solc --version
solc, the solidity compiler commandline interface
Version: 0.8.0+commit.c7dfd78e.Linux.g++
В набор инструментов входит предустановленная LTS-версия Node и
n - менеджер версий Node. При необходимости вы можете установить другие
версии Node, используя n. Обратитесь к их веб-сайту для получения дополнительных инструкций.
$ sudo n 14
installing : node-v14.21.3
mkdir : /usr/local/n/versions/node/14.21.3
fetch : https://nodejs.org/dist/v14.21.3/node-v14.21.3-linux-arm64.tar.gz
copying : node/14.21.3
installed : v14.21.3 (with npm 6.14.18)
$ node --version
v14.21.3
Вариант образа опубликован в GitHub Container Registry как
ghcr.io/trailofbits/eth-security-toolbox/ci.
Этот вариант предназначен для более легковесного использования и лучше подходит для работы в
CI, таких как задачи рабочих процессов GitHub:
# workflow triggers, ...
jobs:
tests:
runs-on: ubuntu-latest
container: ghcr.io/trailofbits/eth-security-toolbox/ci:nightly
steps:
# other steps ...
- run: medusa fuzz # or any tool from the image
Основные отличия:
* В контейнере нет выделенного пользователя без root-привилегий. Все инструменты
установлены под пользователем root.
* Большинство автодополнений не установлены.
* Бинарные файлы solc не предустановлены. Вы можете продолжать использовать solc-select для
установки любых необходимых бинарных файлов.
* pyevmasm и репозиторий building secure contracts не включены.
Как eth-security-toolbox, так и eth-security-toolbox/ci используют следующую
схему именования меток:
| Метка | Описание |
|---|---|
nightly-YYYYMMDD |
Образ, собранный из кода в master в день YYYY-MM-DD |
nightly |
Алиас для последнего образа nightly-YYYYMMDD |
testing-BRANCH |
Образ, собранный при последнем обновлении вершины BRANCH |
edge |
Алиас для testing-master |
TAG |
Образ, собранный при создании тега TAG |
latest |
Алиас для последнего образа с тегом TAG |
Для предсказуемости инструментов в CI мы рекомендуем выбирать образ nightly-YYYYMMDD
и фиксировать его хешем в файле вашего рабочего процесса. Затем установите процесс
для просмотра изменений и обновления ссылки на контейнер с регулярной периодичностью,
чтобы вы могли продолжать получать выгоду от улучшений инструментов. Следующий
фрагмент показывает синтаксис, используемый для фиксации образа в рабочем процессе GitHub Actions;
хеши можно получить со страницы реестра контейнеров.
container: ghcr.io/trailofbits/eth-security-toolbox/ci:nightly-YYYYMMDD@sha256:HASH_GOES_HERE
Не стесняйтесь заходить на наш канал Slack за помощью по использованию или расширению этого набора инструментов.
Ethereum Security Toolbox лицензирован и распространяется под лицензией AGPLv3. Свяжитесь с нами, если вы ищете исключение из условий.