Sherlock AI relatou uma vulnerabilidade crítica no protocolo @40acresFinance. A equipe da 40acres generosamente nos permitiu compartilhar os detalhes publicamente para que outros pudessem aprender com a descoberta. Veja como a vulnerabilidade funcionou: Primeiro, os veNFTs são um tipo especial de tokens ERC721 com garantia de voto que ganham recompensas semanais. 40acres dá aos detentores de veNFT acesso instantâneo a empréstimos com base na receita futura de seu veNFT. O veNFT de cada mutuário fica dentro de uma PortfolioAccount pessoal que roteia a funcionalidade por meio de "facetas" modulares usando o padrão de proxy de diamante. A exploração permite que um invasor recupere sua garantia (veNFT) de sua PortfolioAccount sem pagar o empréstimo. Confira a função aerodromeVote() abaixo. 40acres tem um recurso muito legal que permite que os mutuários votem com seus veNFTs mantidos como garantia em 40acres. A função tem o seguinte problema: O endereço loanContract não é validado, permitindo que um usuário mal-intencionado especifique um contrato arbitrário. Este contrato pode ser aprovado para controlar o veNFT na PortfolioAccount, permitindo sua transferência durante a chamada vote() no loanContract malicioso. Etapas de ataque 1) O invasor implanta um contrato malicioso que implementa a chamada transferFrom/safeTransferFrom para transferir o veNFT aprovado. 2) O invasor chama portfolioAccount.aerodromeVote(maliciousContract, tokenId). O fallback do portfólio delega para a faceta, que não possui validação de entrada e chama e transfere o veNFT de volta para o invasor, mesmo que o empréstimo não tenha sido pago. Nota: A repetição do bug faz com que o pool de empréstimos seja drenado - fazer isso uma vez é apenas pegar um empréstimo e roubar seu veNFT de volta. Impacto Empréstimos não garantidos em todo o sistema. Qualquer mutuário pode recuperar sua própria garantia no meio do empréstimo, levando à insolvência total do pool de empréstimos. Agradecimentos Obrigado a @defsec_, @vinica_boy e @onthehunt11_ por ajudar com este artigo. Importante saber: a equipe da 40acres descobriu o bug e aplicou uma correção antes do lançamento Detectado por Sherlock AI Você pode ver o problema original gerado pelo Sherlock AI no próximo tweet. A corrida durou 3 horas e 59 minutos do início ao fim. O Sherlock AI traz segurança ao processo de desenvolvimento, verificando commits e caminhos de chamada antecipadamente, revelando falhas de alto impacto rapidamente e dando aos auditores uma visibilidade mais clara de sistemas complexos. Na prática, isso significa que problemas como esse podem ser detectados e resolvidos muito antes de auditorias, recompensas ou implantação. Experimente o Sherlock AI para o seu protocolo hoje.
Problemas originais gerados pelo Sherlock AI: Problemas originais gerados pelo Sherlock AI: Experimente o Sherlock AI para sua equipe hoje:
32,13K