Mais de 1.900 ETH foram roubados e como a Radiant Capital foi hackeada para roubar US$ 4,5 milhões

ForesightNews

Em 3 de janeiro de 2024, o projeto Radiant Capital sofreu um ataque rápido de empréstimo por um invasor. O invasor roubou mais de 1.900 ETH por meio de 3 transações, no valor de mais de 4,5 milhões de dólares americanos. Os fundos roubados ainda estão armazenados no endereço do invasor. .

Escrito por: Beosin

Em 3 de janeiro de 2024, de acordo com o monitoramento da plataforma de monitoramento de risco de segurança, alerta antecipado e bloqueio EagleEye da Beosin, o projeto **Radiant Capital sofreu um ataque rápido de empréstimo de um invasor. O invasor roubou mais de 1.900 ETH por meio de 3 transações, no valor de mais de 4,5 milhões de dólares americanos. Os fundos roubados ainda estão armazenados no endereço do invasor. **A equipe de segurança da Beosin analisou este incidente imediatamente.

Análise de vulnerabilidade

A causa raiz deste incidente é que o projeto Radiant Capital usou expansão e arredondamento de precisão no processo de cálculo do número de tokens. Isso permitiu ao invasor expandir os lucros controlando a precisão e combinando-a com o arredondamento. Clique para atacar. **

Observando o código acima, a função rayDiv passa dois dados uint256 a e b. Todo o processo pode ser abreviado como (a*RAY+b/2)/b, onde RAY são os dados estendidos de precisão, que são 10^27 , então o resultado é bastante Em a*RAY/b+0.5, a função de arredondamento é implementada, e o erro deste método de cálculo vem principalmente de b. Se b for extremamente pequeno em relação a a, então o erro será insignificante, mas se b tiver a mesma ordem de grandeza que a, então o erro pode atingir o próprio a.

Por exemplo: se a*RAY=10000, b=3, então o resultado calculado é 3333, que é 1/10000 menor que o valor real; e se a*RAY=10000, b=3000, o resultado calculado é 3, 1/10 menor que o valor real.

Neste incidente, o invasor manipulou o valor de b para que o valor de b e o valor de a tenham a mesma ordem de grandeza, tornando o cálculo equivalente a 3/2,0001=1, e o valor calculado seja 1/3 menor que o valor real.

Processo de ataque

Vamos dar uma olhada no processo de ataque do hacker:

  1. O invasor primeiro emprestou 3 milhões de USDC por meio do empréstimo instantâneo AAVE, que foi usado para financiar o ataque.

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

  1. 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 juros.Transfira o USDC do invasor para o contrato. **Neste momento, será cobrada uma taxa de movimentação de 9/10000, e a taxa de movimentação cobrada passa a ser a liquidez do pool. **

  1. Ao repetir a etapa 3 muitas vezes, o invasor controla que o liquidityIndex é muito grande, liquidityIndex=27180000000099999999999998631966035920.

  1. 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. **

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

  1. 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.

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

Acompanhamento de fundos

Até o momento desta publicação, os 1.902 ETH roubados foram armazenados no endereço do hacker e não foram movidos.Beosin Trace continuará monitorando os fundos. **

No início de 2024, já testemunhamos dois casos de roubos em grande escala. (Revisão dos incidentes de segurança de ontem: O que aconteceu com o primeiro caso do ano, o incidente da Orbit Chain roubado de US$ 80 milhões?) Esta série de eventos mais uma vez nos lembra que no ecossistema Web3, as precauções de segurança ainda são muito importantes! **

Isenção de responsabilidade: As informações contidas nesta página podem ser provenientes de terceiros e não representam os pontos de vista ou opiniões da Gate. O conteúdo apresentado nesta página é apenas para referência e não constitui qualquer aconselhamento financeiro, de investimento ou jurídico. A Gate não garante a exatidão ou o carácter exaustivo das informações e não poderá ser responsabilizada por quaisquer perdas resultantes da utilização destas informações. Os investimentos em ativos virtuais implicam riscos elevados e estão sujeitos a uma volatilidade de preços significativa. Pode perder todo o seu capital investido. Compreenda plenamente os riscos relevantes e tome decisões prudentes com base na sua própria situação financeira e tolerância ao risco. Para mais informações, consulte a Isenção de responsabilidade.
Comentar
0/400
Nenhum comentário