Перейти к содержимому
SaferICO SaferICOБезопасность смарт-контрактов
Пять слоёв · один отчёт сверху донизу

Продуктом здесь является глубина.

Находка — это строка. Атака — это сочетание таких строк, и ищем мы именно её. Каждый из пяти слоёв видит то, чего не видит слой над ним, и каждый определяется своей слепой зоной не меньше, чем тем, что он ловит. Эти слепые зоны написаны здесь так же, как и в отчёте: нельзя настроить инструмент, который скрывает границы своего охвата.

Выводит, а не сочиняет201 детектор · 21 цепочкаДоказательство каждого звенаСлепые зоны названы
//Пять слоёв

От поверхности к сочетанию

Порядок здесь не ради подачи. Каждый слой потребляет то, что произвёл предыдущий; поэтому четвёртый нельзя запустить без третьего.

01 · Обнаружение

201 детектор по исходному коду Solidity: непроверенные возвраты, формы reentrancy, пути эмиссии и вывода, полномочия владельца, прокси и пути обновления и симулированная покупка-продажа, ловящая honeypot без попадания в него. Движок работает на вашей машине. ⛔ Слепая зона: достижим ли путь при тех значениях, которые контракт реально увидит, — ничего не запускалось.

02 · Верификация

Исходный код — это утверждение; развёрнутый байткод — факт. Этот слой читает диспетчер и извлекает селекторы, которые контракт действительно открывает, называет сырую calldata по корпусу сигнатур, вычитает библиотечный код, оставляя написанные вручную строки, и сообщает, откуда пришли деньги адреса, вместе с источником. ⛔ Слепая зона: намерение и любой список, который никто не загрузил.

03 · Сборка цепочек

21 цепочка атаки, построенная из доказательств выше. У каждой цепочки есть вопрос, список предусловий и вес каждого предусловия. Цепочка выпускается, только если сканирование действительно доказало необходимые предусловия. ⛔ Слепая зона: живое состояние — балансы, глубина ликвидности, у кого ключи. Уверенность здесь — это доля доказанных предусловий, а не вероятность успеха атаки.

04 · Объяснение

Работа модели начинается только после того, как слой 03 построил цепочку: рассказать эту цепочку на языке читателя так, чтобы защищающийся смог её закрыть. Сценариев у неё не просят, и добавить их она не может — уверенный и неопровержимый выдуманный список атак похоронит под собой единственную настоящую находку. ⛔ Слепая зона: намерение.

05 · Запись

Каждая находка с критичностью, доказательством и исправлением в PDF; открытый архив переданных отчётов; бейдж, который держит прочитанное ЖИВЬЁМ из сети отдельно от просто ЗАЯВЛЕННОГО и датирует второе; и сторож, продолжающий наблюдать за адресом после того, как отчёт подписан. ⛔ Исключено: само утверждение «безопасно».

Вывода «безопасно» не существует

Отчёт говорит, что было проверено и что подтвердилось. Отчёт, обещающий безопасность, — это отчёт, которому не следует доверять, и на этой фразе настроен весь продукт.

Сами инструменты (сканер, панели, рабочее пространство SAFI) пока работают на английском языке. Эти страницы объясняют всё по-русски — до того, как вы туда перейдёте.

Доказательство — три разных утверждения

Масштаб, глубина и сдержанность — три разных утверждения. Каждое число ниже можно пересчитать, и ни одно не является округлённой маркетинговой цифрой. Третье — граница, которую мы выбрали сами.

🤖 Число цепочек атаки, написанных языковой моделью: ноль

Каждая цепочка строится в коде из вывода детекторов и несёт доказательство каждого предусловия, которое заявляет. Искусственный интеллект объясняет уже существующую цепочку. Добавить хотя бы одну ему до сих пор не удавалось — потому что двери, через которую он мог бы это сделать, нет.

01Масштаб — 204 проекта, 222 опубликованных отчёта

Открытая запись, охватывающая 2021–2025 годы в BNB Chain, Ethereum, Base, Polygon, Arbitrum, Optimism и Avalanche.

Каждая запись ведёт на PDF, опубликованный САМИМ аудитором, — не на копию, размещённую здесь, и уж точно не на пересказ. Число можно пересчитать самостоятельно.

02Глубина — 201 детектор, 21 цепочка

Детекторы — это словарь; цепочки — предложения, которые из этих слов складываются.

Двенадцать из них ссылаются на задокументированный инцидент, прошедший по той же форме. Остальные девять прямо говорят, что сопоставимого инцидента не нашлось, вместо того чтобы придумать правдоподобное название.

03Как выглядит сочетание

Две слабости, ни одна из которых по отдельности не критична, — и пустой пул. Здесь видно, почему именно список находок, отсортированный по критичности, это скрывает:

  • Предусловие A (вес 45) — вклады превращаются в доли относительно плавающего итога: детектор манипуляции долями сработал на бухгалтерии. По отдельности читается как пустяк.
  • Предусловие B (вес 30) — задний баланс можно увеличить, не выпуская долей: контракту можно отправить ценность напрямую, а цена доли читается из сырого баланса. По отдельности читается как пустяк.
  • Сочетание — станьте первым вкладчиком и выпустите ровно одну долю. Затем отправьте контракту напрямую крупную сумму: задний баланс вырастет без новых долей. Следующий честный вклад окажется меньше новой цены доли, и его эквивалент округлится до нуля. Его деньги не выводятся наружу — их поглощает арифметика, и они питают вашу единственную долю.

Схема не гипотетическая: Euler Finance потеряла 197 миллионов долларов на бухгалтерии, которую можно было раскачать этим же путём.

04Почему слепые зоны тоже печатаются

Инструмент, перечисляющий только свои сильные стороны, предлагает вам находить пробелы в бою. То, чего не видит каждый слой, написано и в отчёте, и на этой странице.

Самое важное: ни один санкционный список не вкомпилирован в этот продукт. Если список меток не загружен, отчёт говорит об этом именно этими словами — а не возвращает чистый результат, который можно прочитать как «проверено».

//Вопросы

О комплексе

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

Проверьте контракт до того, как отправите деньги

Вставьте адрес контракта и посмотрите полномочия владельца, ликвидность и результат симуляции продажи — прежде чем рисковать. Небольшая плата за разовую проверку показывается до подписи, а в любой подписке проверки безлимитны.