Um programador desembolsou $ 8 milhões (R$ 43.2) explorando um bug de reentrada em um contrato inteligente da stablecoin oUSD.
O oUSD é um token novo do tipo stablecoin que tem seu preço atrelado a outro token no formado de 1:1. Esse token é lastreado em USDT, USDC e DAI.
De acordo com informações da página do token, a USDT e outras stablecoins são enviadas a protocolos DeFi para o rendimento de juros enquanto o token oUSD fica livre para ser movimentado.
Em outras palavras, você trava seus tokens USDT na plataforma DeFi e ao mesmo tempo mantem o token oUSD. Dessa forma você ganha juros na plataforma DeFi (pelo empréstimo) e consegue utilizar o oUSD para outros fins, como realização de trades ou outros contratos inteligentes. Lembrando, o oUSD e o USDT ficam lastreados em 1:1 por contratos inteligentes.
Muito legal, né?, exceto que tinha um bug de reentrada. Esse tipo de bug fica no código fonte do projeto, o contrato inteligente “pensa” que você tem o direito de cunhar tokens, quando na verdade você não tem. Então, basicamente você consegue imprimir dinheiro, ou, na blockchain, você consegue gerar tokens.
Programador explorou bug de reentrada e criou tokens
Antes de começar o processo de criar tokens e não ser pego, o programador teve que se preocupar em parar a coleta de tokens compostos dados para fornecer liquidez a pool. Ele elevou a taxa de transação da rede para $ 250, um pequeno preço a se pagar pelos $ 8 milhões que ele recebeu graças por suas linhas de código.
Os $ 8 milhões que ele obteve foram enviados para mixers de criptomoedas, isso torna praticamente impossível que a equipe do projeto consiga recuperar o dinheiro, então eles imploraram que o hacker devolva os fundos.
Algo que ele pode muito bem fazer, devolver talvez $ 2 milhões, e financiar algum tipo de escola de programação onde ele possa ensinar às crianças algumas técnicas de segurança em seu iate.
A equipe do token explicou o bug de forma extensa:
“O ataque foi feito com um bug de reentrada em nosso contrato inteligente que infelizmente estava protegido, a menos que uma de nossas stablecoins estivesse nos atacando.
O invasor explorou uma verificação de validação ausente no mint multiple (ao criar vários oUSD) para passar uma “stablecoin” falsa sob seu controle. Essa “stablecoin” foi então chamado de “transferFrom” pelo cofre, permitindo ao hacker explorar o contrato com um ataque de reentrada.
O invasor foi capaz de criar um evento de rebase depois que os fundos foram transferidos para oUSD antes que o fornecimento aumentasse. Isso criou um rebase massivo para todos no contrato, incluindo o invasor. O invasor então recebeu mais oUSD do que os ativos do contrato.
O invasor sacou a maioria das stablecoins.
Ele foi então capaz de sacar o oUSD e vendê-lo na plataforma Uniswap e Sushiswap por USDT”