
Scout-это расширяемый инструмент с открытым исходным кодом, предназначенный для того, чтобы помочь разработчикам и аудиторам Soroban Stellar Smart Contract обнаружить общие проблемы безопасности и отклонений от лучших практик.
Этот инструмент помогает разработчикам писать безопасные и более надежные интеллектуальные контракты.
Наш интерес к этому проекту исходит из нашего опыта в области ручного аудита и обнаружения уязвимости в других блокчейнах (см. Scout for Ink!).
Установите аудитор Scout:
Убедитесь, что груз установлен на вашем компьютере. Затем установите разведку со следующей командой:
cargo install cargo-scout-auditЗапустить скаутский аудит:
Чтобы запустить Scout на вашем проекте, выполнить следующую команду:
cargo scout-auditРазведчика поддерживает грузовые рабочие пространства. При запуске в рабочей области разведчик будет выполнен на всех пакетах, указанных как члены рабочей области.
Для получения дополнительной информации об установке и использовании, пожалуйста, обратитесь к разделу «Начало работы» в нашем разделе документации ниже.
В настоящее время скаут включает следующие детекторы.
| Идентификатор детектора | Что он обнаруживает | Тестовые случаи | Тяжесть |
|---|---|---|---|
| Разделите, прежде чем-то | Выполнение операции деления перед умножением, что приводит к потере точности. | 1, 2, 3 | Середина |
| Небезопасная неверная | Неуместное использование метода развертывания, вызывая неожиданные сбои программы. | 1 | Середина |
| небезопасно | Неправильное использование метода ожидания, что приводит к неожиданным сбоям программы. | 1 | Середина |
| переполнение переполнения | Арифметическая операция переполняет или недооценивает доступную память, выделенную переменной. | 1 | Критический |
| Недостаточные значения | Избегайте использования атрибутов блока для генерации случайных чисел, чтобы предотвратить манипуляции. | 1 | Критический |
| незащищенная обстановка-ток-контракта | Если пользователям разрешено вызовать update_current_contract_wasm() , они могут намеренно изменить поведение контракта. | 1 | Критический |
| Избегайте керна-мемма | Использование core::mem::forget() может привести к утечкам памяти и логическим ошибкам. | 1 | Улучшение |
| Установка сет-контракта | Недостаточный контроль доступа на методе env.storage() . | 1, 2, 3 | Критический |
| Избегайте панических ошибок | Кодовая паника при ошибке вместо использования описательного перевода. | 1 | Улучшение |
| Избегайте блока | Использование небезопасных блоков в рисках безопасности кода и надежности. | 1 | Критический |
| DOS Unbanded-Operation | DOS из -за неограниченной операции. | 1, 2, 3 | Середина |
| Соробан-версия | Использование старой версии Soroban может быть опасным, так как у нее могут быть ошибки или проблемы безопасности. Используйте последнюю доступную версию. | 1 | Улучшение |
| неиспользованный возврат-обен | Возврат enum от функции не полностью используется. | 1, 2 | Незначительный |
| Итераторы-индексация | Итерация с жесткими индексами медленнее, чем использование итератора. Кроме того, если индекс вышел за пределы, он будет паниковать. | 1 | Улучшение |
| ассиолиация | Избегайте использования макроссового Assert!, Он может паниковать. | 1 | Улучшение |
| незащищенное картирование | Изменение сопоставлений с помощью произвольного ключа, данного пользователями, может быть значительной уязвимостью. | 1, 2 | Критический |
| DOS-Unexpret-revert-with-vector | DOS из -за неправильного хранения. | 1, 2 | Середина |
| Неограниченное перенос | Избегайте передачи пользовательского параметра в качестве from поля в передаче. | 1 | Критический |
| небезопасная карта | Неуместное использование метода get для Map в Соробане | 1 | Середина |
| Zero-OR-Test-Address | Избегайте назначения нуля или тестового адреса, чтобы предотвратить потерю контроля контракта. | 1 | Середина |
| Неправильная экспонициация | Предупреждает о неправильном использовании ´^´. | 1 | Критический |
Вы можете выбрать выходной формат, который наилучшим образом соответствует вашим потребностям. Scout предлагает отчеты HTML, Markdown, JSON, PDF и SARIF. Чтобы указать желаемый вывод. Запустите следующую команду:
cargo scout-audit --output-format [html|md|pdf|json|sarif]
HTML отчет

Добавьте Scout в свою рабочую область разработки с помощью расширения кода Scout VS для автоматического запуска Scout при сохранении вашего файла.

Совет: чтобы увидеть ошибки, выделенные в вашем коде, мы рекомендуем установить расширение Lins Erry.
Скачать Scout vs Code с Visual Studio Marketplace.
Интегрируйте скаут в свой трубопровод CI/CD! Автоматически запустите инструмент против целевых интеллектуальных контрактов. Этот непосредственный цикл обратной связи позволяет разработчикам быстро решать любые проблемы, прежде чем объединить код в основную ветвь, снижая риск введения ошибок или уязвимостей.
Вывод разведки в качестве комментария в запросе на вытягивание

Найдите действие скаута GitHub на Github Marketplace.
Присоединяйтесь к нам для захватывающей серии видеоуроков, где вы узнаете, как установить и запустить Scout. Узнайте, как определить и решить конкретные проблемы, обнаруженные инструментом, и улучшить свои навыки благодаря нашему экспертному руководству.
? Больше видео скоро снимается!
Чтобы проверить наш инструмент, мы предоставляем набор примеров кода, расположенных в папке тестовых каменов.
Чтобы запустить интеграционные тесты, перейти к apps/cargo-scout-audit и запустите:
cargo test --all --all-features Чтобы запустить тесты для конкретного испытания, запустите одну и ту же команду в этой конкретной папке тестирования (например: test-cases/divide-before-multiply/divide-before-multiply-1
Следите за нашими ссылками на документацию ниже и узнайте больше об уязвимости, обнаруженных Scout, как работает инструмент и как внести свой вклад в проект!
Scout for Soroban - это анализатор уязвимости с открытым исходным кодом, разработанный командой исследований и разработок Coinfabrik.
Мы получили поддержку через грант от фонда Stellar Community (SCF).
Мы - Coinfabrik - это исследовательская и разработанная компания, специализирующаяся на Web3, с сильным опытом в области кибербезопасности. Основанная в 2014 году, мы работали над более чем 180 проектами, связанными с блокчейном, на базе EVM, а также для Solana, Algorand, Stellar и Polkadot. Помимо разработки, мы предлагаем аудиты безопасности через специальную внутреннюю команду старших специалистов по кибербезопасности, в настоящее время работая над кодом на субстрате, прочности, ясности, ржавчине, чирке и звездном соробане.
Наша команда имеет академический опыт работы в области компьютерных наук и математики, с опытом работы, ориентированным на кибербезопасность и разработку программного обеспечения, включая академические публикации, патенты, превращенные в продукты и презентации конференции. Кроме того, у нас постоянное сотрудничество в области передачи знаний и проектов с открытым исходным кодом в Университете Буэнос-Айреса.
Разведчик лицензирован и распределен по лицензии MIT. Свяжитесь с нами, если вы ищете исключение из терминов.