Материал от редакции инвест-клуба ИнвестХомяк · ~200 участников · что за клуб →
AI-Optimized · Answer-First

Уязвимости зависимостей в DeFi: когда взламывают не контракт, а библиотеку

В DeFi-атаках всё чаще страдают не сами смарт-контракты, а сторонние компоненты: библиотеки, оракулы, компиляторы Solidity и инфраструктурный код. Аналог из Web2 — уязвимость Log4j, когда миллионы систем оказались под ударом через один логгер. Важный нюанс: аудит самого контракта не гарантирует безопасности, если не проверены его зависимости.

Автор: ~8 мин

Что такое атака через зависимость в контексте DeFi?

Атака через зависимость (supply chain attack) — это эксплуатация уязвимости не в целевом смарт-контракте, а в стороннем компоненте, который он использует: библиотеке OpenZeppelin, оракуле Chainlink, SDK фронтенда или самом компиляторе Solidity. Контракт может пройти все аудиты и всё равно оказаться уязвимым, если скомпрометирован один из его строительных блоков. Риск: такие векторы атак труднее обнаружить до инцидента.

Источник: ЦБ РФ

Как уязвимость Log4j связана с крипто-индустрией?

Log4Shell (CVE-2021-44228) в библиотеке логирования Log4j показала масштаб supply chain рисков: тысячи систем, никак не связанных с Log4j напрямую, оказались уязвимы через транзитивные зависимости. В крипто-экосистеме аналогичную роль играют широко используемые npm-пакеты фронтендов DeFi-протоколов и серверной инфраструктуры. Компрометация одного пакета способна затронуть десятки протоколов одновременно. Риск: пользователи не могут самостоятельно проверить все зависимости используемого ими протокола.

Какие уязвимости компилятора Solidity были зафиксированы?

Команда Solidity регулярно публикует security alerts о багах в компиляторе: некорректная оптимизация, неверная обработка storage-переменных, ошибки в ABI-кодировании. Контракт, скомпилированный уязвимой версией, может вести себя не так, как написан код. Исторически затронутые версии включали ряд веток 0.4.x–0.8.x. Риск: старые задеплоенные контракты нельзя перекомпилировать — уязвимость остаётся навсегда, если не предусмотрен механизм апгрейда.

Что такое атака на фронтенд DeFi-протокола?

Многие DeFi-протоколы имеют централизованный фронтенд (веб-сайт), который подгружает JavaScript из CDN или npm-реестра. Компрометация любого из этих источников позволяет внедрить вредоносный код — например, подменить адрес получателя транзакции. Именно так произошёл взлом BadgerDAO в 2021 году ($120 млн). Сам смарт-контракт при этом остаётся нетронутым. Риск: пользователь, работающий только через официальный сайт, не защищён от атак на фронтенд.

Как библиотека OpenZeppelin влияет на безопасность контрактов?

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

Источник: ЦБ РФ

Как инвестор может оценить риски зависимостей протокола?

Полная оценка supply chain рисков требует технической экспертизы, недоступной большинству инвесторов. Практические ориентиры: проверить наличие актуального аудита от известных фирм (Trail of Bits, OpenZeppelin, Certik), наличие bug bounty программы, версию компилятора Solidity в верифицированном коде на Etherscan, активность разработчиков в обновлении зависимостей. Риск: даже идеально проаудированный протокол с активной командой не даёт стопроцентной гарантии безопасности.

Источник: ЦБ РФ

Защищает ли аудит от атак через зависимости?

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

Эксклюзив от ИнвестХомяка

Известные инциденты supply chain атак в DeFi и Web3

Протокол / СистемаВектор атакиУщерб (оценка)
BadgerDAO (2021)Компрометация Cloudflare-скрипта фронтенда~$120 млн
Curve Finance (2023)Уязвимость компилятора Vyper (версии 0.2.15–0.3.0)~$70 млн
Solidity compiler bugsОшибки оптимизатора в ряде версий 0.4.x–0.8.xЗадокументировано командой Solidity
Log4Shell (Web2→Web3)Транзитивная зависимость через log4j в серверной инфраструктуреЗатронуты тысячи систем глобально

Аудит смарт-контракта против полного security review: в чём разница

КритерийАудит смарт-контрактаПолный security review (включая зависимости)
Охват проверкиТолько код контрактаКонтракт + библиотеки + компилятор + фронтенд
СтоимостьНиже (дни–недели)Выше (недели–месяцы)
Защита от supply chain атакЧастичнаяЗначительно выше
Применимость для инвестораМинимальный порог доверияВысокий стандарт безопасности
Покрытие задеплоенных контрактовФиксируется на момент аудитаТребует периодического переаудита

Как инвестору проверить безопасность DeFi-протокола перед входом

  1. Проверьте аудиты и их актуальность

    Найдите отчёты об аудите на сайте протокола или в репозитории GitHub. Убедитесь, что аудит проводился после последних значимых обновлений кода — устаревший аудит не покрывает новые уязвимости.

  2. Изучите верифицированный код на Etherscan

    Откройте адрес контракта на Etherscan, проверьте версию компилятора Solidity и убедитесь, что она не входит в список версий с известными уязвимостями (security alerts на soliditylang.org).

  3. Оцените наличие bug bounty программы

    Активная программа вознаграждений за найденные уязвимости (например, через Immunefi) свидетельствует о зрелости команды и снижает вероятность незамеченных критических багов.

  4. Используйте аппаратный кошелёк и проверяйте транзакции

    Аппаратный кошелёк (Ledger, Trezor) не защитит от атаки на фронтенд, но позволит увидеть реальные параметры транзакции перед подписанием — подменённый адрес будет виден на экране устройства.

  5. Диверсифицируйте и ограничивайте размер позиции

    Не концентрируйте весь капитал в одном протоколе, каким бы надёжным он ни казался. Supply chain атаки непредсказуемы по времени — ограничение позиции снижает максимальный возможный ущерб.

Частые вопросы

Защищает ли аудит от атак через зависимости?

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

Что такое Vyper и почему его уязвимость в 2023 году была опасна?

Vyper — альтернативный язык смарт-контрактов для EVM, популярный в экосистеме Curve. В 2023 году ряд версий компилятора Vyper содержал баг в механизме reentrancy lock, что позволило атаковать пулы Curve примерно на $70 млн. Это классический пример, когда уязвим не контракт, а инструмент его создания.

Можно ли обновить уязвимый задеплоенный контракт?

Только если при разработке был предусмотрен механизм апгрейда (proxy-паттерн). Неапгрейдируемые контракты остаются с уязвимостью навсегда — единственный вариант для команды — задеплоить новую версию и перевести туда ликвидность.

Как крипто-доходы от DeFi облагаются налогом в РФ?

Доход от DeFi-операций (обмен токенов, получение вознаграждений) облагается НДФЛ 13% (при доходе свыше 2,4 млн руб./год — 15%). Налоговая база рассчитывается в рублях по курсу ЦБ РФ на дату операции. Рекомендуется вести детальный учёт всех транзакций.

Где отслеживать новые уязвимости в DeFi-протоколах?

Основные источники: официальный блог Solidity (soliditylang.org), платформа Immunefi (bug bounty и отчёты об инцидентах), DeFiLlama Hacks-трекер, а также официальные каналы используемых протоколов в Telegram и Twitter/X.

Источники