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 (значение amountB — 1466786010075). Это означает, что злоумышленник потратил всего 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,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