Dirty Bits

Elevating ethereum through advanced hash technology

  • 0 Raised
  • 614 Views
  • 0 Judges

Categories

  • OpenZeppelin

Gallery

Description

Dirty Bits 


Problema a resolver

"Dirty higher order bits" refere-se a bits mais significativos que foram afetados por ruído ou interferência durante a transmissão de dados, levando a erros de decodificação ou interpretação incorreta dos dados.



Solução proposta

Desenvolvemos um novo nível para o Ethernaut que explora uma fraqueza nos compiladores abaixo da versão 0.8.0. Nesse cenário, os inputs manipuados pelas funções não serão checados em sua totalidade. Isso quer dizer que ao utilizarmos o comando calldataload(4) para pegar o input da transação, podemos adulterar os bytes e esse conjunto de bytes alterado passar despercebido pelas funções.

Essa fraqueza também conhecida como Dirty Higher Order Bits e explora a manipulação de bytes para burlar verificações de segurança. Fizemos um trocadilho do nome dessa vulnerabilidade com o cenário e narrativa propostos para o level desenvolvido, onde o contrato é uma "associação suprema" conhecida como Higher Order (quase uma tábula redonda), e esse grupo secreto possui um tesouro e um comandante! Para o atacante se tornar o comandante, é preciso entregar um tesouro maior do que uint8 (255) através do input da função `registerTreasury`. 

Através do exploit proposto pelo Dirty Bits, podemos definir qualquer valor para o tesouro desde que caiba no tamanho de um bytes32. Fazemos isso através da edição de um calldata - trocando alguns bits de 0 para valores superiores - antes de ser enviado em forma de ataque, em low-level call para a função `registerTreasury`. Sendo assim, com nossas mãos no tesouro enorme que é o conhecimento, podemos chamar a função `claimLeadership` e provar que somos o novo Commander! 

 

Demonstração do produto 

Você pode acessar a nossa versão de testes em: http://20.55.110.244:3000

 

Tecnologia Utilizadas

  • Solidity para os smart contracts
  • Assembly (Yul) para low-level de contratos
  • Visual Studio como IDE de trabalho
  • Hardhat como tooling para desenvolver smart contracts, seus testes e comunicação com RPC. 
  • E é claro, o querido repositório da Ethernauts!


Viabilidade e impacto 

Esse trabalho apresenta um grande potencial por ensinar os futuros programadores de Solidity sobre alguns dos exploits que são poucos conhecidos na indústria. Já que contratos inteligentes costumam existir desde versões mais antigas até as mais novas, pois as mais novas melhoram a segurança porém geralmente sacrificando otimização e custo de execução. Este também seria o primeiro desafio do Ethernaut a utilizar de uma falha de compilador e também de código assembly. A compreensão do funcionamento do level não é tão difícil, sendo o mesmo não extenso e direto ao ponto, porém exigindo a aplicação de conhecimentos de vulnerabilidades para o sucesso do ataque. Suas aplicações e ensinamentos transcendem o potencial do desenvolvedor e sua habilidade de percepção ao analisar bits, evidenciando a importância das questões de segurança em smart contracts.


Conclusão 

Obrigado aos organizadores que mais uma vez trouxeram um evento focado em Devs, com ótimos workshops e empresas relevantes do ecossistema. Ficamos muito felizes em participar e partilhar nossa vontade de aprender, crescer e ensinar. Até uma próxima vez!!

 

LINK APRESENTAÇÃO: https://www.canva.com/design/DAGAbHfA3Xw/wOxKFexLwkTm-3UXK-6bCg/edit?utm_content=DAGAbHfA3Xw&utm_campaign=designshare&utm_medium=link2&utm_source=sharebutton

 

Equipe

Guilherme Heilmann Costa Neves  

Taikai: https://taikai.network/disiexis12  

Github: https://github.com/0xneves/  

Telefone for contact: +55 (48) 99865 3973 

 

Luiz Eduardo Folly de Campos 

Taikai: https://taikai.network/luizfolly 

Github: https://github.com/luizfolly 

Telefone for contact: +55 (21) 98117-3219 

 

Rodrigo Costa Feital dos Santos

Taikai: https://taikai.network/feital07 

Github: https://github.com/fefeupz 

Telefone for contact: +55 (21) 97187-9178 

 

Gustavo Sousa 

Taikai: https://taikai.network/r4wd0g 

Github: https://github.com/r4wd0g 

 

Gabriel Ferreira Gomes da Silva 

Taikai: https://taikai.network/gabrielfcomp 

Github: https://github.com/gabrielsdev 

Telefone for contact: +55 (21) 96447-7815