Back to Blog

Истинная первопричина инцидента безопасности Vee Finance

Code Auditing
22 сентября 2021 г.
3 min read

VEE finance выпустила отчет о недавнем инциденте безопасности. В отчете они заявляют, что основной причиной является то, что «манипулирование ценой оракула Vee Finance и получение цены оракулом не были обработаны с учетом десятичных дробей, в результате чего ожидаемая проверка проскальзывания перед свопом не сработала».

«Основной причиной инцидента стало то, что в процессе создания ордера для торговли с кредитным плечом оракул использовал только цену пула Pangolin в качестве источника котировок, а цена в пуле колебалась более чем на 3%. Оракул обновил цену, что позволило злоумышленнику манипулировать ценой пула Pangolin. Манипулирование ценой оракула Vee Finance и получение цены оракулом не были обработаны с учетом десятичных дробей, в результате чего ожидаемая проверка проскальзывания перед свопом не сработала». — цитата из отчета, опубликованного VEE finance.

Однако после нашего тщательного расследования мы обнаружили, что это, возможно, НЕ так. Истинная причина заключается в том, что злоумышленник создает ФЕЙКОВЫЙ ctokenB и передает его в контракт. Поскольку ctokenB контролируется злоумышленником, он может вернуть произвольный базовый токен, который используется для расчета цены токена. Это и есть реальная первопричина атаки.

Весь процесс

Существует внешняя функция createOrderERC20ToERC20, которую может вызвать любой пользователь для создания свопа токенов, используя ctoken, полученный путем внесения обеспечения в контракт. У ctoken есть базовый токен, который представляет собой реальный токен.

В обычном случае при вызове createOrderERC20ToERC20 для торговли парой токенов с кредитным плечом dApp должен гарантировать, что торговля не повлечет никаких убытков (в противном случае dApp потеряет деньги). Это обеспечивается вызовом функции getAmountOutMin.

Допустим, мы вносим 0.95 ETH в dApp и получаем ctoken, который стоит 0.5 ETH (избыточное обеспечение). Затем мы можем использовать 3-кратное кредитное плечо, чтобы попросить dApp обменять 1.5 ETH на другой токен (скажем, tokenX) от имени пользователя. В этом случае, чтобы предотвратить убытки, dApp должен убедиться, что стоимость торгуемого tokenX не может быть ниже 0.95 * 1.5 ETH (в противном случае dApp рискует потерять деньги). Для расчета стоимости ETH и tokenX dApp использует внешний ценовой оракул.

Однако функция createOrderERC20ToERC20 не проверяет переданный ctokenB. Таким образом, злоумышленник может внедрить свой собственный контракт в качестве ctokenB и передать его в функцию createOrderERC20ToERC20. В результате этот фейковый ctokenB может возвращать базовый токен как LINK (0x5947bb275c521040051d82396192181b413227a3) при вызове в createOrderERC20ToERC20 и getAmountOutMin, но возвращать базовый токен как BTC при вызове в IPriceOracle(oracle).getUnderlyingPrice(createParams.ctokenB). Таким образом, он может обойти проверку isRightPrice, поскольку токен, используемый для расчета цены, — это BTC (а не LINK). Это можно подтвердить возвращаемым значением priceB — 0x15e1549d1216fe9fc032e7c00000 (443783124870000000000000000000000). Это цена BTC.

Заключение

Подводя итог, злоумышленник использует отсутствие проверки ctokenB. Поскольку ctokenB не является доверенным, базовый токен, возвращаемый им, также не может быть доверенным. Однако в этой атаке ценовой оракул скомпрометирован НЕ был.

Вывод

Обеспечение безопасности DeFi-проекта — непростая задача. Помимо аудита кода, мы считаем, что сообществу следует применять проактивный подход к мониторингу состояния проекта и блокировать атаку еще до того, как она произойдет.

О компании BlockSec

BlockSec — это передовая компания в области безопасности блокчейнов, основанная в 2021 году группой всемирно признанных экспертов по безопасности. Компания стремится к повышению безопасности и удобства использования для формирующегося мира Web3, чтобы способствовать его массовому внедрению. С этой целью BlockSec предоставляет услуги аудита безопасности смарт-контрактов и EVM-цепочек, платформу Phalcon для безопасной разработки и проактивного блокирования угроз, платформу MetaSleuth для отслеживания и расследования транзакций, а также расширение MetaSuites для эффективной работы разработчиков Web3 в криптомире.

На сегодняшний день компания обслужила более 300 уважаемых клиентов, таких как MetaMask, Uniswap Foundation, Compound, Forta и PancakeSwap, и привлекла десятки миллионов долларов США в двух раундах финансирования от выдающихся инвесторов, включая Matrix Partners, Vitalbridge Capital и Fenbushi Capital.

Официальный сайт: https://blocksec.com/

Официальный аккаунт в Twitter: https://twitter.com/BlockSecTeam

Sign up for the latest updates
Потери около 5,57 млн USD: атаки на X100 Freezer и NEM | Еженедельный обзор BlockSec
Security Insights

Потери около 5,57 млн USD: атаки на X100 Freezer и NEM | Еженедельный обзор BlockSec

Этот еженедельный отчёт охватывает два инцидента безопасности в сетях Ethereum и BNB Chain за период 19.10.2026–25.10.2026. В нём рассматриваются захват управления X100 Freezer, профинансированный с помощью флеш-кредита, и ошибка при расчёте налога, затронувшая пул ликвидности токена NEM в сети BNB Chain. Оценочные потери в рамках отчёта составляют в общей сложности около 5,57 млн USD: ~4,75 млн USD по рассматриваемой транзакции X100 и ~820 тыс. USD в результате инцидента с пулом NEM. В эту сумму не входят отдельно опубликованные данные о последующих выводах средств из X100.

Потери на сумму около 3,87 млн USD: взломы Autheo Network и UNCX | Еженедельный обзор BlockSec
Security Insights

Потери на сумму около 3,87 млн USD: взломы Autheo Network и UNCX | Еженедельный обзор BlockSec

В этом еженедельном отчёте рассматриваются 3 инцидента безопасности за период 12.10.2026–18.10.2026. Общий оценочный ущерб составил около 3,87 млн USD. Ущерб Autheo Network от компрометации закрытого ключа составил примерно 1,76 млн USD, Qubic Wallet потерял примерно 1,30 млн USD из-за ненадёжной генерации seed, а ошибка учёта в контрактах Smart Token Vesting V2 сети UNCX Network на Ethereum, BNB Chain, Base и Robinhood Chain привела к ущербу примерно в 807 тыс. USD. В подробном анализе инцидента UNCX объясняется, как некорректный расчёт совокупного количества долей смешивал транши вестинга, созданные при разных соотношениях токенов и долей, и позволял выводить из общих пулов больше положенного.

Потеряно около $542 тыс.: эксплуатация уязвимости MakerDaoBot | Еженедельный обзор BlockSec
Security Insights

Потеряно около $542 тыс.: эксплуатация уязвимости MakerDaoBot | Еженедельный обзор BlockSec

В Ethereum за 05–11.10.2026 произошёл 1 инцидент; ущерб — около $542 тыс. Атакующий передал вредоносный адаптер функции MakerDaoBot без контроля доступа. Получив права на балансы MakerDAO, адаптер закрыл 4 аукциона ETH-A, конвертировал 200 ETH-A в WETH; атакующий вывел 200 ETH.

Best Security Auditor for Web3

Validate design, code, and business logic before launch. Aligned with the highest industry security standards.

BlockSec Audit