Аудит смарт-контрактов и блокчейн

1
Обзор аудита смарт-контракта для Concordex

Наша компания провела аудит смарт-контракта для Concordex - платформы децентрализованного финансирования (DeFi). Этот проект ярко демонстрирует важность тщательного аудита смарт-контрактов перед их внедрением.

О платформе

Concordex использует смарт-контракты для:

  • Управления транзакциями.
  • Обеспечения ликвидности.
  • Выполнения других финансовых операций.

Обнаруженные критические уязвимости

Во время аудита наши эксперты обнаружили три основные уязвимости:

  1. Атаки Reentrancy.
  • Позволяли злоумышленникам вызывать функцию контракта несколько раз до завершения первой транзакции.
  • Потенциальное последствие - потеря средств пользователями.
  1. Неправильная валидация введенных данных.
  • Некоторые функции не имели надлежащей проверки входных данных.
  • Возможные последствия - выполнение опасных операций или манипуляции с балансами.
  1. Уязвимость к атакам переполнения.
  • Отсутствие защиты от атак переполнения в нескольких функциях.
  • Потенциальные риски - неправомерное увеличение баланса злоумышленников или другие нежелательные последствия.

Больше подробностей - в публичном отчете по аудиту.

2
Аудит смарт-контрактов DX25

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

Методология аудита

  1. Наш подход к аудиту смарт-контрактов проекта DX25 включал комбинацию ручных и автоматизированных методов для всестороннего выявления потенциальных уязвимостей. Основные аспекты аудита охватывали:
  2. Оценку управления потоками поведения.
  3. Проверку контроля доступа.
  4. Оценку угроз отказа в обслуживании.
  5. Проверку криптографических вопросов.
  6. Анализ типичных ошибок кода.

Обнаруженные уязвимости

В ходе аудита было обнаружено несколько уязвимостей разного уровня риска:

1. Отсутствие проверки (F-1)

  • Описание: метод init_wegld не содержит проверки ensure_payable_api_resumed, что может привести к нежелательному поведению.
  • Риск: низкий
  • Рекомендация: добавить проверку ensure_payable_api_resumed к методу init_wegld.

2. Ненужная двойная проверка (F-2)

  • Описание: метод init_wegld включает проверку, которая ограничивает возможность вызова этого метода только владельцем смарт-контракта, но последующие вызовы также включают эту проверку.
  • Риск: низкий
  • Рекомендация: рассмотреть возможность удаления повторной проверки или реализации дополнительного метода более низкого уровня.

3. Ненужная передача аргументов (F-3)

  • Описание: при инициализации смарт-контракта передаются аргументы, которые затем проверяются и устраняются в методе new_contract.
  • Риск: низкий
  • Рекомендация: вместо передачи аргументов использовать константные выражения.

4. Отсутствие проверок переполнения (F-4)

  • Описание: файл Cargo.toml не включает опцию overflow-checks=true, что может привести к переполнений в сборках release.
  • Риск: информационный
  • Рекомендация: добавить overflow-checks=true в профиль release в файле Cargo.toml.

Больше подробностей - в публичном отчёте по аудиту.

3
Тест на проникновение решения DEX и узлов Cardano

Во время теста на проникновение в торговое решение DEX была проведена оценка трёх полных узлов Cardano. Оценка проводилась в режимах "черный ящик" и "серый ящик". В результате было обнаружено, что не установлены 4 обновления безопасности, также были подтверждены 3 уязвимости на уровне ядра. Заказчик устранил обнаруженные уязвимости, после чего начал безопасно выполнять операции по управлению пулом.

Исходный код протокола ликвидности для несгораемых токенов, включая смарт-контракты, был подвергнут аудиту безопасности с использованием сопоставления уязвимостей по схемам классификации CWE/SANS Top 25, DASP Top 10 и SWC Registry. Были обнаружены дорогостоящие циклы, мертвый код, ненадлежащий уровень видимости функций в контрактах и интерфейсах, а также слабые места, на которые потенциально могут повлиять майнеры. Уязвимости были классифицированы как SWC-135, SWC-100, SWC-108 и DASP-8. Заказчик получил подробный отчет со всеми находками, которые впоследствии были успешно устранены и исправлены в новом релизе.

4
Анализ безопасности биржи с протоколом Milkomeda

Недавно нам удалось получить уникальный опыт анализа децентрализованной биржи, ориентированной на инновационный протокол Milkomeda L2. Протокол позволяет получить возможности виртуальных машин Ethereum в сетях блокчейн, где их поддержка не предусмотрена. 

В ходе аудита смарт-контрактов, обеспечивающих работу биржи, мы применили свою проверенную временем методологию. Анализ состоял как из автоматических проверок, так и из ручных. Были проведены тесты по поиску уязвимостей из SWC и DASP TOP10, а также развертывание контрактов в тестовой сети для реализации всех возможных сценариев атак.

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

5
Аудит смарт-контрактов Algorand

Нам была поставлена задача провести аудит смарт-контрактов, написанных для блокчейна Algorand — конкурента Ethereum.

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

Несмотря на это, смарт-контракты могут управлять десятками миллионов долларов, что делает их целью преступников.

Смарт-контракты Algorand используют специальный язык — Transaction Execution Approval Language (TEAL). Предоставленные нам смарт-контракты были созданы с помощью PyTeal — Python-библиотеки для генерации TEAL-программ.

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

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