Back to Blog

Rustle: первый автоматический аудитор для сообщества NEAR

Code Auditing
November 1, 2022
3 min read

Мы рады представить 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.

  1. Следуйте руководству по установке на странице GitHub. Если вы хотите использовать Docker, пропустите это и перейдите к руководству по Docker.

  2. Подготовьте контракт NEAR для анализа в Rustle.

     git clone https://github.com/linear-protocol/LiNEAR.git ~/near-repo/LiNEAR
    
  3. Запустите анализ, выполнив ./rustle.

     ./rustle -t ~/near-repo/LiNEAR ~/near-repo/LiNEAR/contracts/linear
    
  1. Проверьте отчет в файле audit-result/summary.csv
  1. Вы можете указать, какие детекторы или группы критичности использовать.

./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

Best Security Auditor for Web3

Validate design, code, and business logic before launch. Aligned with the highest industry security standards.

BlockSec Audit