Back to Blog

Инцидент с протоколом Loopring (LRC)

Code AuditingPhalcon SecurityMetaSleuth
December 3, 2020
4 min read
Key Insights

Hash(ti)(mod2248)=[b0,b1,,b247]T,где bi{0,1}\text{Hash}(t_i) \pmod{2^{248}} = [b_0, b_1, \dots, b_{247}]^T, где\ b_i \in \{0, 1\}

В ноябре 2020 года критическая уязвимость в хранилище комиссий протокола Loopring (LRC Protocol Fee Vault) позволила злоумышленникам воспользоваться недостатками контроля доступа и манипулировать ценами токенов с помощью атак с использованием мгновенных займов (flash loans). Этот инцидент подчеркивает важность надежного контроля доступа и непрерывного мониторинга безопасности DeFi для предотвращения дорогостоящих взломов.

Введение в инцидент с протоколом Loopring (LRC)

В конце 2020 года несколько DeFi-платформ на базе Ethereum, включая Pickle Finance и 88mph, столкнулись с инцидентами безопасности. Для обнаружения подобных уязвимостей компания BlockSec разработала систему ThunderForecast, которая выявила подозрительные транзакции с необычно большими расхождениями в курсах обмена и систематическим получением прибыли в Ether одним и тем же внешним адресом (EOA).

Используя нашу систему EthScope, мы проанализировали эти транзакции и обнаружили эксплойт, нацеленный на уязвимость в протоколе хранилища Loopring, а именно в LRC Protocol Fee Vault (LRCPFV). В этом блоге подробно описывается атака, ее последствия и уроки, извлеченные для сообщества безопасности DeFi.


Обзор LRC Protocol Fee Vault

Loopring — это протокол децентрализованной биржи (DEX) с открытым исходным кодом на базе Ethereum. Его нативный токен, LRC (ERC-20), используется внутри экосистемы. Протокол хранилища Loopring, известный как LRC Protocol Fee Vault (LRCPFV), хранит комиссии протокола и позволяет обменивать их на токены LRC.

Уязвимая функция в LRCPFV — sellTokenForLRC, которая позволяет обменивать токены на LRC без надлежащего контроля доступа, позволяя любому пользователю вызвать её.

function sellTokenForLRC(
    address token,
    uint amount
)
    external
    nonReentrant
{
    require(amount > 0, "ZERO_AMOUNT");
    require(token != lrcAddress, "PROHIBITED");

    address recipient = tokenSellerAddress == address(0) ? owner : tokenSellerAddress;

    if (token == address(0)) {
        recipient.sendETHAndVerify(amount, gasleft());
    } else {
        token.safeTransferAndVerify(recipient, amount);
    }

    require(
        tokenSellerAddress == address(0) ||
        ITokenSeller(tokenSellerAddress).sellToken(token, lrcAddress),
        "SELL_FAILURE"
    );

    emit TokenSold(token, amount);
}

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


Детали атаки

Мы проанализировали показательную транзакцию атаки: 0x00b2c.... Атака состояла из шести ключевых этапов:

  1. Мгновенный заем (Flash Loan): Заимствовано 3 773,88 ETH у провайдера мгновенных займов (0xEB7e...).
  2. Первоначальный обмен: Конвертировано 3 773,88 ETH в 5 014,68 LRC на Uniswap V1-LRC по курсу 1 ETH = 1,32878 LRC.
  3. Обмен в хранилище комиссий: Обменено 0,231 ETH комиссии, хранящейся в LRCPFV, на 0,000219 LRC путем вызова уязвимой функции sellTokenForLRC. Этот неавторизованный вызов манипулировал ценой LRC на Uniswap, резко увеличив ее стоимость по отношению к ETH (1 ETH = 0,00094 LRC).
  4. Прибыльный обмен: Обменено 5 014,68 LRC обратно на 3 774,09 ETH на Uniswap V1-LRC, получив дополнительно 0,215 ETH благодаря манипуляции ценой.
  5. Возврат займа: Возвращен мгновенный заем в размере 3 773,88 ETH.
  6. Перевод прибыли: 0,215 ETH прибыли переведено на EOA злоумышленника.

Этот эксплойт использовал атаку с мгновенным займом в сочетании с манипуляцией ценой и отсутствием контроля доступа в контракте хранилища.


Воздействие и масштаб атаки

Проанализированная транзакция произошла 13 октября 2020 года. Согласно данным CoinGecko, цена LRC в то время составляла приблизительно 0,0005175 ETH.

Наше расследование показало:

  • Вредоносные контракты: 3, развернутые злоумышленником (0xa896..., 0x414a..., 0xd91d...).
  • Объем атак: 90 транзакций, инициированных EOA злоумышленника (0x81e8...) начиная с блока 9 644 449, в котором был развернут LRCPFV.
  • Максимальная прибыль: Одна транзакция (0x33eab...) принесла 9,89 ETH прибыли.
  • Общая прибыль: Приблизительно 80,97 ETH (~48 849 долларов США по состоянию на 1 октября 2020 года).

Первопричиной стало отсутствие контроля доступа в функции sellTokenForLRC, что позволило многократно эксплуатировать уязвимость.


Начните работу с Phalcon Security

Обнаруживайте все угрозы, оповещайте о важном и блокируйте атаки.

Попробовать бесплатно

Уроки и заключение

По мере роста экосистемы Ethereum DeFi проблемы безопасности, такие как уязвимости контроля доступа, становятся все более критичными. Хотя громкие атаки часто привлекают внимание, менее заметные уязвимости могут привести к значительным финансовым потерям, как показал этот инцидент.

Loopring потеряла около 80,97 ETH из-за этого эксплойта, что подчеркивает необходимость строгого аудита смарт-контрактов и непрерывного мониторинга безопасности.

Для DeFi-протоколов внедрение строгого контроля доступа, использование инструментов, таких как аудит смарт-контрактов и Phalcon Security от BlockSec, а также проактивное управление рисками имеют важное значение для защиты цифровых активов.


Изучите расследования с MetaSleuth

Отслеживайте потоки средств и собирайте доказательства для расследований

Попробовать бесплатно

Хронология инцидента

  • 30.11.2020: Подозрительные транзакции обнаружены системой ThunderForecast.
  • 01.12.2020: Завершен детальный анализ с использованием EthScope.
  • 02.12.2020: Об уязвимости сообщено команде Loopring.
  • 03.12.2020: Уязвимость подтверждена; реализовано исправление.
  • 03.12.2020: Публичное раскрытие деталей инцидента.
  • 03.01.2021: Уязвимости присвоен идентификатор CVE-2020-35962.

Ссылки и дополнительные материалы

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 пула.

Санкции OFAC против картеля Синалоа: отслеживание средств в блокчейне

Санкции OFAC против картеля Синалоа: отслеживание средств в блокчейне

OFAC ввёл санкции против сети картеля Синалоа за отмывание доходов от фентанила. Мы отследили шесть адресов в MetaSleuth: средства проходят почти исключительно через депозитные адреса централизованных бирж.

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

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

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

Best Security Auditor for Web3

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

BlockSec Audit

Get Real-Time Protection with Phalcon Security

Audits alone are not enough. Phalcon Security detects attacks in real time and blocks threats mid-flight.

phalcon security

Go Deeper with MetaSleuth Investigation

Extend your crypto compliance capabilities with Blocksec's MetaSleuth Investigation, the first platform for tracing funds, mapping transaction networks and revealing hidden on-chain relationships.

Move from detection to resolution faster with clear visual insights and evidence-ready workflows across the digital assets ecosystem.

MetaSleuth Investigation