Vulnerabilidades nas versões 0.2.15, 0.2.16 e 0.3.0 do Vyper foram relatadas, colocando muitos pools no Curve em risco de ataques de reentrância. Essa vulnerabilidade permite que um invasor chame a função de adição de liquidez durante o processo de remoção de liquidez.
Um total de US$ 69,3 milhões foi afetado até agora, dos quais US$ 16,7 milhões foram recuperados por hackers de chapéu branco. Isso também significa que $ 52 milhões foram roubados deste incidente, tornando-o o maior ataque de reentrância até agora em 2023.
Resumo do Evento
Em 30 de julho de 2023, as versões 0.2.15, 0.2.16 e 0.3.0 do compilador Vyper, uma linguagem de programação orientada a contratos projetada para a Ethereum Virtual Machine (EVM), foram anunciadas como tendo vulnerabilidades de falha de bloqueio de reentrância. Vários projetos DeFi foram afetados pelo bug, com perdas totalizando US$ 52 milhões.
A CertiK identificou seis endereços envolvidos no incidente. O primeiro (0x172) não conseguiu explorar a vulnerabilidade no bloco 17806056. O explorador original retirou 0,1 ETH do Tornado Cash e começou a criar o contrato de ataque. No entanto, uma carteira líder (0x6Ec21) pagou mais taxas de gás e executou a transação primeiro, ganhando cerca de 6.100 WETH (US$ 11,4 milhões).
Vulnerabilidade de falha pré-transação pelo robô MEV Fonte: Etherscan Etherscan
A violação levou a mais perdas: o EOA 0xDCe5d adquiriu ativos no valor de aproximadamente US$ 21 milhões. Os detalhes da carteira envolvida são os seguintes:
Um total de seis projetos foram afetados, com aproximadamente $ 69,3 milhões roubados, dos quais $ 16,7 milhões foram devolvidos, para uma perda total de aproximadamente $ 52 milhões.
O que é Vyper
Vyper é uma linguagem de programação Python orientada a contratos para a Ethereum Virtual Machine (EVM). O Vyper está em beta desde 2017, mas seu primeiro lançamento não beta foi a versão 0.2.1 em julho de 2020.
O Solidity, a linguagem dominante no ecossistema Ethereum, existe há muito mais tempo do que o Vyper, então muitos membros da comunidade criaram ferramentas que rodam exclusivamente com o Solidity. De acordo com dados do DeFiLlama, do valor total bloqueado (TVL) de aproximadamente US$ 70 bilhões em protocolos DeFi, os contratos inteligentes Vyper representaram US$ 2,17 bilhões, enquanto o Solidity representou a grande maioria, chegando a US$ 67,49 bilhões.
Valor total bloqueado por fonte de idioma: DeFiLlama
Em 10 de maio de 2023, o domínio da Vyper caiu de uma alta de 30% em agosto de 2020 para 6,27%. Mesmo que o domínio TVL do Vyper tenha sido significativamente menor do que o do Solidity, o evento ainda resultou em um sucesso de $ 62 milhões.
Domínio de diferentes linguagens de programação em TVL Fonte: DeFiLlama
Versão do compilador
Uma versão do compilador refere-se a uma versão específica de um compilador de linguagem de programação que converte o código-fonte legível por humanos em código legível por máquina.
As versões do compilador são atualizadas regularmente para introduzir recursos, corrigir bugs e aumentar a segurança. Atualmente, a Vyper Language não oferece um programa de recompensas por bugs para hackers.
Versão 0.2.15 - 0.3.0
Conforme mencionado acima, foram encontradas vulnerabilidades nas versões 0.2.15, 0.2.16 e 0.3.0 do Vyper, o que resultou em vários projetos DeFi sendo ataques reentrantes.
A primeira versão do exploit Vyper 0.2.15 foi lançada em 23 de julho de 2021. Quando a versão 0.3.1 foi lançada em dezembro do mesmo ano, a vulnerabilidade anterior havia deixado de existir.
Linha do tempo
O incidente começou às 21h10, horário de Pequim, em 30 de julho. A transação do invasor para o pool JPEG no Curve falhou devido a transações pré-executadas.
Às 22h do dia 30 de julho, horário de Pequim, o JPEG confirmou que o pool da curva pETH-ETH foi usado de forma maliciosa.
Vyper posteriormente anunciou que as versões 0.2.15, 0.2.16 e 0.3.0 incluíam um bloqueio de reentrância quebrado. Metronome e Alchemix também foram afetados depois que Vyper twittou.
Anúncio do Metronome DAO:
Nas primeiras horas do segundo dia, horário de Pequim, a Curve Finance anunciou no Discord que o pool de fundos restante não foi afetado pelo Vyper Bug e está seguro.
A Curve Finance anunciou no Twitter que um pool no Arbitrum foi potencialmente comprometido, mas não houve explorações lucrativas para atores maliciosos executarem, o que significa que é improvável que o pool seja comprometido. A CertiK também não detectou nenhum outro ataque explorando a vulnerabilidade do Vyper.
Processo de ataque
Aqui está um exemplo de uma transação segmentada em JPEG:
Contrato de ataque: 0x466b85b49ec0c5c1eb402d5ea3c4b88864ea0f04#code
1 O invasor primeiro pega emprestado 80.000 WETH (cerca de US$ 149.371.300) do Balancer: Vault
2 Em seguida, o invasor troca WETH por ETH, chama pETH-ETH-f.add_liquidity() e adiciona 40.000 ETH (cerca de US$ 74.685.650) ao pool pETH-ETH-f. Em troca, o invasor recebeu 32.431 pETH (pETH-ETH-f).
3 O invasor chama remove_liquidity() para remover a liquidez adicionada na etapa 2. 3.740 pETH e 34.316 ETH foram transferidos para o contrato de ataque, e a função fallbak() do contrato de ataque foi acionada, dando o controle ao atacante. Na função fallback(), o invasor adicionou mais 40.000 ETH de liquidez ao pool pETH-ETH-f e recebeu 82.182 pETH.
4 O invasor chama remove_liquidity() novamente, retira 10.272pETH e recebe 47.506 ETH e 1.184pETH. O invasor então trocou 4.924 pETH por 4.285 ETH no pool pETH-ETH-f.
No total, o invasor obteve 34.316 ETH da etapa 3, 47.506 e 4.285 ETH da etapa 4, totalizando 86.107 ETH. Depois de pagar o empréstimo flash de 80.000 ETH, o invasor ficou com 6.107 ETH (~$ 11.395.506).
Vulnerabilidades
Essa vulnerabilidade permite que um invasor chame a função de adição de liquidez durante o processo de remoção de liquidez. Embora essas funções devam ser protegidas por @nonreentrant('lock'), testes nas funções add_liquidty() e remove_liquidity() provaram que isso não impede ataques de reentrância.
Vyper_contract para Curve.fi Factory Pool Fonte de dados: Etherscan
As versões Vyper v0.2.15, v0.2.16 e v0.3.0 têm uma vulnerabilidade de falha de proteção de reentrância após as explorações de JPEG'd, Metronome e Alchemix.
solução
Os projetos que usam versões vulneráveis do Vyper devem entrar em contato com o Vyper para obter assistência com a mitigação. Os projetos também devem tentar atualizar para a versão mais recente do Vyper que não contém essa vulnerabilidade.
Resumir
O ataque ao Vyper é a maior vulnerabilidade de reentrância detectada pela CertiK em 2023. Em termos de perdas financeiras, este ataque foi responsável por 78,6% de tais incidentes.
As duas maiores vulnerabilidades de reentrância do ano exploraram contratos escritos em Vyper, embora as vulnerabilidades não fossem idênticas.
Atualmente, as perdas devido a ataques de reentrância em todas as cadeias em 2023 ultrapassaram US$ 66 milhões. Isso é cerca de US$ 4 milhões a mais do que em todo o ano de 2020 e apenas US$ 1 milhão a menos do que o prejuízo de 2021. Notavelmente, o total de 2023 também representa um aumento de 259,45% nas perdas devido a ataques de retargeting em 2022.
Ver original
Esta página pode conter conteúdo de terceiros, que é fornecido apenas para fins informativos (não para representações/garantias) e não deve ser considerada como um endosso de suas opiniões pela Gate nem como aconselhamento financeiro ou profissional. Consulte a Isenção de responsabilidade para obter detalhes.
CertiK: Explicação detalhada da perda de $ 52 milhões da Vyper
Vulnerabilidades nas versões 0.2.15, 0.2.16 e 0.3.0 do Vyper foram relatadas, colocando muitos pools no Curve em risco de ataques de reentrância. Essa vulnerabilidade permite que um invasor chame a função de adição de liquidez durante o processo de remoção de liquidez.
Um total de US$ 69,3 milhões foi afetado até agora, dos quais US$ 16,7 milhões foram recuperados por hackers de chapéu branco. Isso também significa que $ 52 milhões foram roubados deste incidente, tornando-o o maior ataque de reentrância até agora em 2023.
Resumo do Evento
Em 30 de julho de 2023, as versões 0.2.15, 0.2.16 e 0.3.0 do compilador Vyper, uma linguagem de programação orientada a contratos projetada para a Ethereum Virtual Machine (EVM), foram anunciadas como tendo vulnerabilidades de falha de bloqueio de reentrância. Vários projetos DeFi foram afetados pelo bug, com perdas totalizando US$ 52 milhões.
A CertiK identificou seis endereços envolvidos no incidente. O primeiro (0x172) não conseguiu explorar a vulnerabilidade no bloco 17806056. O explorador original retirou 0,1 ETH do Tornado Cash e começou a criar o contrato de ataque. No entanto, uma carteira líder (0x6Ec21) pagou mais taxas de gás e executou a transação primeiro, ganhando cerca de 6.100 WETH (US$ 11,4 milhões).
Vulnerabilidade de falha pré-transação pelo robô MEV Fonte: Etherscan Etherscan
A violação levou a mais perdas: o EOA 0xDCe5d adquiriu ativos no valor de aproximadamente US$ 21 milhões. Os detalhes da carteira envolvida são os seguintes:
Um total de seis projetos foram afetados, com aproximadamente $ 69,3 milhões roubados, dos quais $ 16,7 milhões foram devolvidos, para uma perda total de aproximadamente $ 52 milhões.
O que é Vyper
Vyper é uma linguagem de programação Python orientada a contratos para a Ethereum Virtual Machine (EVM). O Vyper está em beta desde 2017, mas seu primeiro lançamento não beta foi a versão 0.2.1 em julho de 2020.
O Solidity, a linguagem dominante no ecossistema Ethereum, existe há muito mais tempo do que o Vyper, então muitos membros da comunidade criaram ferramentas que rodam exclusivamente com o Solidity. De acordo com dados do DeFiLlama, do valor total bloqueado (TVL) de aproximadamente US$ 70 bilhões em protocolos DeFi, os contratos inteligentes Vyper representaram US$ 2,17 bilhões, enquanto o Solidity representou a grande maioria, chegando a US$ 67,49 bilhões.
Em 10 de maio de 2023, o domínio da Vyper caiu de uma alta de 30% em agosto de 2020 para 6,27%. Mesmo que o domínio TVL do Vyper tenha sido significativamente menor do que o do Solidity, o evento ainda resultou em um sucesso de $ 62 milhões.
Versão do compilador
Uma versão do compilador refere-se a uma versão específica de um compilador de linguagem de programação que converte o código-fonte legível por humanos em código legível por máquina.
As versões do compilador são atualizadas regularmente para introduzir recursos, corrigir bugs e aumentar a segurança. Atualmente, a Vyper Language não oferece um programa de recompensas por bugs para hackers.
Versão 0.2.15 - 0.3.0
Conforme mencionado acima, foram encontradas vulnerabilidades nas versões 0.2.15, 0.2.16 e 0.3.0 do Vyper, o que resultou em vários projetos DeFi sendo ataques reentrantes.
A primeira versão do exploit Vyper 0.2.15 foi lançada em 23 de julho de 2021. Quando a versão 0.3.1 foi lançada em dezembro do mesmo ano, a vulnerabilidade anterior havia deixado de existir.
Linha do tempo
O incidente começou às 21h10, horário de Pequim, em 30 de julho. A transação do invasor para o pool JPEG no Curve falhou devido a transações pré-executadas.
Às 22h do dia 30 de julho, horário de Pequim, o JPEG confirmou que o pool da curva pETH-ETH foi usado de forma maliciosa.
Vyper posteriormente anunciou que as versões 0.2.15, 0.2.16 e 0.3.0 incluíam um bloqueio de reentrância quebrado. Metronome e Alchemix também foram afetados depois que Vyper twittou.
Anúncio do Metronome DAO:
Nas primeiras horas do segundo dia, horário de Pequim, a Curve Finance anunciou no Discord que o pool de fundos restante não foi afetado pelo Vyper Bug e está seguro.
A Curve Finance anunciou no Twitter que um pool no Arbitrum foi potencialmente comprometido, mas não houve explorações lucrativas para atores maliciosos executarem, o que significa que é improvável que o pool seja comprometido. A CertiK também não detectou nenhum outro ataque explorando a vulnerabilidade do Vyper.
Processo de ataque
Aqui está um exemplo de uma transação segmentada em JPEG:
Atacante: 0x6ec21d1868743a44318c3c259a6d4953f9978538
Contrato de ataque: 0x466b85b49ec0c5c1eb402d5ea3c4b88864ea0f04#code
1 O invasor primeiro pega emprestado 80.000 WETH (cerca de US$ 149.371.300) do Balancer: Vault
2 Em seguida, o invasor troca WETH por ETH, chama pETH-ETH-f.add_liquidity() e adiciona 40.000 ETH (cerca de US$ 74.685.650) ao pool pETH-ETH-f. Em troca, o invasor recebeu 32.431 pETH (pETH-ETH-f).
3 O invasor chama remove_liquidity() para remover a liquidez adicionada na etapa 2. 3.740 pETH e 34.316 ETH foram transferidos para o contrato de ataque, e a função fallbak() do contrato de ataque foi acionada, dando o controle ao atacante. Na função fallback(), o invasor adicionou mais 40.000 ETH de liquidez ao pool pETH-ETH-f e recebeu 82.182 pETH.
4 O invasor chama remove_liquidity() novamente, retira 10.272pETH e recebe 47.506 ETH e 1.184pETH. O invasor então trocou 4.924 pETH por 4.285 ETH no pool pETH-ETH-f.
No total, o invasor obteve 34.316 ETH da etapa 3, 47.506 e 4.285 ETH da etapa 4, totalizando 86.107 ETH. Depois de pagar o empréstimo flash de 80.000 ETH, o invasor ficou com 6.107 ETH (~$ 11.395.506).
Vulnerabilidades
Essa vulnerabilidade permite que um invasor chame a função de adição de liquidez durante o processo de remoção de liquidez. Embora essas funções devam ser protegidas por @nonreentrant('lock'), testes nas funções add_liquidty() e remove_liquidity() provaram que isso não impede ataques de reentrância.
Vyper_contract para Curve.fi Factory Pool Fonte de dados: Etherscan
As versões Vyper v0.2.15, v0.2.16 e v0.3.0 têm uma vulnerabilidade de falha de proteção de reentrância após as explorações de JPEG'd, Metronome e Alchemix.
solução
Os projetos que usam versões vulneráveis do Vyper devem entrar em contato com o Vyper para obter assistência com a mitigação. Os projetos também devem tentar atualizar para a versão mais recente do Vyper que não contém essa vulnerabilidade.
Resumir
O ataque ao Vyper é a maior vulnerabilidade de reentrância detectada pela CertiK em 2023. Em termos de perdas financeiras, este ataque foi responsável por 78,6% de tais incidentes.
As duas maiores vulnerabilidades de reentrância do ano exploraram contratos escritos em Vyper, embora as vulnerabilidades não fossem idênticas.
Atualmente, as perdas devido a ataques de reentrância em todas as cadeias em 2023 ultrapassaram US$ 66 milhões. Isso é cerca de US$ 4 milhões a mais do que em todo o ano de 2020 e apenas US$ 1 milhão a menos do que o prejuízo de 2021. Notavelmente, o total de 2023 também representa um aumento de 259,45% nas perdas devido a ataques de retargeting em 2022.