Em 3 de janeiro, o projeto Radiant Capital sofreu um grave ataque rápido de empréstimo, resultando na perda de 1.900 ETH (aproximadamente US$ 4,5 milhões). Radiant Capital é um protocolo descentralizado de empréstimo cross-chain que permite aos usuários depositar e emprestar vários ativos em diferentes blockchains, eliminando silos de liquidez.

De acordo com dados da rede, o hacker aproveitou uma janela de tempo para ativação de um novo mercado e um problema de arredondamento na base de código Compound/Aave para executar um ataque de empréstimo instantâneo. Este método de ataque refere-se ao empréstimo de uma grande quantidade de fundos, à conclusão de uma série de operações dentro de um bloco e, em seguida, à devolução dos fundos antes do final do bloco para obter lucro.

Ataque de vulnerabilidade brevemente

De acordo com relatórios do PeckShield e PeckShield, os invasores exploraram uma vulnerabilidade computacional no Radiant Capital, permitindo-lhes sacar grandes quantidades de USDC a preços baixos, controlando a precisão e o arredondamento. USDC é uma moeda estável cujo valor está atrelado ao dólar americano e é um dos ativos comumente utilizados em protocolos financeiros descentralizados.

O processo de ataque do invasor é o seguinte:

1. O invasor primeiro emprestou 3 milhões de USDC por meio de empréstimo instantâneo AAVE para usar como fundos iniciais para o ataque. Os empréstimos rápidos referem-se ao empréstimo de uma grande quantidade de fundos, à conclusão de uma série de operações dentro de um bloco e, em seguida, à devolução dos fundos antes do final do bloco para obter lucro.

2. O invasor prometeu 2 milhões de USDC para o contrato Radiant e obteve 2 milhões de tokens de certificado rUSDCn.

3. O invasor realiza um empréstimo instantâneo por meio do contrato Radiant, empresta 2 milhões de USDC, devolve os 2 milhões de USDC na função de retorno de chamada e extrai o USDC prometido na segunda etapa. Finalmente, a função de empréstimo instantâneo chamará a função transferfrom com. transferir o USDC do invasor para o contrato. Neste momento, será cobrada uma taxa de gestão de 9/10000, e a taxa de gestão cobrada torna-se a liquidez do pool.

4. Ao repetir a etapa 3 muitas vezes, o invasor controla o liquidityIndex para ser muito grande, liquidityIndex=27180000000099999999999998631966035920. LiquidityIndex é uma variável utilizada no contrato Radiant para registrar o crescimento da liquidez. Ele aumentará com o acúmulo de tempo e juros.

5. Em seguida, o invasor cria um novo contrato e coloca 543.600 USDC nele, porque 5.436 (valor de USDC) é exatamente o dobro de 2.718 (valor de liquidityIndex) na etapa 4, que pode ser facilmente controlado por arredondamento.

6. O invasor hipotecou todos os 543.600 USDC no contrato Radiant e obteve a mesma quantia de rUSDCn.

7. O invasor extraiu 407.700 USDC, o que deveria ter destruído 407.700 rUSDCn, mas como mencionado acima, a função de queima realizou cálculos precisos de expansão e arredondamento. 40770000000000000000000000000000000/27180000000099999999999998631966035920=1,49999999, e o resultado do arredondamento é 1, fazendo com que o resultado seja 1/3 menor. Conforme mostrado na imagem abaixo, 407.700 USDC deveriam ter sido destruídos, mas restaram 271.800, indicando que apenas 271.800 foram destruídos, e o invasor retirou 407.700 USDC.

8. O invasor explora a vulnerabilidade na etapa 7 para repetir a operação de retirada da promessa, e a retirada é sempre 1/3 a mais do que o valor prometido e, finalmente, troca todos os USDC do pool.

Os fundos não estão atualmente em risco

A Radiant Capital reconheceu o problema em sua postagem oficial e disse que suspendeu seu mercado de empréstimos no Arbitrum e estava investigando a causa e o impacto do incidente. Arbitrum é uma solução de escalonamento de segunda camada que aumenta a velocidade das transações e reduz custos no Ethereum. A Radiant Capital também afirmou que nenhum fundo de usuário está atualmente em risco e planeja emitir um relatório de detecção e retomar as operações depois que o problema for resolvido.

Conclusão:

Este incidente lembra-nos mais uma vez que a segurança dos protocolos financeiros descentralizados é crítica e precisa de ser continuamente auditada e testada para evitar potenciais vulnerabilidades e ataques. Os usuários também devem estar cientes dos riscos e participar apenas de empréstimos e investimentos em plataformas confiáveis. Embora a Radiant Capital tenha sofrido pesadas perdas, também demonstrou uma atitude positiva e sentido de responsabilidade, esperando poder recuperar e melhorar a segurança e estabilidade do seu protocolo o mais rapidamente possível. Ao mesmo tempo, espero também que outros protocolos financeiros descentralizados possam aprender com este incidente, reforçar as suas próprias precauções de segurança e proporcionar aos utilizadores melhores serviços e experiências. #RadiantCapital #黑客攻击