Kaspersky encontra vulnerabilidade no Gemini Dollar (GUSD) dos irmãos Winklevoss

Siga o CriptoFacil no

A Kaspersky, empresa especializada em segurança virtual, destacou em seu blog oficial que a stablecoin Gemini Dollar (GUSD) dos irmãos Winklevoss possui uma falha em seu contrato inteligente que pode permitir ataques de Front Running que roubam todos os pagamentos anti-spam. Segundo a publicação a vulnerabilidade foi descoberta pela Kaspersky Smart Contract Source Code Review.

“Observe que o contrato inteligente fornecido já havia sido revisado, embora não saibamos se alguma falha de código foi descrita no relatório. De acordo com nossa Política de Divulgação Responsável, contatamos a equipe de segurança da Gemini para relatar o problema. Eles nos informaram que o assunto foi considerado durante a fase de design do projeto, mas não apresentou riscos para a GUSD”, destacou a empresa.

De acordo com a Kaspersky os criadores do sistema Gemini Dollar implementaram alguns aprimoramentos nos contratos inteligentes de sua stablecoin:

Publicidade

“Eles separaram o contrato em três componentes: Proxy (a interface permanente com a qual os titulares de tokens podem interagir e executar operações), Store (o mapeamento dos titulares de tokens e seus saldos) e Impl (a lógica subjacente); O componente que descreve a lógica pode ser atualizado e complementado com novos recursos, como a capacidade de congelar fundos. Enquanto isso, os dados e a interface permaneceram inalterados; a atualização é visível para todos; Para a atualização e controle, é usado um contrato inteligente “de custódia” separadamente, que é gerenciado por várias pessoas (custodiantes) para proteção adicional. Se um custodiante propõe uma ação, os outros devem confirmar antes que a ação possa ocorrer”, informou.

Contudo, se alguém que não seja o custodiante principal fizer uma proposta em um contrato de custódia, deverá pagar uma participação de 1 ETH e, conforme observado nos comentários do próprio contrato, essa medida anti-spam busca dissuadir os participantes de criar muitas solicitações.

Desta forma, os pagamentos anti-spam acabam indo para uma pessoa: a que anuncia a aprovação de uma proposta / solicitação específica.

} else {

Buscando a próxima moeda 100x?
Confira nossas sugestões de Pre-Sales para investir agora

if (address(this).balance > 0) {

// reward sender with anti-spam payments

// ignore send success (assign to ʹsuccessʹ but this will be overwritten)

Publicidade

success = msg.sender.send(address(this).balance);

A pessoa que determina a aprovação da solicitação também recebe todos os pagamentos anti-spam feitos com ETH. Para fazer isso, ele ou ela chama a função do contrato inteligente completeUnlock e passa as assinaturas de dois custodiantes nos parâmetros.

O problema é que a Ethereum, como qualquer outra blockchain, executa solicitações com atraso. Uma transação do cliente (transferindo dinheiro ou chamando uma função) espera na fila por algum tempo (geralmente 15 segundos ou mais). Durante esse período, qualquer pessoa pode visualizar as transferências planejadas de outros usuários da Ethereum, incluindo valores, destinatários e parâmetros. E o espectador pode usar essas informações para criar sua própria transação e empurrá-las para a frente, pagando uma comissão mais alta ao minerador.

Publicidade

Assim, um ator malicioso pode executar um ataque de Front Running e roubar todos os pagamentos anti-spam feitos na Gemini Dollar (GUSD). No nosso caso, uma pessoa de fora pode configurar um robô para monitorar o contrato de custódia. Se alguém perceber que alguém solicitou a função completeUnlock (isto é, um custodiante está interagindo com o Gemini Dollar), copia imediatamente todos os parâmetros e chama a função para extrair o Ethereum acumulado.

Contudo a empresa observa que o incentivo para realizar este tipo de ataque é pequeno tendo em vista que os pagamentos anti-spam representam uma parcela ínfima do total de GUSD em circulação, além disso, segundo a Kaspersky, conhecendo a vulnerabilidade, os usuários podem simplesmente evitar a função vulnerável ou atualizar o contrato.

Segundo a Gemini, declarou:

Publicidade

“Escolhemos esse design porque o Gemini não pretende colocar a Ethereum em condições normais e, como resultado, tomamos uma decisão baseada no risco de não expandir materialmente a complexidade da nossa base de código apenas para o benefício imaterial de um mecanismo de recuperação mais robusto por uma participação anti-spam teórica e nominal. Priorizar o código simples e seguro continua sendo a melhor solução para o Gemini Dollar e seus usuários. No futuro, poderemos revisar essa decisão se o risco mudar e um contrato mais caro e complexo se tornar apropriado.”