Em novembro de 2020, uma vulnerabilidade crítica no Cofre de Taxas do Protocolo LRC da Loopring permitiu que atacantes explorassem falhas de controle de acesso e manipulassem preços de tokens por meio de ataques de flash loan. Este incidente destaca a importância de um controle de acesso robusto e do monitoramento contínuo de segurança em DeFi para prevenir explorações custosas.
Introdução ao Incidente do Protocolo Loopring (LRC)
No final de 2020, várias plataformas DeFi baseadas em Ethereum, incluindo Pickle Finance e 88mph, sofreram incidentes de segurança. Para detectar tais vulnerabilidades, a BlockSec desenvolveu o sistema ThunderForecast, que identificou transações suspeitas envolvendo diferenças de taxas de negociação incomumente grandes e ganhos consistentes de Ether pela mesma conta de propriedade externa (EOA).
Usando nosso sistema EthScope, analisamos essas transações e descobrimos uma exploração direcionada a uma vulnerabilidade no protocolo de cofre da Loopring, especificamente o Cofre de Taxas do Protocolo LRC (LRCPFV). Esta publicação detalha o ataque, seu impacto e as lições aprendidas para a comunidade de segurança DeFi.
Visão Geral do Cofre de Taxas do Protocolo LRC
A Loopring é um protocolo de exchange descentralizada (DEX) de código aberto na Ethereum. Seu token nativo, LRC (ERC-20), é utilizado dentro do ecossistema. O protocolo de cofre da Loopring, conhecido como Cofre de Taxas do Protocolo LRC (LRCPFV), armazena taxas de protocolo e permite a troca de taxas por tokens LRC.
A função vulnerável no LRCPFV é sellTokenForLRC, que permite a troca de tokens por LRC sem controle de acesso adequado, permitindo que qualquer pessoa a invoque.
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);
}
Como essa função não possui controle de acesso, os atacantes podiam invocá-la repetidamente para manipular preços de tokens e lucrar com oportunidades de arbitragem.
Detalhes do Ataque
Analisamos uma transação de ataque representativa: 0x00b2c.... O ataque envolveu seis etapas principais:

- Flash Loan: Emprestou 3.773,88 ETH de um provedor de flash loan (
0xEB7e...). - Troca Inicial: Converteu 3.773,88 ETH em 5.014,68 LRC na Uniswap V1-LRC a uma taxa de 1 ETH = 1,32878 LRC.
- Troca no Cofre de Taxas: Trocou 0,231 ETH de taxa armazenados no LRCPFV por 0,000219 LRC ao invocar a função vulnerável
sellTokenForLRC. Essa chamada não autorizada manipulou o preço do LRC na Uniswap, aumentando drasticamente seu valor em relação ao ETH (1 ETH = 0,00094 LRC). - Troca Lucrativa: Trocou 5.014,68 LRC de volta para 3.774,09 ETH na Uniswap V1-LRC, obtendo 0,215 ETH extras devido ao preço manipulado.
- Pagamento do Empréstimo: Devolveu o flash loan de 3.773,88 ETH.
- Transferência do Lucro: Enviou o lucro de 0,215 ETH para a EOA do atacante.
Esta exploração aproveitou um ataque de flash loan combinado com manipulação de preços e ausência de controle de acesso no contrato do cofre.
Impacto e Escala do Ataque
A transação analisada ocorreu em 13 de outubro de 2020. Usando dados do CoinGecko, o preço do LRC era de aproximadamente 0,0005175 ETH naquele momento.
Nossa investigação revelou:
- Contratos Maliciosos: 3 implantados pelo atacante (
0xa896...,0x414a...,0xd91d...). - Volume do Ataque: 90 transações lançadas pela EOA do atacante (
0x81e8...) desde o bloco 9.644.449, onde o LRCPFV foi implantado. - Lucro Máximo: Uma transação (
0x33eab...) rendeu 9,89 ETH de lucro. - Lucro Total: Aproximadamente 80,97 ETH (~48.849 USD em 1º de outubro de 2020).
A causa raiz foi a ausência de controle de acesso na função sellTokenForLRC, permitindo exploração repetida.
Lições Aprendidas e Conclusão
À medida que o ecossistema DeFi da Ethereum cresce, desafios de segurança como vulnerabilidades de controle de acesso tornam-se cada vez mais críticos. Embora ataques de grande repercussão frequentemente chamem atenção, vulnerabilidades menos visíveis podem causar perdas financeiras significativas, como demonstrado por este incidente.
A Loopring perdeu aproximadamente 80,97 ETH devido a esta exploração, enfatizando a necessidade de auditorias rigorosas de contratos inteligentes e monitoramento contínuo de segurança.
Para protocolos DeFi, implementar controle de acesso estrito, utilizar ferramentas como a Auditoria de Contratos Inteligentes e o Phalcon Security da BlockSec, e o gerenciamento proativo de riscos são essenciais para proteger ativos digitais.
Cronologia do Incidente
- 30/11/2020: Transações suspeitas detectadas pelo ThunderForecast.
- 01/12/2020: Análise detalhada concluída usando o EthScope.
- 02/12/2020: Vulnerabilidade reportada à equipe da Loopring.
- 03/12/2020: Vulnerabilidade confirmada; correção implementada.
- 03/12/2020: Divulgação pública dos detalhes do incidente.
- 03/01/2021: CVE-2020-35962 atribuído à vulnerabilidade.



