Similar presentations:
VKR_ГУСЕВ
1.
Министерство науки и высшего образования Российской ФедерацииФГБОУ ВО «Владимирский государственный университет
имени Александра Григорьевича и Николая Григорьевича Столетовых»
(ВлГУ)
Кафедра «Информатики и защиты информации»
Выпускная квалификационная работа на тему:
Алгоритмы статического аудита безопасности смартконтрактов на блокчейне Ethereum
Специальность: 10.03.01 – Информационная безопасность
Выполнил:
Гусев И.И.
Руководитель: доцент кафедры ИЗИ Монахов Ю.М
г. Владимир 2026
2. Введение
• Актуальность• Рост рынка DeFi и числа смартконтрактов
• Увеличение количества
honeypot-схем
• Ошибки после деплоя
невозможно исправить
• Универсальные анализаторы
плохо выявляют скрытую
бизнес-логику
Рост ущерба от мошеннических схем
3. Цель и задачи исследования
• Цель исследования• Разработка специализированного
программного средства статического анализа
смарт-контрактов Solidity для выявления
скрытых мошеннических механизмов типа
honeypot на блокчейне Ethereum.
• Задачи исследования
1. Исследовать существующие методы
статического анализа смарт-контрактов.
2. Выполнить анализ распространённых honeypotмеханизмов и способов их реализации.
3. Разработать архитектуру специализированного
анализатора.
4. Реализовать синтаксический анализ Solidity и
построение AST.
5. Разработать набор детекторов мошеннических
паттернов.
6. Реализовать программный прототип
анализатора.
7. Провести экспериментальное тестирование и
сравнение со Slither.
4. Анализ существующих средств аудита смарт-контрактов
ЕмельяновГусев Игорь
Алексей
Игоревич
Сергеевич
Анализ существующих средств аудита смарт-контрактов
Анализ существующих решений
Возможность
Slither
Разработанный
анализатор
Реентерабельность
✔
✔
Внешние вызовы
✔
✔
Honeypot-паттерны
✖
✔
Hidden Whitelist
✖
✔
• Не определяет скрытый контроль после
renounceOwnership
DEX Block
✖
✔
• Недостаточно эффективно анализирует скрытую
бизнес-логику токенов
Renounce Backdoor
✖
✔
Slither
• Один из наиболее распространённых статических
анализаторов Solidity-контрактов
• Выявляет технические уязвимости и ошибки
реализации
• Используется при профессиональном аудите
смарт-контрактов
Ограничения
• Не ориентирован на поиск специализированных
honeypot-механизмов
• Не выявляет скрытые whitelist-списки
• Не обнаруживает блокировку продажи через DEX
Вывод: существующие анализаторы эффективно
находят технические уязвимости, однако недостаточно
приспособлены для выявления скрытых
мошеннических механизмов.
Автоматизация аудита безопасности смарт-контрактов
5. Архитектура разработанного анализатора смарт-контрактов
ЕмельяновГусев Игорь
Алексей
Игоревич
Сергеевич
Архитектура разработанного анализатора смарт-контрактов
Особенности разработанной системы
• Используется формальная грамматика
Solidity на основе ANTLR4
• Выполняется лексический и
синтаксический анализ исходного кода
• Формируется абстрактное
синтаксическое дерево AST
• Анализ реализован с использованием
шаблона Visitor Pattern
• Поддерживается набор
специализированных honeypotдетекторов
• Формируется структурированный отчёт
с описанием угроз и рекомендациями
Автоматизация аудита безопасности смарт-контрактов
6. Построение абстрактного синтаксического дерева (AST)
ЕмельяновГусев Игорь
Алексей
Игоревич
Сергеевич
Построение абстрактного синтаксического дерева (AST)
Назначение AST
• Формирование внутреннего
представления смарт-контракта
• Выделение значимых элементов
программы
• Исключение служебных элементов
грамматики
• Подготовка данных для работы
детекторов
• Независимость анализа от
форматирования исходного кода
Автоматизация аудита безопасности смарт-контрактов
7. Инструменты для проведения статического анализа
ЕмельяновГусев Игорь
Алексей
Игоревич
Сергеевич
Инструменты для проведения статического
анализа
Mythril — инструмент для анализа безопасности смарт-контрактов, использующий символическое выполнение.
Возможности: Анализ байт-кода, обнаружение уязвимостей, таких как переполнения целых чисел, проблемы с
доступом.
Slither — статический анализатор для смарт-контрактов на Solidity.
Возможности: Обнаружение уязвимостей, анализ структуры контракта, генерация графа наследования и графа
потока управления (CFG).
Solidity Coverage — инструмент для измерения покрытия тестов смарт-контрактов, написанных на Solidity.
Возможности: Показывает процент кода, охваченного тестами, что помогает оценить качество тестирования и
выявить непроверенные части кода.
Oyente — инструмент для символического анализа смарт-контрактов.
Возможности: Обнаружение уязвимостей, таких как повторные атаки и переполнения целых чисел, с помощью
символического анализа.
SmartCheck — инструмент для статического анализа смарт-контрактов на Solidity.
Возможности: Проверка кода на наличие уязвимостей и нарушений лучших практик, предоставление подробных
отчетов.
Автоматизация аудита безопасности смарт-контрактов
8. Инструменты для проведения динамического анализа
ЕмельяновГусев Игорь
Алексей
Игоревич
Сергеевич
Инструменты для проведения динамического
анализа
Manticore — инструмент для символического выполнения и динамического анализа смарт-контрактов.
Возможности: Исследование возможных путей выполнения контракта, обнаружение уязвимостей.
Echidna — инструмент для фуззинг-тестирования смарт-контрактов.
Возможности: Автоматическая генерация тестов, проверка контракта на наличие ошибок и уязвимостей.
MythX — комплексный инструмент для анализа безопасности смарт-контрактов. Возможности: Сочетание
статического анализа, динамического анализа, символического выполнения и фуззинга
Securify — инструмент для формальной верификации смарт-контрактов. Возможности: Проверка контракта на
соответствие спецификациям безопасности, обнаружение логических ошибок и уязвимостей.
Автоматизация аудита безопасности смарт-контрактов
9. Тестируемые смарт-контракты написанные на языке Solidity:
ЕмельяновГусев Игорь
Алексей
Игоревич
Сергеевич
Тестируемые смарт-контракты написанные на языке Solidity:
1) BADtoken
2) UniswapV2Factory
1) BADtoken.sol был выбран для проведения тестирования в связи с его ролью в
краудсейле (ICO) для токена BAT (Basic Attention Token). Этот контракт
предоставляет возможность инвесторам приобретать токены BAT, вкладывая ETH в
контракт, по фиксированному обменному курсу.
2) Контракт UniswapV2Factory был выбран для тестирования в связи с его
ключевой ролью в экосистеме децентрализованных бирж (DEX) на базе протокола
Uniswap V2. Этот контракт отвечает за создание и управление парами токенов на
бирже Uniswap V2, что делает его важным для обеспечения функциональности и
безопасности торговли на платформе.
Автоматизация аудита безопасности смарт-контрактов
10. Тестирование смарт-контрактов с помощью Slither
ЕмельяновГусев Игорь
Алексей
Игоревич
Сергеевич
Тестирование смарт-контрактов с помощью Slither
Автоматизация аудита безопасности смарт-контрактов
11. Тестирование смарт-контрактов с помощью Slither
ЕмельяновГусев Игорь
Алексей
Игоревич
Сергеевич
Тестирование смарт-контрактов с помощью Slither
Как это выглядит в консоли:
Автоматизация аудита безопасности смарт-контрактов
12. Тестирование смарт-контракта BADtoken с помощью Slither
ЕмельяновГусев Игорь
Алексей
Игоревич
Сергеевич
Тестирование смарт-контракта BADtoken с помощью Slither
Заключения о выводе программы:
Отсутствие проверки на нулевой адрес
В конструкторе контракта BAToken отсутствует проверка на нулевой адрес для параметров
_ethFundDeposit и _batFundDeposit
Использование устаревшего стандарта THROW
В контракте используются устаревшие инструкции throw, которые следует заменить на более
современные и корректные инструкции revert(). Использование throw может привести к неинформативным
ошибкам и затруднить отладку.
Использование устаревшей версии Solidity (0.4.10)
Контракт BAToken использует устаревшую версию Solidity (0.4.10), которая содержит множество
известных серьезных проблем.
Неиспользуемые переменные состояния
Некоторые переменные состояния, такие как name, symbol, version, decimals и tokenExchangeRate,
объявлены, но не используются в контракте
Переменные состояния, которые могут быть объявлены как константные
Некоторые переменные состояния могут быть объявлены как константные, но не являются таковыми.
Автоматизация аудита безопасности смарт-контрактов
13. Тестирование смарт-контракта UniswapV2Factory с помощью Slither
ЕмельяновГусев Игорь
Алексей
Игоревич
Сергеевич
Тестирование смарт-контракта UniswapV2Factory с помощью
Slither
Заключения о выводе программы:
Слабый генератор псевдослучайных чисел (PRNG): В функции _update контракта UniswapV2Pair
используется слабый генератор псевдослучайных чисел, что может повлечь за собой предсказуемость
значений, что не является безопасным.
Опасные строгие равенства: Функции _safeTransfer, mint и burn контракта UniswapV2Pair используют
строгие равенства (== или !=), что может привести к проблемам из-за небольших ошибок округления или
других артефактов.
Уязвимости рекурсии: Обнаружены уязвимости рекурсии в контракте UniswapV2Pair, что может
привести к нежелательным действиям и утечке средств.
Использование метки времени для сравнений: В некоторых функциях контракта используется метка
времени для сравнений, что может привести к проблемам безопасности, таким как атака на блокирование.
Сборка на низком уровне: Использование сборки на низком уровне в некоторых функциях контракта
может быть опасным и привести к нежелательным последствиям, таким как переполнение стека или
неожиданное поведение контракта.
Устаревшие версии Solidity: Использование устаревших версий Solidity может содержать известные
серьезные проблемы безопасности и не включать в себя последние исправления ошибок и улучшения.
Автоматизация аудита безопасности смарт-контрактов
14. Тестирование смарт-контрактов с помощью Hardhat
ЕмельяновГусев Игорь
Алексей
Игоревич
Сергеевич
Тестирование смарт-контрактов с помощью Hardhat
Создание и настройка среды hardhat (1). Результат развертывания смарт-контракта (2)
Методика формирования электромагнитного профиля защищаемого помещения
15. Результат работы программы после проведения динамического анализа с использованием Hardhat
ЕмельяновГусев Игорь
Алексей
Игоревич
Сергеевич
Результат работы программы после проведения динамического
анализа с использованием Hardhat
Представление результатов компиляции и тестирования в hardhat
✓ Should have correct initial supply:
Тест проверил, что начальный выпуск токенов (totalSupply)
соответствует ожидаемому значению (500 миллионов BAT) и прошел
успешно.
✓ Should allow token creation:
Тест проверил возможность создания токенов после начала
финансирования. Токены были успешно созданы, и тест прошел.
✓ Should not allow token creation before funding start:
Тест проверил, что невозможно создать токены до начала периода
финансрования. Попытка создания токенов привела к ожидаемому откату
транзакции, и тест прошел.
✓ Should not allow token creation after funding end:Тест проверил, что
невозможно создать токены после окончания периода финансирования.
Попытка создания токенов привела к ожидаемому откату транзакции, и
тест прошел.
✓ Should finalize correctly:
Тест проверил корректность финализации контракта. Контракт был
успешно финализирован, и тест прошел.
✓ Should refund correctly:
Тест проверил корректность возврата средств в случае неудачной
кампании по сбору средств. Средства были успешно возвращены, и тест
прошел.
Автоматизация аудита безопасности смарт-контрактов
16. Результат работы программы после проведения динамического анализа с использованием Hardhat
ЕмельяновГусев Игорь
Алексей
Игоревич
Сергеевич
Результат работы программы после проведения динамического
анализа с использованием Hardhat
Процент
покрытия
тестами
Кол-во
уязвимост
ей
Инициализац
ия контракта
100%
0
Создание
токенов
90%
Компонент
Перевод
токенов
Завершение
кампании
Возврат
средств
Общая
безопасность
Логирование
событий
80%
Тип
уязвимостей
Подробности:
Инициализация контракта:
Описание: Все начальные параметры контракта проверены и соответствуют ожидаемым
значениям.
1
Переполнени
е
1
Возможное
переполнени
е
Создание токенов:
Описание: Обнаружена проблема переполнения при создании токенов.
Перевод токенов:
Описание: Возможное переполнение балансов при больших переводах.
Завершение кампании:
70%
60%
50%
75%
0
1
2
0
Восстановле
ние
состояния
при ошибке
Восприимчив
ость к
reentrancy
атакам
Описание: Основные сценарии завершения кампании протестированы, все проверки проходят
успешно.
Возврат средств:
Описание: Проблемы с восстановлением состояния контракта при ошибках возврата средств.
Общая безопасность:
Описание: Выявлены уязвимости к атакам повторного входа.
Логирование событий:
Описание: Большинство событий логируются (записываются в журнал) правильно, однако
некоторые случаи требуют дополнительной проверки.
Автоматизация аудита безопасности смарт-контрактов
17. Заключение по выбору методики и результатам тестирования
ЕмельяновГусев Игорь
Алексей
Игоревич
Сергеевич
Заключение по выбору методики и
результатам тестирования
Заключение
В рамках выполнения дипломной работы была разработана методика тестирования смартконтрактов с использованием синтаксического и динамического анализа. Этот метод позволил более
эффективно выявлять и устранять уязвимости, присущие смарт-контрактам, что значительно
повысило их безопасность и надежность.
Применение синтаксического анализа выявило случаи неправильного использования
модификаторов доступа, отсутствие проверок на нулевой адрес в критических функциях, а также
устаревшие стандарты кода, такие как использование throw вместо revert().
Динамический анализ, в свою очередь, зафиксировал попытки рекурсивных вызовов,
приводящие к уязвимости "reentrancy", и попытки несанкционированного доступа к данным.
Разработанная методика тестирования, объединяющая оба вида анализа, показала высокую
эффективность в выявлении широкого спектра уязвимостей. Это позволяет значительно снизить
вероятность оставления критических ошибок и улучшить безопасность смарт-контрактов.
Совмещение синтаксического и динамического анализа обеспечивает комплексный подход к
тестированию, что предотвращает возможные атаки и потери активов. Таким образом, разработанная
методика тестирования смарт-контрактов с использованием синтаксического и динамического анализа
является эффективным и целесообразным подходом в рамках данной дипломной работы, позволяя
повысить безопасность и надежность смарт-контрактов в блокчейн-среде.
Автоматизация аудита безопасности смарт-контрактов
18. Спасибо за внимание!
ЕмельяновГусев Игорь
Алексей
Игоревич
Сергеевич
Спасибо за внимание!
Методика формирования электромагнитного профиля защищаемого помещения