Що таке Blockchain Code Audit?
Аудит смарт-контракту є важливим кроком перед запуском dApp: сторонні аудитори можуть знайти вразливі місця, які команда могла не помітити. Аудитори використовують як автоматичні інструменти, так і ретельний ручний аналіз, які допомагають запобігти більшості зломів. Дізнайтеся, як проводяться перевірки та чому не варто вкладати гроші в неперевірені протоколи.
1. Процес аудиту складається з перевірки проекту, автоматизованого тестування, ручного аналізу коду та експертної оцінки. Далі йде детальний звіт зі списком виявлених вразливих місць і рекомендаціями щодо їх усунення.
2. Автоматизовані інструменти тестування смарт-контрактів можуть знайти загальні вразливості, такі як повторне входження, перевпорядкування транзакцій, переповнення та залежність від часових позначок. Найпопулярніші інструменти — Mythril, Manticore, Slither та Oyente.
3. Автоматичне тестування заощаджує багато часу, але може пропустити помилки в коді або надати хибні дані. Тому ручний построковий аналіз коду має важливе значення.
4. Більшість аудиторських фірм працюють із мережами Solidity та EVM, а також із Solana, але деякі, як-от OtterSec і Halborn, уже працюють із Move. Move є набагато безпечнішою мовою, ніж Solidity, але Move dApps все ще потребує аудиту: наприклад, Pontem Wallet наразі проходить третій аудит.
5. Неперевірені dApps є постійними об’єктами для хакерів, або вони можуть некоректно працювати через внутрішню помилку. Яскравими прикладами є Nomad, Beanstalk і Yam Finance.
6. До провідних аудиторів смарт-контрактів належать Hacken, OtterSec, CertiK, ConsenSys Diligence, Halborn і Quantstamp.
Що таке аудит смарт-контрактів і чому він важливий?
Аудит коду блокчейну або смарт-контракту – це аналіз коду блокчейну або dApp, який проводять його розробники або сторонній аудитор, мета якого полягає в пошуку помилок, вразливостей і багів.
Безпека блокчейну є частиною відомої трилеми Віталіка Бутеріна: безпека, масштабованість і децентралізація. Ці три найважливіші аспекти мережі або dApp мають бути збалансовані.
Як і в будь-якому програмному проекті, крипто dApp має працювати надійно та послідовно, інакше клієнти швидко втратять довіру до нього. Але для блокчейну ставки набагато більші, оскільки dApp може утримувати сотні мільйонів доларів ліквідності – і всі ці гроші можуть бути викрадені за одну атаку, якщо хакер знайде лазівку в коді контракту.
Ключовим методом запобігання цьому є аудит коду, який проводиться зовнішнім джерелом. Ми розглянемо, яку структуру має аудит смарт-контрактів, які вразливості вони можуть виявити, які фірми працюють у цій сфері, та, нарешті, як пропуск аудиту може призвести до катастрофічних втрат.
5 кроків блокчейн аудиту
- Огляд проекту та аналіз коду верхнього рівня.
Групі зовнішнього аудиту потрібно добре вивчити проект: його архітектуру, бізнес-логіку, практичне застосування тощо. Багато великих DeFi використовують цільові прогалини в логіці програми або економічні недоліки. Чудово, коли рецензент може вказати на такі недоліки, хоча це може вийти за межі аудиту смарт-контракту.
Клієнт також повинен описати цілі аудиту, як слід запускати тести, які варіанти використання потрібно протестувати, та іншу ключову інформацію.
Далі група аудиту читає весь репозиторій, щоб зрозуміти, як реалізована логіка dApp.
2. Автоматизоване тестування.
Досі існує небагато програмних інструментів для тестування смарт-контрактів, і майже всі вони призначені для мереж Solidity та EVM. Вони не можуть знайти недоліки в бізнес-логіці чи токеноміці, але заощаджують багато часу аудиторам. Найбільш популярні з них:
- Mythril від ConsenSys – потужний інструмент із відкритим кодом, який виявляє багато критичних помилок; є частиною пакета послуг безпеки MythX.
- Manticore – інструмент командного рядка, який перевіряє різні сценарії атак, надсилаючи символічні вхідні дані, щоб побачити, чи призведуть вони до збою dApp; знаходить вхідні дані, що призведуть до конкретної помилки; з’ясовує, що стало причиною конкретного збою тощо.
- Slither – швидкий і простий у використанні засіб перевірки, який висвітлює критичні вразливості та забезпечує їх виправлення.
- Oyente – створений у 2016 році, цей інструмент не оновлювався протягом кількох років, але все ще отримує гарні відгуки щодо точності.
Поширені вразливості
Програмне забезпечення для аудиту смарт-контрактів може виявити багато різних вразливостей, зокрема:
- Reentrancy - зловмисник неодноразово викликає функцію виведення коштів, щоб вивести кошти з вразливого смарт-контракту на свій гаманець.
- Reordering - зловмисник виконує свою транзакцію перед іншими транзакціями в черзі, щоб маніпулювати ціною (відоме як front-running).
- Overflow і underflow – надсилання неправильних даних, щоб змусити смарт-контракт зробити помилку в розрахунку (результат або перевищує допустиму верхню межу, або менший за нижню межу). У результаті зловмисник може замінтити величезну кількість токенів.
- Timestamp dependency - зловмисник передає неправильну часову позначку в контракт, щоб виглядало так, ніби їх транзакція відбулася в певний момент (наприклад, щоб виграти аукціон чи лотерею).
- Replay - перехоплення та повторне надсилання даних у блокчейн (може використовуватися для крадіжки коштів під час форку).
3) Ручний построковий аналіз і тестування коду.
Цей етап допомагає знайти будь-які помилки, пропущені автоматичними інструментами. Він також виявляє хибні спрацьовування: фрагменти коду, які програмне забезпечення автоматичного аудиту неправильно позначило як вразливі місця.
Аудит може виявити вразливості різних рівнів серйозності: критичного рівня (дозволяє зловмиснику викрасти токени, пошкодити dApp тощо), середнього рівня (потенційна шкода обмежена) і низького рівня (все ще є баг, але він створює невеликий ризик фінансової або структурної шкоди).
4) Експертна перевірка.
В ідеалі вам потрібно кілька аудиторів для максимальної впевненості. Іноді аудитори працюють у групах і разом аналізують код, щоб експертна перевірка відбулася одночасно.
Продовжуйте читати, щоб дізнатися про ризики відмови від експертної перевірки.
5) Аудиторський звіт.
Нарешті результати складаються в багатосторінковий звіт, який надається клієнту. Він містить перелік виявлених помилок, а також рекомендації щодо їх усунення та подальшого підвищення безпеки проекту.
Стандартною практикою в блокчейні є оприлюднення аудиторських звітів: насправді це хороший маркетинговий інструмент для проектів, оскільки він демонструє безпеку та прозорість dApp. Звичайно, якщо будуть виявлені будь-які критичні вразливості, проект зазвичай спочатку їх виправляє.
Складність аудиту смарт-контрактів Move vs. Solidity
Як ми пояснювали в нашій статті Ethereum Virtual Machine, смарт-контракти EVM і Solidity складно налагодити, і вони мають багато проблем із безпекою. Додайте до цього домінування ланцюгів EVM (9 з 10 найкращих блокчейнів за версією DeFi TVL використовують EVM), і ви зрозумієте, чому індустрія смарт-контрактів так зосереджена на Solidity. Він має як перевагу першоджерела, так і багато вразливостей, які потребують перевірки.
Коли ви переходите від екосистеми Ethereum/EVM до альтернативного блокчейн-середовища, такого як Move, ви стикаєтеся з дуже цікавим завданням. З одного боку, мова Move та Move VM набагато безпечніші, ніж Solidity та EVM. Наприклад, контракти Move стійкі до атак з повторним входом.
З іншого боку, dApps, засновані на Move, все одно повинні пройти аудит – і поки що не так багато фахівців із безпеки блокчейну, які працюють з цією мовою. Аудитори Pontem Wallet OtterSec і Halborn є одними з піонерів, а сам Pontem Wallet є одним із перших повністю перевірених dApps на Aptos, чим ми справді пишаємося.
До речі, наш аудитор OtterSec опублікував дуже цікавий блог про те, як створювати безпечніші dApps за допомогою Move, і деякі коди з нашого Liquidswap DEX використано як приклад!
Найкращі аудиторські компанії смарт-контрактів
Hacken
Створена у 2017 році, Hacken перевіряє більшість протоколів блокчейну, смарт-контракти та dApps. Фірма також курує програми винагород за баги для таких платформ, як CoinGecko.
Hacken працює з великою різноманітністю блокчейнів: EVM chains, Solana, NEAR, Cosmos, Polkadot тощо.
ЇЇ клієнти включають FTX, Gate.io, Crypto.com, KuCoin, Huobi, Ellipsis, IoTex, 1inch, Aurora, Klaytn, Cirus, Victoria VR, WAX, TrustSwap та десятки інших проектів DeFi, GameFi, інфраструктури та NFT проекти.
OtterSec
OtterSec є провідним постачальником блокчейн-аудиту в екосистемі Solana. Його вражаюче портфоліо включає Wormhole, Serum, Sabre, Raydium, Solend, Socean, а також Anchor, LayerZero та Proximity на NEAR.
Крім того, це одна з небагатьох аудиторських фірм блокчейну, яка працює з новою мовою програмування Move, яку використовують Aptos і Sui. OtterSec завершив перший аудит нашого Pontem Wallet для Aptos, а також Hippo Wallet.
OtterSec також має чудовий блог із порадами експертів щодо безпеки смарт-контрактів, особливо щодо Solana.
Zellic
Zellic була заснована всесвітньо відомою командою white-hat hackers під назвою Perfect Blue. У 2020 і 2021 роках вони були визнані командою № 1 у світі CTF (Capture the Flag), змагаючись у подіях з кібербезпеки, таких як Google CTF і Def Con CTF.
Компанія відома своєю швидкістю виконання та здатністю знаходити приховані вразливості. Його інженери з безпеки виявляють не лише інженерів-кодувальників, але й економічні та бізнес-логічні недоліки.
Серед клієнтів Zellic – Aptos Labs, Solana Foundation, LayerZero, SushiSwap, 1inch, Wormhole тощо.
CertiK
CertiK відомий насамперед своєю таблицею лідерів із безпеки блокчейну, де 3000+ проектів ранжуються за показником довіри. Аудит безпеки є додатковою сферою компетенції CertiK разом із тестуванням на проникнення (випробовування будь-яких і всіх методів входу в частини системи, до яких не можна отримати доступ), KYC, винагородами за баги, моніторингом у мережі та відстеженням гаманця.
CertiK провів понад 1800 аудитів для протоколів Ethereum, Avalanche, BNB Chain, Solana, Algorand, NEAR і Cosmos. Це надійний постачальник послуг аудиту Binance, The Sandbox, Huobi та OKex.
Halborn
Halborn був створений етичними (white-hat) хакерами у 2019 році, і зараз він включає понад 50 спеціалістів із безпеки блокчейну. Крім аудиту смарт-контрактів, компанія спеціалізується на консалтингу з питань безпеки, тестуванні на проникнення та автоматизації безпеки.
Halborn працював із такими популярними проектами, як Polygon, Solana, Thorchain, Bancor, Pangolin, Reef, Sushi, BlockFi, Polkadex і навіть Bored Apes Yacht Club. Він також є одним з аудиторів Pontem Wallet, першого гаманця для блокчейну Aptos.
Ми рекомендуємо Halborn’s blog, в якому представлені аналітичні відомості про останні злами DeFi і детально розглядаються найпоширеніші типи атак на блокчейн.
Zokyo — це фірма, яка спеціалізується на комплексній безпеці, у команді якої є ряд відомих етичних хакерів. Вона спеціалізується не лише на аудиті смарт-контрактів, але й на тестуванні на проникнення, виявленні витоку даних, оцінці баз даних і аудиті вразливостей CMS.
Zokyo працювала з десятками великих блокчейн-проектів, у тому числі Fuse, yearn.finance, LayerZero, Qredo, CPRX, Shoyu, Badger DAO, ShapeShift тощо. Крім того, інженери безпеки Zokyo є одними з найкращих учасників у програмах винагород за баги, які проводить Twitter, Facebook і Uber.
ConsenSys Diligence
ConsenSys — компанія, що стоїть за MetaMask, Truffle та Infura — ключовими інструментами для розробників Web3. Підрозділ ConsenSys Diligence, який займається аудитом смарт-контрактів, працював із більш ніж 100 командами, такими як Aave, OmiseGo, 0x, Aragon і Horizon.
Окрім аудиту ConsenSys Diligence надає послуги: моделювання загроз, безперервна перевірка вразливостей, планування реагування на атаки та інші.
Quantstamp
Quantstamp працювала з понад 250 проектами, забезпечивши активи на суму понад 200 мільярдів доларів та заблоковану ліквідність. Його портфоліо включає OpenSea, Curve, Maker DAO, Compound, NBA TopShot, Lido, SuperRare, Decentraland, Aave та Axie Infinity.
Фірма працює з багатьма блокчейн-екосистемами, такими як Solana, Ethereum, BNB Chain, Cardano, Flow, Near, Tezos і Hedera Hashgraph. Вона також забезпечує захист клієнтів Teku і Prysm для Ethereum 2.0.
3 програми DeFi dApps, які зазнали краху, оскільки не провели аудит смарт-контракту
На неперевіреному DeFi dApp із заблокованими мільйонами доларів намальована ціль із написом «Хакни мене». І навіть якщо його не використовує третя сторона, він може стати жертвою внутрішньої проблеми з кодом. Ось три історії, які показують наслідки нехтування аудиту.
Міст Nomad: 200 мільйонів доларів забрали безкоштовно всі хто встиг
Nomad — це міст, що з’єднує Ethereum, Evmos, Moonbeam, Avalanche і протокол Milkomeda. За словами керівника відділу безпеки Paradigm @samczsun, експлойт від 2 серпня був націлений на нещодавнє оновлення Nomad, яке не було перевірено.
Помилка в контракті дозволила користувачам надсилати невеликі суми WBTC з Moonbeam і отримувати в 10 000 разів більше WBTC назад на Ethereum. Вам не потрібно було бути програмістом: все, що потрібно, це скопіювати та вставити.
У міру того, як новини про лазівку поширювалися, все більше і більше людей приєднувалися до безкоштовної акції. Це був не злом однієї людини, а скоріше хаотична, опортуністична атака з 41 адреси. Загалом було втрачено близько 200 мільйонів доларів – уся ліквідність, яку зберігав міст.
Nomad заявив, що співпрацюватиме з фірмами безпеки блокчейну, щоб відстежити та повернути гроші. Проте, ймовірно, слід було залучити спеціалістів із безпеки блокчейну, перш ніж просувати неперевірене оновлення контракту в основній мережі!
Beanstalk: хакнуто на 180 мільйонів доларів за допомогою швидкого кредиту
Beanstalk — це децентралізований стейблкойн на Ethereum. Замість того, щоб використовувати заставу для підтримки прив’язки BEAN, він використовує кредит, заохочуючи власників позичати свої бінс в обмін на відсотки.
17 квітня 2022 року хакер скористався помилкою в коді управління Beanstalk. Вони взяли швидкі кредити на Uniswap, SushiSwap і Aave, запозичивши близько 1 мільярда доларів в DAI, USDC, USDT і BEAN. Хакер помістив цю ліквідність у пули BEAN на Curve, отримавши достатньо токенів LP, щоб надати їм більшість голосів у DAO Beanstalk.
Потім зловмисник подав нову пропозицію щодо вдосконалення Beanstalk (BIP), щоб перевести всі кошти з протоколу на свою власну адресу, і проголосував за неї, щоб вона автоматично була прийнята. Загалом зловмисник отримав до 182 мільйонів доларів у токенах BEAN, ETH і Curve LP. Все, що їм тепер залишалося зробити, це повернути швидкі кредити.
Смарт-контракти Beanstalk були перевірені Omnicia. Але код, який містив вразливість флеш-позики, було додано пізніше без аудиту. Урок полягає в тому, що аудит смарт-контрактів — це постійний процес: кожну нову функцію потрібно перевіряти.
Yam Finance: впав на 99% через помилку
Запущений у серпні 2020 року Yam Finance був раннім експериментом із перебазування: пропозиція YAM збільшувалася або скорочувалася залежно від ціни. Проект приносив високу винагороду за фармінг, але що дійсно приваблювало користувачів, так це милі емодзі та меми про картоплю ямс (YAM = YFI + Ampleforth, два протоколи DeFI, чиї ідеї запозичив Yam Finance).
Весь проект був створений лише за 10 днів, коли засновники «розкидувались навколо ідеями». Оскільки це був лише експеримент, команда розгорнула Yam Finance без аудиту. Це стало шоком, коли 400 мільйонів доларів у TVL влилися в протокол за один день.
Але всього через два дні після запуску Yam Finance зазнав краху. Причиною стала помилка у функції перебазування: контракт мінтив занадто багато YAM для певного пулу на Uniswap. Велика частина цього YAM була відправлена в скарбницю, і це, в свою чергу, зробило модуль управління непридатним для використання, оскільки кількість YAM, що зберігалася користувачами, була недостатньою для досягнення кворуму для будь-якого голосування.
Було потенційне виправлення, але його потрібно було проштовхнути через голосування DAO. Команда згуртувала спільноту, щоб делегувати всі свої YAM для голосування, але результату було недостатньо. Співзасновник Брок Елмор написав у Twitter, що «захворів від горя».
Yam Finance існує, маючи лише 200 тис. доларів у TVL. Урок полягає в тому, що протокол DeFi може стати вірусним настільки швидко, що не буде часу на пошук помилок і їх виправлення. Перед запуском необхідно провести аудит.
Аудит не є гарантією безпеки
Одиночний аудит смарт-контракту ніколи не є 100% гарантією того, що проект не буде хакнуто - з кількох причин:
1. Наприклад, у грудні 2021 року компанія Grim Finance втратила 30 мільйонів доларів через хакера, хоча її перевірила компанія Solidity Finance.
Виявилося, що аналітик, який відповідав за аудит, був новачком; Хоча аудитори зазвичай перевіряють роботу один одного, команда була «перевантажена», і процес експертної перевірки пройшов не так, як мав би. До честі Solidity, це був лише другий злом серед 900+ проектів, які вони перевірили.
2. Зловмисник може викрасти/підмінити ключ гаманця замість того, щоб хакнути контракт.
Це те, що сталося з bZX (втрачено 55 мільйонів доларів) і EasyFi (90 мільйонів доларів). В останньому випадку злочинець отримав доступ до гаманця MetaMask самого генерального директора протоколу.
3. Деякі експлойти використовують діри в сторонньому dApp (неперевіреному) для націлювання на інший інтегрований з ним протокол.
4. Майбутні зміни в блокчейні. Коли мережа, на якій живе dApp, проходить оновлення, можуть виникати нові вектори атак.
З усіх цих причин аудиторські угоди та звіти завжди містять застереження. З точки зору команди dApp, найкращий спосіб мінімізувати ці ризики — це пройти кілька незалежних перевірок — мати «надлишковий аудит», якщо є бажання.
Це наша стратегія в Pontem Network, оскільки ми хочемо, щоб наші dApps для Aptos були найбезпечнішими в екосистемі. Попри те, що наші аудитори в Ottersec не виявили жодних вразливостей у Pontem Wallet, ми зараз працюємо з Halborn над ще одним оглядом, і третя перевірка вже на підході.
Звичайно, це дещо сповільнює процес масштабування, але ми вважаємо, що безпека користувачів є більш пріоритетною, ніж швидке зростання. Зрештою, ми створюємо набір основоположних dApps для екосистеми, яка може залучити перший мільярд користувачів блокчейну, а сам Aptos є найбезпечнішим блокчейном L1 у світі. Тож доцільно, щоб ми зосередилися на безпеці понад усе.
Щоб дізнатися більше про безпеку в Pontem Wallet і Aptos, дивіться останні прямі трансляції AMA від Pontem разом зі співзасновником Core Protocol Алехо Пінто. І не забудьте підписатися на нас у Twitter і Telegram, щоб отримувати більше оновлень щодо процесу аудиту!