Os protocolos de Finanças Descentralizadas (DeFi) estão enfrentando um desafio matemático significativo relacionado ao manejo impreciso de frações em seus contratos inteligentes. Esta vulnerabilidade tem sido explorada em vários ataques recentes.
The stablecoin protocol @raft_fi was under a flash loan attack. It resulted in ~6.7m stablecoin $R being minted and the protocol lost $3.6M 🚨
The root cause is the precision calculation issue when minting share tokens, which is used by the hacker to get extra share tokens.
1/N pic.twitter.com/ON5cEOPOq5— MetaTrust Labs (@MetaTrustLabs) November 11, 2023
Por exemplo, hackers roubaram US$ 3,6 milhões do protocolo de stablecoin Raft Finance na semana passada, utilizando um empréstimo relâmpago para explorar uma vulnerabilidade de perda de precisão no contrato inteligente da Raft.
Esta classe de vulnerabilidade ocorre devido a erros de arredondamento que acontecem quando os números são aproximados, permitindo que os hackers obtenham tokens adicionais.
A complexidade das aproximações e seus riscos
As aproximações ou arredondamentos, que utilizam um número próximo, mas não exatamente igual ao valor real do número original, podem levar a erros de arredondamento e perda de precisão, especialmente em protocolos DeFi complexos que realizam muitos cálculos matemáticos.
‘DeFi tem um desafio matemático, especificamente em relação ao arredondamento de inteiros’, disse Taylor Webb, desenvolvedor de contratos inteligentes e pesquisador de segurança.
Essas aproximações não são um problema quando são poucas, mas quando se acumulam, o erro de arredondamento pode atingir um nível suficientemente grande para ser explorado por hackers.
Necessidade de mudança cultural e melhores práticas
O hack da Raft Finance gerou um debate sobre a necessidade de levar os erros de arredondamento a sério. Webb pediu uma ‘mudança cultural’ que faria com que os construtores e auditores de DeFi tratassem os erros de arredondamento com o mesmo fervor que a reentrância.
Um tipo de vulnerabilidade que permite a um atacante interagir com um contrato inteligente mais vezes do que deveria ser possível. O auditor de contratos inteligentes Joe Dakwa disse que testes robustos de unidade e fuzz, ou fuzzing, deveriam se tornar práticas padrão.
Fuzzing é um tipo de teste que pode ser realizado em contratos inteligentes, onde dados aleatórios são alimentados no código para ver se algo quebra. Especialistas em segurança dizem que testes de invariância, semelhantes ao fuzzing, também devem ser adicionados à mistura.