Back to Blog

Вкладывайте меньше, получайте больше: подробности атаки на yCREDIT

Code Auditing
January 3, 2021
2 min read

2 января 2021 года (07:25 утра по пекинскому времени) наша система мониторинга ThunderForecast зафиксировала серию подозрительных транзакций в смарт-контракте yCREDIT. Затем мы использовали систему EthScope, разработанную нашей исследовательской группой, чтобы проанализировать эти транзакции и подтвердить, что все они являются вредоносными. В этом блоге мы подробно описываем детали атаки.

Детали

Атака произошла из-за того, что количество выпущенных (minted) токенов не соответствовало запланированному. Таким образом, злоумышленник мог получить гораздо больше токенов yCREDIT по более низкой цене. Затем эти токены можно было продать для получения прибыли.

Уязвимая функция находится в функции _deposit контракта StableYieldCredit.

Ниже мы воспользуемся транзакцией атаки, чтобы проиллюстрировать весь процесс.

Сначала злоумышленник перевел 1e-8 WBTC и 331.335 токенов yCredit в пул пар WBTC-yCREDIT. Затем атакующий внес 0.5 WBTC в контракт StableYieldCredit, чтобы начать атаку.

В частности, _value рассчитывается с использованием amount (0.5) token (0x2260fac5e5542a773aa44fbcfedf7c193bc2c599 — WBTC) на основе провайдера оракула цен ChainLink (строка 480, _value равно 1466786010075). Цель состоит в том, чтобы рассчитать стоимость внесенного WBTC в долларах США. Затем контракт переводит количество токенов yCREDIT (_value - комиссия) тому, кто внес WBTC (злоумышленнику). Это происходит потому, что стоимость yCREDIT равна одному доллару США (как задумано системой). Все было бы в порядке, если бы злоумышленник не терял небольшую сумму комиссии.

Более того, контракт добавляет внесенный WBTC в пул пар WBTC-yCREDIT. Это сделано для того, чтобы внесенный WBTC не терял ликвидность, находясь в контракте. Поэтому сначала была рассчитана стоимость пары токенов (WBTC к yCREDIT), которая будет добавлена в пул. Это значение рассчитывается с помощью функции _addLiquidity. По сути, расчет основан на существующих резервах внутри пула. Поскольку в пуле было только 1e-8 WBTC и 331.335 токенов yCREDIT, рассчитанное значение amountA составило 44 (значение amountB1466786010075). Это означает, что злоумышленник потратил всего 44e-8 WBTC (строка 485) и получил 14667.86010075 - комиссия = 14594.52080025 токенов yCREDIT (строка 493). В то же время в пуле осталось небольшое количество WBTC (1e-8 + 44e-8) и токенов yCREDIT (331.335 + 14667.86010075).

Чтобы получить прибыль, атакующий может просто продать полученные 14594.52080025 токенов yCREDIT на биржах. Интересно, что процесс получения прибыли в данной транзакции гораздо сложнее, чем это было необходимо. Мы также наблюдали более хитрую стратегию атаки в других транзакциях.

В атаке участвовала серия транзакций, включая (но не ограничиваясь ими) следующие.

Обновление

03.01.2020: Появился новый смарт-контракт, который исправляет эту уязвимость.

Хронология

  • 01.01.2021 23:25 UTC, атаки были зафиксированы нашей системой
  • 02.01.2021 16:20 UTC, этот блог опубликован
Sign up for the latest updates
~$5.98M Потеряно: Aztec, Raydium и другие | Еженедельник BlockSec
Security Insights

~$5.98M Потеряно: Aztec, Raydium и другие | Еженедельник BlockSec

Еженедельный отчёт о безопасности блокчейна (8–15 июня 2026 г.): 4 инцидента в Ethereum и Solana, общие потери ~$5,98 млн. Aztec Connect: отсутствие валидации входных данных привело к рассинхронизации rollup и L1. Raydium: уязвимость в AMM v3 позволила дренировать 4 пула.

Анализ уязвимости Zcash Orchard | Еженедельник BlockSec
Security Insights

Анализ уязвимости Zcash Orchard | Еженедельник BlockSec

Критическая уязвимость в цепи Orchard Zcash: отсутствие ограничения равенства в гаджете ECC halo2 позволяло незаметно подделывать ZEC через двойное расходование. Уязвимость существовала 4+ лет, обнаружена ИИ-аудитом (Anthropic Opus 4.8, исследователь Тейлор Хорнби), устранена экстренным обновлением NU6.2.

Информационный бюллетень — май 2026 г.
Security Insights

Информационный бюллетень — май 2026 г.

В мае 2026 года в DeFi произошло 3 взлома: Echo Protocol ($76,7 млн, компрометация ключа), StablR ($12,8 млн, брешь в multisig) и Verus-Ethereum Bridge ($11,7 млн, ошибка проверки типов). Общий ущерб — около $101,2 млн.

Best Security Auditor for Web3

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

BlockSec Audit