Cointelegraph
Adrian ZmudzinskiAdrian Zmudzinski

Exploração de US$ 730.000 na SuperRare poderia ter sido facilmente evitada, afirmam especialistas

Uma falha crítica de controle de acesso no contrato de staking da SuperRare, facilmente detectável por testes unitários ou até mesmo pelo ChatGPT, permitiu que um invasor roubasse US$ 731.000 em tokens RARE.

Exploração de US$ 730.000 na SuperRare poderia ter sido facilmente evitada, afirmam especialistas
Notícias

A plataforma de negociação de NFTs SuperRare sofreu, na segunda-feira, uma exploração de US$ 730.000 devido a uma falha básica em seu contrato inteligente que, segundo especialistas, poderia ter sido facilmente evitada com práticas padrão de testes.

O contrato de staking da SuperRare (RARE) foi explorado na segunda-feira, com cerca de US$ 731.000 em tokens RARE roubados, de acordo com a empresa de cibersegurança cripto Cyvers.

A vulnerabilidade decorre de uma função destinada a permitir que apenas endereços específicos modificassem a raiz de Merkle, uma estrutura de dados crítica que determina os saldos de staking dos usuários. No entanto, a lógica foi escrita incorretamente, permitindo que qualquer endereço interagisse com a função.

0xAw, desenvolvedor líder da exchange descentralizada Alien Base, apontou que o erro era tão óbvio que poderia ter sido detectado pelo ChatGPT. O Cointelegraph verificou de forma independente que o modelo o3 da OpenAI identificou com sucesso a falha ao ser testado.

Security, Hackers, Cybersecurity, Hacks
Trecho relevante do código no contrato de staking de tokens da SuperRare. Fonte: Cointelegraph

“O ChatGPT teria detectado isso, qualquer desenvolvedor de Solidity minimamente competente teria detectado. Basicamente qualquer pessoa, se tivesse olhado. Provavelmente ninguém olhou”, disse 0xAw ao Cointelegraph.

O cofundador da SuperRare, Jonathan Perkins, disse ao Cointelegraph que nenhum fundo do protocolo principal foi perdido e que os usuários afetados serão ressarcidos. Segundo ele, parece que 61 carteiras foram impactadas.

“Aprendemos com isso e, a partir de agora, mudanças futuras passarão por um processo de revisão muito mais robusto”, afirmou.

Anatomia de uma vulnerabilidade

Para determinar se a alteração da raiz de Merkle deveria ser permitida, o contrato inteligente verificava se o endereço que interagia não era um endereço específico ou o proprietário do contrato. Essa lógica era o oposto do que deveria ser implementado, permitindo que qualquer pessoa retirasse o RARE em staking do contrato.

Security, Hackers, Cybersecurity, Hacks
Linha contendo a verificação relevante. Fonte: Cointelegraph

Um engenheiro sênior da empresa de seguro cripto Nexus Mutual disse ao Cointelegraph que “testes unitários teriam detectado esse erro”.

Mike Tiutin, arquiteto de blockchain e diretor de tecnologia da AMLBot, afirmou: “Foi um erro bobo do desenvolvedor, não coberto por testes (é por isso que a cobertura total é importante).”

O CEO da AMLBot, Slava Demchuk, chegou à mesma conclusão, observando que “não houve testes extensivos (ou um programa de bug bounty) que pudessem ter identificado o problema antes da implantação”. Ele destacou a importância dos testes, dizendo que este é um “exemplo clássico do motivo pelo qual a lógica de contratos inteligentes deve ser rigorosamente auditada”. Ele acrescentou:

“Isso serve como um lembrete severo: em sistemas descentralizados, até mesmo um único caractere errado pode ter consequências graves.”

Embora Perkins tenha insistido que os contratos foram auditados e passaram por testes unitários, ele reconheceu que o bug foi introduzido tardiamente no processo e não foi coberto nos cenários finais de teste:

“É um lembrete doloroso de como até pequenas alterações em sistemas complexos podem ter consequências inesperadas.”

A importância dos testes unitários

Testes unitários são testes automatizados que verificam se partes individuais (“unidades”) de um programa, normalmente funções ou métodos, funcionam conforme o esperado. Cada teste avalia um comportamento ou resultado específico com base em uma entrada dada, ajudando a detectar bugs precocemente.

Neste caso, os testes que verificariam se endereços podem ou não chamar a função para modificar a raiz de Merkle teriam falhado.

“Por descuido ou por testes inadequados, o resultado foi o mesmo: uma vulnerabilidade evitável que custou caro”, disse Demchuk ao Cointelegraph.

0xAw também afirmou que “o problema foi, claro, a aparente ausência completa de testes”. Segundo ele, “não é sequer um tipo de código que funciona bem em condições normais e falha apenas se for forçado”.

“Esse código simplesmente faz o oposto do que se espera”, acrescentou.

Perkins disse ao Cointelegraph que, daqui para frente, a SuperRare introduziu novos fluxos de trabalho que exigem novas auditorias para quaisquer alterações feitas após uma auditoria inicial, por menores que sejam.

A maioria das vulnerabilidades é causada por descuidos

0xAw disse que o erro é “um erro humano normal”. O que ele considera uma “falha monumental” é o fato de que “o erro chegou à produção e permaneceu lá”.

0xAw destacou que a grande maioria das vulnerabilidades graves resulta de “erros realmente bobos e facilmente evitáveis”. Ainda assim, ele admitiu que “normalmente são um pouco mais difíceis de perceber do que este”.

O chefe de resposta a incidentes da Hacken, Yehor Rudytsia, concordou que uma cobertura de testes abrangente teria detectado a falha.

“Revisando essa função, fica claro que se trata de um bug bastante óbvio”, disse ele.