SharkTeam: Análise do ataque KyberSwap

星球日报

Em 23 de novembro de 2023, o KyberSwap foi hackeado em várias redes, como Ethereum e Arbitrum, devido à manipulação de ticks e contagem dupla de liquidez, e os atacantes tiveram um lucro de cerca de US$ 48 milhões.

SharkTeam:KyberSwap攻击事件原理分析

A SharkTeam conduziu uma análise técnica deste incidente pela primeira vez e resumiu as precauções de segurança, esperando que os projetos de acompanhamento possam tomar isso como um aviso e construir conjuntamente uma linha de defesa de segurança para a indústria de blockchain.

I. Análise de Transações de Ataque

Este ataque é mais complexo e a implementação do ataque é mais engenhosa, por isso selecionamos uma das transações de ataque para análise e explicação detalhadas.

Negociação de Ataque:

0x09a3a12d58b0bb80e33e3fb8e282728551dc430c65d1e520fe0009ec519d75e8

Endereço do atacante:

0x50275E0B7261559cE1644014d4b78D4AA63BE836

Contrato do atacante:

0xaF2Acf3D4ab78e4c702256D214a3189A874CDC13

Nesta transação, o atacante realizou uma série de operações contra 3 pools de liquidez diferentes para drenar os pools. Escolhemos um pool para análise de fluxo de ataque, que existia independentemente uns dos outros.

Processo de ataque:

  1. O atacante primeiro pegou emprestado 10.000 wstETH através de um empréstimo flash, depois adicionou cerca de 2.998 wstETH ao pool e trocou cerca de 2.842 WETH.

SharkTeam:KyberSwap攻击事件原理分析

  1. Neste momento, o status de tick correspondente no pool é -110, 910, e o preço de wstETH muda de 1,05 ETH para 0,000015257. Neste momento, a liquidez do pool é 0, o que abre caminho para a criação de falsa liquidez;

SharkTeam:KyberSwap攻击事件原理分析

  1. O atacante adiciona liquidez 3.4 wstETH e remove 0.56 wstETH no intervalo de [0.000014659 , 0.000015260].

SharkTeam:KyberSwap攻击事件原理分析 SharkTeam:KyberSwap攻击事件原理分析 SharkTeam:KyberSwap攻击事件原理分析

  1. Em seguida, o atacante faz duas trocas, que são WETH->wstETH, wstETH-> WETH. Após o primeiro swap, o preço foi empurrado para baixo para 0,000014657, que é ligeiramente inferior a 0,000014659. Após o segundo swap, aumente o preço para 0,000016368;

SharkTeam:KyberSwap攻击事件原理分析 SharkTeam:KyberSwap攻击事件原理分析

  1. No início, havia cerca de 3 wstETH liquidez no pool (mint 3.4 wstETH - burn 0.56 wstETH), e agora há cerca de (1, 056 + 3, 911) no pool, o que é obviamente mais;

  2. Após o ataque retorna o empréstimo flash, e os fundos são transferidos do contrato de ataque

SharkTeam:KyberSwap攻击事件原理分析

2. Análise da causa da vulnerabilidade

A causa raiz deste ataque: Na função computeSwapStep, há uma perda de precisão ao calcular ticks. Como o tick pode ser manipulado, ele ignora com sucesso a função _updateLiquidityAndCrossTick, permitindo que a liquidez seja aumentada repetidamente.

  1. Na primeira troca, o invasor usa a função calcReachAmount para calcular a quantidade de wstETH e, finalmente, calcula 1, 056.056735638220800000;

SharkTeam:KyberSwap攻击事件原理分析 SharkTeam:KyberSwap攻击事件原理分析

  1. Depois de chamar as funções estimateIncrementalLiquidity e calcFinalPrice, o número passado é 1, 056.056735638220799999. Depois de arredondar para cima e arredondar para baixo, o tick é -111311 e o tick inferior é -111310. Portanto, usando nextTick = currentTick+ 1 e usando “!=” para julgar os dois parâmetros sqrtP, a função _updateLiquidityAndCrossTick é ignorada com êxito e a atualização da liquidez é evitada.

SharkTeam:KyberSwap攻击事件原理分析 SharkTeam:KyberSwap攻击事件原理分析 SharkTeam:KyberSwap攻击事件原理分析

  1. No segundo swap, _updateLiquidityAndCrossTick foi chamado, o que aumentou a liquidez. Devido à perda de precisão no cálculo da quantidade durante o primeiro swap, a liquidez não é atualizada e removida, resultando em uma situação dupla quando a liquidez é calculada na segunda vez.

SharkTeam:KyberSwap攻击事件原理分析

III. Recomendações de Segurança

Em resposta a este ataque, os desenvolvedores devem tomar as seguintes medidas de segurança no seu desenvolvimento diário:

  1. Preste atenção ao cálculo correto de invariantes e lógica matemática no negócio para evitar perda de precisão.

  2. Antes de o projeto ser lançado, é necessário cooperar com uma equipe de auditoria profissional terceirizada para realizar uma auditoria de contrato.

Sobre Nós

A visão da SharkTeam é proteger o mundo Web3. A equipe é composta por profissionais de segurança experientes e pesquisadores seniores de todo o mundo, que são bem versados na teoria subjacente de blockchain e contratos inteligentes. Fornece serviços, incluindo análise de big data on-chain, aviso de risco on-chain, auditoria de contratos inteligentes, recuperação de criptoativos, etc., e criou a ChainAegis, uma plataforma on-chain de análise de big data e alerta precoce de risco, que suporta níveis ilimitados de análise gráfica aprofundada e pode combater eficazmente o risco de Ameaça Persistente Avançada (APT) no mundo Web3. Estabeleceu relações de cooperação de longo prazo com jogadores-chave em vários campos do ecossistema Web3, como Polkadot, Moonbeam, polygon, Sui, OKX, imToken, ChainIDE, etc.

Site Oficial:

Twitter:

Discórdia:

Telegrama:

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