Recentemente, o projeto MobiusDAO do ecossistema BNB Chain foi atacado, e o atacante aproveitou uma vulnerabilidade lógica do contrato do projeto para cunhar uma grande quantidade de tokens MBU para vender e lucrar. A equipe de segurança da Beosin analisou a vulnerabilidade e rastreou os fundos, e compartilhou os resultados da seguinte forma:
Passos detalhados do ataque
(1) O atacante primeiro implantou o contrato de ataque (0x631adFF068D484Ce531Fb519Cda4042805521641)
e utilizou esse contrato para chamar a função de depósito do contrato proxy Mobius 0x95e92B09b89cF31Fa9F1Eca4109A85F88EB08531, após o qual o contrato Mobius cunhou mais de 9.7x10^15 tokens MBU e os enviou para o contrato de ataque.
Hash da transação de ataque: 0x2a65254b41b42f39331a0bcc9f893518d6b106e80d9a476b8ca3816325f4a150
(2) O contrato de ataque chama o contrato relacionado ao PancakeSwap para vender os tokens MBU e realizar lucros após receber os tokens MBU.
Análise de vulnerabilidades
A função de depósito do contrato Mobius irá cunhar uma quantidade equivalente de tokens MBU e enviá-los ao depositante após receber o depósito. Nesta função, sempre que um usuário deposita WBNB, a função obterá o preço do BNB para calcular a quantidade de tokens MBU a serem cunhados e transferidos.
O preço do BNB vem da função getBNBPriceInUSDT, que retorna o preço com precisão de 18 casas decimais. Como mostrado na imagem acima, o preço retornado é de aproximadamente 656 dólares.
Devido ao fato de o contrato lógico da Mobius não ser open source, através da engenharia reversa, descobrimos que a vulnerabilidade ocorre quando a função retorna um resultado com 18 casas decimais, e o contrato multiplica novamente esse valor por 10^18, resultando em uma quantidade de tokens MBU que é 10^18 vezes maior do que o normal.
Rastreamento de fundos roubados
A Beosin Trace rastreou os fundos roubados e descobriu que: os fundos roubados foram convertidos pelo atacante em cerca de 2,15 milhões de tokens USDT, dos quais 1,35 milhão de USDT foi trocado por BNB e depositado no Tornado Cash, enquanto os restantes 800 mil USDT foram trocados em uma troca cruzada para ETH na cadeia Ethereum, e posteriormente depositados no Tornado Cash. A Beosin Trace adicionou os endereços relacionados ao hacker ao banco de dados de endereços negros e continuará a rastrear.
Segundo a análise da Beosin Trace, todos os fundos roubados foram depositados no Tornado Cash.
resumo
O núcleo deste ataque reside no fato de que os atacantes exploraram um erro aritmético no contrato do projeto, resultando na cunhagem de uma grande quantidade de tokens para venda e lucro. Este era um erro de código que poderia ser facilmente identificado, mas a equipe do projeto Mobius não realizou testes de código detalhados para detectar esse erro, nem uma auditoria, o que resultou em perdas superiores a 2,15 milhões de dólares. A equipe de segurança Beosin recomenda que a equipe do projeto fortaleça a auditoria e os testes de segurança do código do contrato do projeto para evitar a ocorrência de situações semelhantes.
Ver original
Esta página pode conter conteúdos de terceiros, que são fornecidos apenas para fins informativos (sem representações/garantias) e não devem ser considerados como uma aprovação dos seus pontos de vista pela Gate, nem como aconselhamento financeiro ou profissional. Consulte a Declaração de exoneração de responsabilidade para obter mais informações.
Perda de 2,15 milhões de dólares! Análise de vulnerabilidades do evento MobiusDAO e rastreamento de fundos roubados
Escrito por: Beosin
Recentemente, o projeto MobiusDAO do ecossistema BNB Chain foi atacado, e o atacante aproveitou uma vulnerabilidade lógica do contrato do projeto para cunhar uma grande quantidade de tokens MBU para vender e lucrar. A equipe de segurança da Beosin analisou a vulnerabilidade e rastreou os fundos, e compartilhou os resultados da seguinte forma:
Passos detalhados do ataque
(1) O atacante primeiro implantou o contrato de ataque (0x631adFF068D484Ce531Fb519Cda4042805521641)
e utilizou esse contrato para chamar a função de depósito do contrato proxy Mobius 0x95e92B09b89cF31Fa9F1Eca4109A85F88EB08531, após o qual o contrato Mobius cunhou mais de 9.7x10^15 tokens MBU e os enviou para o contrato de ataque.
Hash da transação de ataque: 0x2a65254b41b42f39331a0bcc9f893518d6b106e80d9a476b8ca3816325f4a150
(2) O contrato de ataque chama o contrato relacionado ao PancakeSwap para vender os tokens MBU e realizar lucros após receber os tokens MBU.
Análise de vulnerabilidades
A função de depósito do contrato Mobius irá cunhar uma quantidade equivalente de tokens MBU e enviá-los ao depositante após receber o depósito. Nesta função, sempre que um usuário deposita WBNB, a função obterá o preço do BNB para calcular a quantidade de tokens MBU a serem cunhados e transferidos.
O preço do BNB vem da função getBNBPriceInUSDT, que retorna o preço com precisão de 18 casas decimais. Como mostrado na imagem acima, o preço retornado é de aproximadamente 656 dólares.
Devido ao fato de o contrato lógico da Mobius não ser open source, através da engenharia reversa, descobrimos que a vulnerabilidade ocorre quando a função retorna um resultado com 18 casas decimais, e o contrato multiplica novamente esse valor por 10^18, resultando em uma quantidade de tokens MBU que é 10^18 vezes maior do que o normal.
Rastreamento de fundos roubados
A Beosin Trace rastreou os fundos roubados e descobriu que: os fundos roubados foram convertidos pelo atacante em cerca de 2,15 milhões de tokens USDT, dos quais 1,35 milhão de USDT foi trocado por BNB e depositado no Tornado Cash, enquanto os restantes 800 mil USDT foram trocados em uma troca cruzada para ETH na cadeia Ethereum, e posteriormente depositados no Tornado Cash. A Beosin Trace adicionou os endereços relacionados ao hacker ao banco de dados de endereços negros e continuará a rastrear.
Segundo a análise da Beosin Trace, todos os fundos roubados foram depositados no Tornado Cash.
resumo
O núcleo deste ataque reside no fato de que os atacantes exploraram um erro aritmético no contrato do projeto, resultando na cunhagem de uma grande quantidade de tokens para venda e lucro. Este era um erro de código que poderia ser facilmente identificado, mas a equipe do projeto Mobius não realizou testes de código detalhados para detectar esse erro, nem uma auditoria, o que resultou em perdas superiores a 2,15 milhões de dólares. A equipe de segurança Beosin recomenda que a equipe do projeto fortaleça a auditoria e os testes de segurança do código do contrato do projeto para evitar a ocorrência de situações semelhantes.