Сканер отвечает на вопрос «что не так в этом коде». Перед запуском вы задаёте другой: что из этого атакующий действительно сможет применить? Инструмент берёт находки сканирования и пытается выстроить из них работающий путь — и для каждого пути говорит, какая часть доказана, а какая является выводом.
Числа ниже измеряются по собственной таблице шаблонов симулятора в момент сборки этой страницы. Если бы семейство опустело, страница не продолжила бы его рекламировать, а упала бы при сборке.
Функция, выдающая полномочия, забывает проверить, кто её вызвал. Самое частое семейство и самое дешёвое в закрытии.
Войти обратно внутрь до того, как контракт закончил записывать в свою книгу то, что вы получили.
Атаки, не требующие капитала: капитал берётся в долг и возвращается внутри одной транзакции.
Контракт спрашивает у кого-то, сколько что-то стоит, и этот ответ становится выбираемым.
Раскачать рынок, по которому контракт считает цену, или встать перед и за тем, кто эту цену сдвинет.
Подпись, которая должна была сработать один раз, срабатывает несколько раз, в нескольких сетях или для нескольких операций.
Код за адресом — уже не тот код, который проверяли. Каждая находка отчёта относилась к коду, которого там больше нет.
Путь от обычного вызывающего к владельцу и от владельца к чему-то большему, чем владелец.
Каждая строка верна, а правило, которое они складывают, — нет. Здесь статический анализ слабее всего, а человек сильнее всего.
Ничего не сломано. Стимулы просто платят атакующему больше, чем вам.
Сами инструменты (сканер, панели, рабочее пространство SAFI) пока работают на английском языке. Эти страницы объясняют всё по-русски — до того, как вы туда перейдёте.
Три шага: сканирование в вашем браузере, отправка только находок и явно указанный уровень доказанности для каждого звена.
Исходный код — это либо текст, который вставили вы, либо верифицированный код, прочитанный из обозревателя; анализ выполняется в этом браузере. Ни одна транзакция не собирается, не подписывается и не отправляется.
Страница всё равно просит подтвердить, что вы имеете на это право. Сама по себе эта галочка ничего не доказывает — но она фиксирует намерение, и именно в этом разница между инструментом, который по запросу рисует, как атаковать чужой контракт, и этим инструментом.
Движок с 201 детектором работает в вашем браузере, и ваш исходный код оттуда не уходит. На сервер для построения цепочек уходит только структура, порождённая сканированием: идентификаторы детекторов, таблица функций и флаги контроля доступа.
Верить нам на слово для этого не нужно — откройте вкладку сети в браузере и посмотрите на тело исходящего запроса.
Это намеренно поставленный потолок, а не недоделка, которую забыли убрать. По чтению исходного кода можно сказать, что путь открыт; нельзя сказать, что по нему прошли.
Каждая цепочка в playbook сама объявляет, какие условия должны быть истинны, прежде чем о ней сообщат применительно к вашему коду. Если «контракт выполняет delegatecall» и «на адрес назначения может влиять вызывающий» не выполняются оба сразу, эта цепочка в ваш отчёт не попадёт.
Одна ложная критическая находка стоит больше доверия, чем зарабатывают десять верных средних. Продукт настроен по этой фразе.
Вставьте адрес контракта и посмотрите полномочия владельца, ликвидность и результат симуляции продажи — прежде чем рисковать. Небольшая плата за разовую проверку показывается до подписи, а в любой подписке проверки безлимитны.