Back to Blog

Когда «SafeTransfer» становится небезопасным: уроки инцидента безопасности с QBridge

Code Auditing
28 января 2022 г.
2 min read

28 января QBridge подвергся атаке, в результате которой были украдены активы на сумму около 80 миллионов долларов США. После анализа мы обнаружили, что первопричиной в коде является реализация функции safeTransfer (и safeTransferFrom).

Первопричина

Во-первых, проект не использует популярную библиотеку OpenZeppelin SafeERC20 для передачи токенов. Вместо этого они внедрили библиотеку под названием SafeToken.

Во-вторых, реализация не проверяет, является ли цель валидным контрактом (или не является ли она нулевым адресом).

В-третьих, низкоуровневый вызов EVM не возвращает false, когда целевой контракт равен нулю. Это противоречит здравому смыслу разработчика.

Конечно, у инцидента есть и другие причины, например, внесение нулевого адреса в белый список. Однако, если бы код мог должным образом обрабатывать этот особый случай, он не был бы уязвимым.

Кстати: существуют и другие проекты, использующие аналогичный код. Они могут быть подвержены схожей проблеме.

Эксперимент

Чтобы подтвердить третью причину того, что виртуальная машина (VM) не возвращает false, когда целевой контракт равен нулю, мы разработали тестовый контракт, как показано ниже.

Выполнение TestSafeTransfer.test() не приведет к откату (revert).

Уроки и способы снижения риска

Мы предлагаем:

  • Использовать популярные библиотеки вместо «изобретения велосипеда», если у вас нет очень веских причин поступать иначе.
  • Проверять баланс до и после перевода активов, чтобы убедиться, что количество переведенных активов соответствует ожиданиям. Это также позволяет избежать проблем с дефляционными и инфляционными токенами.

О компании BlockSec

BlockSec — передовая компания в сфере безопасности блокчейна, основанная в 2021 году группой всемирно известных экспертов по безопасности. Компания стремится повысить уровень безопасности и удобства использования для формирующегося мира Web3, чтобы способствовать его массовому внедрению. Для этого BlockSec предоставляет услуги по аудиту безопасности смарт-контрактов и EVM-цепей, платформу Phalcon для безопасной разработки и проактивного блокирования угроз, платформу MetaSleuth для отслеживания и расследования движения средств, а также расширение MetaDock для эффективной работы разработчиков 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
Потери около 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
Когда «SafeTransfer» становится небезопасным: уроки инцидента безопасности с QBridge