Back to Blog

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

Code Auditing
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
За пределами смарт-контракта: операционная безопасность доменов и 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
Вкладывайте меньше, получайте больше: подробности атаки на yCREDIT