VEE finance publicou um relatório sobre o recente incidente de segurança. No relatório, eles afirmam que a causa principal é "Manipular o preço do oráculo da Vee Finance e a aquisição do preço do oráculo não foram processados para decimais, resultando na falha da verificação de slippage esperada antes do swap."
"A causa principal do acidente foi que, no processo de criação de uma ordem para negociação alavancada, apenas o preço do pool da Pangolin foi usado pelo oráculo como fonte de alimentação de preço, e o preço do pool flutuou mais de 3%. O oráculo atualizou o preço, fazendo com que o atacante manipulasse o preço do pool da Pangolin. Manipular o preço do oráculo da Vee Finance e a aquisição do preço do oráculo não foram processados para decimais, resultando na falha da verificação de slippage esperada antes do swap." — citado do relatório publicado pela VEE finance.
No entanto, após nossa cuidadosa investigação, descobrimos que este pode NÃO ser o caso. O motivo real é que o atacante cria um ctokenB FALSO e o passa para o contrato. Como o ctokenB é controlado pelo atacante, ele pode retornar um token subjacente arbitrário que é usado para calcular o preço do token. Esta é a verdadeira causa raiz do ataque.
O Processo Completo
Existe uma função externa chamada createOrderERC20ToERC20 que pode ser invocada por qualquer usuário para criar um swap de tokens, usando o ctoken obtido ao depositar a garantia no contrato. O ctoken possui um token subjacente que representa o token real.

Em um caso normal, ao invocar o createOrderERC20ToERC20 para negociar um par de tokens usando alavancagem, o dapp precisa garantir que a negociação não cause nenhuma perda (caso contrário, o dapp perderá dinheiro). Isso é garantido pela invocação da função getAmountOutMin.

Suponha que depositamos 0,95 ETH no dapp e obtemos um ctoken que vale 0,5 ETH (Supercolateralização). Então podemos usar a alavancagem de 3x para pedir ao dapp que negocie 1,5 ETH por outro token (digamos tokenX), em nome do usuário. Neste caso, para evitar a perda, o dapp precisa garantir que o valor do tokenX negociado não fique abaixo de 0,95* 1,5ETH (caso contrário, o dapp corre o risco de perder dinheiro). O dapp utiliza um oráculo de preço externo para calcular o valor do ETH e do tokenX.
No entanto, a função createOrderERC20ToERC20 não valida o ctokenB passado. Assim, o atacante poderia implementar seu próprio contrato como ctokenB e alimentá-lo à função createOrderERC20ToERC20. Como resultado, este ctokenB falso pode retornar o token subjacente como LINK (0x5947bb275c521040051d82396192181b413227a3) quando invocado em createOrderERC20ToERC20 e getAmountOutMin, mas retornar o token subjacente como BTC quando invocado em IPriceOracle(oracle).getUnderlyingPrice(createParams.ctokenB). Assim, ele pode contornar a verificação isRightPrice — já que o token usado para calcular o preço é BTC (em vez de LINK). Isso pode ser confirmado pelo valor retornado do preçoB — 0x15e1549d1216fe9fc032e7c00000 (443783124870000000000000000000000). Este é o preço do BTC.
Conclusão
Em resumo, o atacante explora a verificação ausente do ctokenB. Como o ctokenB não é confiável, o token subjacente retornado pelo ctokenB também não pode ser confiável. No entanto, o oráculo de preço NÃO foi comprometido neste ataque.
Lição Aprendida
Tornar um projeto DeFi seguro não é uma tarefa fácil. Além da auditoria de código, acreditamos que a comunidade deve adotar um método proativo para monitorar o status do projeto e bloquear o ataque antes mesmo que ele ocorra.
Sobre a BlockSec
A BlockSec é uma empresa pioneira em segurança blockchain estabelecida em 2021 por um grupo de especialistas em segurança mundialmente renomados. A empresa está comprometida em aprimorar a segurança e a usabilidade para o emergente mundo Web3, a fim de facilitar sua adoção em massa. Para isso, a BlockSec fornece serviços de auditoria de segurança de contratos inteligentes e chains EVM, a plataforma Phalcon para desenvolvimento de segurança e bloqueio proativo de ameaças, a plataforma MetaSleuth para rastreamento e investigação de fundos, e a extensão MetaSuites para construtores web3 que navegam com eficiência no mundo cripto.
Até o momento, a empresa atendeu mais de 300 clientes ilustres, como MetaMask, Uniswap Foundation, Compound, Forta e PancakeSwap, e recebeu dezenas de milhões de dólares em duas rodadas de financiamento de investidores proeminentes, incluindo Matrix Partners, Vitalbridge Capital e Fenbushi Capital.
Site oficial: https://blocksec.com/
Conta oficial no Twitter: https://twitter.com/BlockSecTeam



