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
За пределами смарт-контракта: операционная безопасность доменов и DNS в Web3
Security Insights

За пределами смарт-контракта: операционная безопасность доменов и DNS в Web3

Аудит контрактов не проверяет сам контракт. Мы провели 800 SEAL-проверок DNS и регистраторов для 100 доменов из TVL Top 100 DefiLlama — лишь один домен прошёл все. Каких четырёх мер защиты не хватает большинству и почему это критично для пользователя.

Поверхности атаки Web3: обзор тестирования на проникновение

Поверхности атаки Web3: обзор тестирования на проникновение

Крипто-организации сохраняют все традиционные уязвимости и добавляют цепочку работы с деньгами. Статья описывает систему через четыре компонента: приложение, авторизацию и подпись, взаимодействие с блокчейном, инфраструктуру — с их зонами атак, а также пять специфичных для web3 областей: от эксплуатации и подписания до вывода средств и контрактов.

Потеряно ~23 млн $: эксплойты Cosmos EVM и Moonwell | BlockSec Weekly
Security Insights

Потеряно ~23 млн $: эксплойты Cosmos EVM и Moonwell | BlockSec Weekly

За период (22.08.2026–30.08.2026): 5 инцидентов, ~$22,7 млн убытков; Tectonic — $74–119,5 млн, откачены на Cronos. Взлом Cosmos EVM (~$5,7 млн) на TAC Chain, Moonwell, Ajna, Rain Card Exploit (Ed25519) на Solana.

Best Security Auditor for Web3

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

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