Аудит смарт-контрактів та блокчейн
Наша компанія провела аудит смарт-контракту для Concordex - платформи децентралізованого фінансування (DeFi). Цей проєкт яскраво демонструє важливість ретельного аудиту смарт-контрактів перед їх впровадженням.
Про платформу
Concordex використовує смарт-контракти для:
- Управління транзакціями.
- Забезпечення ліквідності.
- Виконання інших фінансових операцій.
Виявлені критичні вразливості
Під час аудиту наші експерти виявили три основні вразливості:
- Атаки Reentrancy.
- Дозволяли зловмисникам викликати функцію контракту кілька разів до завершення першої транзакції.
- Потенційний наслідок - втрата коштів користувачами.
- Неправильна валідація введених даних.
- Деякі функції не мали належної перевірки вхідних даних.
- Можливі наслідки - виконання небезпечних операцій або маніпуляції з балансами.
- Уразливість до атак переповнення.
- Відсутність захисту від атак переповнення у кількох функціях.
- Потенційні ризики - неправомірне збільшення балансу зловмисників або інші небажані наслідки.
Більше подробиць - у публічному звіті з аудиту.
Одним з наших аудиторських проєктів була перевірка смарт-контрактів на платформі DX25. Цей аудит дозволив виявити кілька важливих вразливостей та надати рекомендації щодо їх усунення.
Методологія аудиту
Наш підхід до аудиту смарт-контрактів проєкту DX25 включав комбінацію ручних та автоматизованих методів для всебічного виявлення потенційних вразливостей. Основні аспекти аудиту охоплювали:
- Оцінку управління потоками поведінки.
- Перевірку контролю доступу.
- Оцінку загроз відмови в обслуговуванні.
- Перевірку криптографічних питань.
- Аналіз типових помилок коду.
Виявлені вразливості
В ході аудиту було виявлено кілька вразливостей різного рівня ризику:
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.
Більше подробиць - у публічному звіті з аудиту.
Під час тесту на проникнення торговельного рішення DEX була проведена оцінка трьох повних вузлів Cardano. Оцінку проводили в режимах чорної скриньки та сірої скриньки. У результаті було виявлено, що 4 оновлення безпеки не були встановлені, а також були підтверджені 3 вразливості на рівні ядра. Замовник усунув вразливості, що були виявлені, а після цього почав виконувати операції керування пулом у безпечний спосіб.
Вихідний код протоколу ліквідності для незмінних токенів, включаючи смарт-контракти, був перевірений із точки зору безпеки з використанням відображення вразливостей до схем класифікації CWE/SANS Top 25, DASP Top 10 і SWC Registry. Результати включали дорогі цикли, мертвий код, неналежний рівень видимості функцій у контрактах та інтерфейсах, слабкі місця, на які потенційно впливали майнери. Уразливості були класифіковані як SWC-135, SWC-100, SWC-108 і DASP-8. Замовник отримав детальний звіт з усіма висновками, які згодом були успішно усунуті та виправлені в новому релізі.
Нещодавно нам удалося отримати унікальний досвід аналізу децентралізованої біржі, орієнтованої на інноваційний протокол Milkomeda L2. Протокол дозволяє отримати можливості віртуальних машин Ethereum у блокчейн мережах, де їхня підтримка не передбачена.
У ході аудиту смарт-контрактів, що забезпечують роботу біржі, ми застосували свою перевірену часом методологію. Аналіз складався як із автоматичних перевірок, так і з ручних. Проведено тести з пошуку вразливостей із SWC та DASP TOP10, а також розгортання контрактів у тестовій мережі для реалізації всіх можливих сценаріїв атак.
Як результат, ми допомогли нашому клієнту стати впевненим у тому, що його проєкт не буде черговим інфоприводом для новини про найбільший злам біржі. Були розроблені персональні рекомендації щодо усунення знайдених уразливостей, а також шляхи економії витрат Gas.
Нам було поставлено завдання провести аудит смарт-контрактів, написаних для блокчейна Algorand – конкурента Ethereum.
Програмування на блокчейні Algorand є відносно новою областю, без множини стандартів безпеки, документації або вироблених практик.
Незважаючи на це, смарт-контракти можуть керувати десятками мільйонів доларів, що робить їх метою злочинців.
Смарт-контракти Algorand використовують спеціальну мову - Transaction Execution Approval Language (TEAL). Надані нам смарт-контракти були створені за допомогою PyTeal - Python-бібліотеки для створення TEAL-програм.
Нам потрібно підтвердити, що функції смарт-контрактів працюють так, як задумано, та визначити будь-які потенційні проблеми безпеки. Для цього ми використовували власний код для перевірки ряду векторів атак із різними даними, які відповідають сценаріям реальних інцидентів. Ми також скористалися списком відомих проблем безпеки смарт-контрактів та офіційним керівництвом Algorand. Нарешті, ми підтвердили наші знахідки шляхом розгортання смарт-контрактів у власній мережі та перевірки знайдених проблем.
В результаті нам вдалося переконатися в неможливості зловживання смарт-контрактами чи порушень бізнес-вимог замовника. Додатково, ми надали замовнику корисні рекомендації щодо покращення на основі нашого досвіду.