Back to Blog

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

Code Auditing
September 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
Мост Harmony Cross-Shard ONE Mint + потеря ключей на ~$47М | BlockSec
Security Insights

Мост Harmony Cross-Shard ONE Mint + потеря ключей на ~$47М | BlockSec

10-16 авг 2026: 5 инцидентов, ~$47М убытков. Анализ — уязвимость Harmony: replay чеков между шардами создал 3.01Т ONE (не учтено в убытках). $47М — кражи ключей (Whale ~$25М, Kite ~$14М, Coinsbuy ~$7.9М) и ошибка Fox (~$117K).

~$1.6M потеряно: эксплойты токена Moke и LpdFi | BlockSec Weekly
Security Insights

~$1.6M потеряно: эксплойты токена Moke и LpdFi | BlockSec Weekly

За неделю 3-9 августа 2026 года в BNB Chain произошло 2 инцидента с общими потерями ~$1,6 млн из-за манипуляций с ценами. LpdFi (~$697K): атакующий использовал резервы PancakeSwap для завышения позиции. Moke Token (~$906K): манипуляция ценой и дублирование дивидендов LP.

Инцидент с COLDCARD: когда «случайная» сид-фраза кошелька оказалась не случайной
Security Insights

Инцидент с COLDCARD: когда «случайная» сид-фраза кошелька оказалась не случайной

Ошибка в прошивке COLDCARD направляла генерацию seed на слабый программный ГСЧ, делая кошельки восстановимыми офлайн. Обновление не устраняет проблему. К 7 августа 2026 г. подтверждённые потери — 1 405 BTC (~$91 млн), оценки до 2 055 BTC.

Best Security Auditor for Web3

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

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