Мы рады представить Rustle: первый автоматический аудитор, предлагаемый BlockSec для сообщества NEAR.
Rustle обладает рядом замечательных функций:
- В настоящее время Rustle может обнаруживать более 20 типов проблем в контрактах NEAR. Полный список детекторов см. в разделе «Детекторы».
- Rustle прост в использовании. Мы предоставляем подробные команды для установки и руководства. Кроме того, для быстрого начала работы мы подготовили Docker-образ.
- Rustle работает довольно быстро: большинство контрактов NEAR можно проанализировать менее чем за 3 минуты.
- Rustle удобен в использовании, предоставляя отчеты в форматах CSV и JSON. Мы также предоставляем скрипт, помогающий импортировать результат в Notion.
Детекторы
Все уязвимости, которые может обнаружить Rustle. Подробную документацию можно найти здесь.
| Идентификатор детектора | Описание | Уровень критичности |
|---|---|---|
| unhandled-promise | Обнаруживает необработанные промисы (Promises) | Высокий |
| non-private-callback | Отсутствует макрос #[private] для функций обратного вызова | Высокий |
| reentrancy | Находит функции, уязвимые для атак повторного входа (reentrancy) | Высокий |
| unsafe-math | Отсутствие проверки переполнения для арифметических операций | Высокий |
| self-transfer | Отсутствует проверка sender != receiver (отправитель != получатель) | Высокий |
| incorrect-json-type | Некорректный тип, используемый в параметрах или возвращаемых значениях | Высокий |
| div-before-mul | Потеря точности из-за неправильного порядка операций | Средний |
| round | Округление без указания ceil или floor | Средний |
| lock-callback | Паника в функции обратного вызова может заблокировать контракт | Средний |
| yocto-attach | Отсутствие assert_one_yocto в привилегированной функции | Средний |
| prepaid-gas | Отсутствует проверка предоплаченного газа в ft_transfer_call | Низкий |
| non-callback-private | Макрос #[private] используется в функции, не являющейся обратным вызовом | Низкий |
| unused-ret | Результат функции не используется или не проверяется | Низкий |
| upgrade-func | В контракте отсутствует функция обновления | Низкий |
| tautology | Тавтология, используемая в условной ветке | Низкий |
| inconsistency | Использование похожих, но слегка отличающихся символов | Низкий |
| timestamp | Найти все случаи использования временных меток (timestamp) | Информация |
| complex-loop | Найти все циклы со сложной логикой, которые могут привести к DoS | Информация |
| ext-call | Найти все межконтрактные вызовы | Информация |
| promise-result | Найти все случаи использования результата промиса | Информация |
| transfer | Найти все операции перевода | Информация |
Как использовать
Мы используем Rustle для анализа популярного контракта NEAR (например, LiNEAR). Команды были протестированы в Ubuntu 20.04 LTS.
-
Следуйте руководству по установке на странице GitHub. Если вы хотите использовать Docker, пропустите это и перейдите к руководству по Docker.
-
Подготовьте контракт NEAR для анализа в Rustle.
git clone https://github.com/linear-protocol/LiNEAR.git ~/near-repo/LiNEAR -
Запустите анализ, выполнив
./rustle../rustle -t ~/near-repo/LiNEAR ~/near-repo/LiNEAR/contracts/linear

- Проверьте отчет в файле
audit-result/summary.csv

- Вы можете указать, какие детекторы или группы критичности использовать.
./rustle -h для получения подробной информации.
Пример:
./rustle -t ~/near-repo/LiNEAR ~/near-repo/LiNEAR/contracts/linear -d high,medium,complex-loop
Еще кое-что
Rustle можно использовать в процессе разработки для итеративного сканирования смарт-контрактов NEAR. Это может значительно сократить ручные усилия и предотвратить часть потенциальных проблем. Однако уязвимости в сложной логике или связанные с семантикой остаются ограничением Rustle. Поиск сложных семантических проблем требует участия экспертов BlockSec для проведения исчерпывающих и тщательных проверок. Свяжитесь с нами для аудита.
Баг-репорты (Issues) и пулл-реквесты (PRs) также приветствуются.
О компании BlockSec
BlockSec — это передовая компания в сфере безопасности блокчейнов, основанная в 2021 году группой всемирно признанных экспертов по безопасности. Компания стремится повысить уровень безопасности и удобства использования развивающегося мира Web3, чтобы способствовать его массовому внедрению. С этой целью BlockSec предоставляет услуги аудита безопасности смарт-контрактов и EVM-сетей, платформу Phalcon для разработки систем безопасности и проактивного предотвращения угроз, платформу MetaSleuth для отслеживания и расследования средств, а также расширение MetaSuites для эффективной работы Web3-разработчиков в криптомире.
На сегодняшний день компания обслужила более 300 уважаемых клиентов, таких как MetaMask, Uniswap Foundation, Compound, Forta и PancakeSwap, и получила десятки миллионов долларов США в ходе двух раундов финансирования от выдающихся инвесторов, включая Matrix Partners, Vitalbridge Capital и Fenbushi Capital.
Официальный сайт: https://blocksec.com/
Официальный аккаунт в Twitter: https://twitter.com/BlockSecTeam



