Reading Time: 1 minute

Um varrimento de quase um milhão de smart contracts Ethereum permitiu identificar 34.200 contratos vulneráveis. Estes podem ser explorados pelos atacantes permitindo roubar Ethers e até congelar ou eliminar ativos.

Para os menos familiarizados com o mundo das moedascriptográficas, os smart contracts são um conjunto de operações que são executadas automaticamente quando algum “input” é enviado para o contrato.

Por exemplo:

Consider an Ethereum smart contract that is used to auction off a digital [object]. The contract has variable “x” that counts the number of bids made on the [object]. The owner may want to prolong the bidding on the object and might set up a contract condition of “x>100” before allowing the object to be sold to the highest bidder. Once this condition is met, the smart contract automatically initiates an Ether transaction with the winner and releases a sale order for the [object].

Os smart contracts são uma das razões porque o Ethereum é tão popular. Eles são o que alimenta a maior parte das ICOs atuais, mas também executam outros serviços tipos de serviços baseados no Ethereum.

Smart Contracts são apenas código

Smart contracts são de facto um pedaço de código, e como em tantos outros pedaços de código, existem vulnerabilidades. O número dessas vulnerabilidades é diretamente proporcional à quantidade de LOF (Linhas de Código) e à sua complexidade.

Uma dessas vulnerabilidades  foi descoberta no verão de 2016, que levou ao roubo de 50 milhões de ethers da organização TheDAO.

Essa vulnerabilidade despertou uma maior “caça à vulnerabilidade” no Ethereum.

Em 2016, foi criada uma ferramenta chamada Oyente com o objetivo de detetar erros em contratos inteligentes. Esta ferramenta detetou inicialmente 8.833 contratos vulneráveis num varrimento de 19.366.

 

Novo incidente desencadeia  nova ferramenta para varrimento de vulnerabilidades

Mais uma vez, no final do outono de 2017, foi explorada uma nova vulnerabilidade no Ethereum.

Este incidente aconteceu em novembro passado, quando um utilizador do GitHub chamado Devops199 acidentalmente – ou intencionalmente (não sabemos) – bloqueou mais de US $ 285 milhões de Ether dentro das carteiras Parity usando um bug que ele descobriu.

Este incidente levou a criação de uma nova ferramenta chamada Maian.

Depois do incidente, uma equipa de cinco pessoas usou a Maian para analisar uma enorme quantidade de contratos inteligentes — foram970.898, com os seguintes resultados, apresentados na tabela abaixo:

Greedy-ETH-Scan-Results

 

Prodigal contracts – smart contracts that when attacked send funds for safe keeping to the wrong Ethereum address (attacker’s or not). Suicidal contracts – smart contracts that can be killed by someone else and not just the owner (Parity Devops199 bug falls here). Greedy contracts – smart contracts that can be locked by someone else and freeze funds forever (Parity Devops199 bug also falls here).

Os resultados mostram que 3,5% dos contratos estão afetados por uma grande vulnerabilidade que pode ajudar os criminosos a roubar fundos ou simplesmente congelar o Ether dos utilizadores.