Skip to content

using some tools to analyze smart contracts's security

Notifications You must be signed in to change notification settings

shiroamurha/SmartContractTools

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

62 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mythril-repo

Tutorial

Requisitos:

  • Python 3.9+ instalado;
  • Mythril instalado, pode ser feito com o comando pip install mythril
  • OBS: Mythril só tem suporte para sistemas baseados em Linux

O processo de automação das configurações da ferramenta de testes de Smart Contracts chamada Mythril se torna necessário a partir do momento em que os contratos recebem uma grande quantidade de imports, mas também quando precisa-se testar contratos em massa.

O script python myth2json.py automatiza esse processo inteiro de configurações de imports dos contratos em um arquivo temporário, e após utiliza o comando myth analyze -o json --max-depth 25 --solc-json import_assets.json para análise em si do contrato, retornando o tempo da execução no terminal e um arquivo json com a análise do contrato no padrão NomeDoArquivo_analyzed.json. A profundidade de hashes testados imposta --max-depth 25 é padrão como 22 mas pode ser alterada com essa definição, que pode ser alterada no código dependendo da necessidade. A definição -o json serve para retornar a análise no formato json, que por padrão é apenas um texto no terminal. A configuração --solc-json import_assets.json serve para apontar o arquivo import_assets.json (que é o arquivo temporário criado pelo script) como os remapeamentos de imports para a análise do contrato.

Para a utilização do script, basta pô-lo no diretório onde encontram-se os contratos a serem analisados e abrí-lo com o comando python3 myth2json.py (Linux). Após a inicialização, haverá uma entrada a ser feita com o nome do contrato (sem incluir a extensão .sol) a se analisar, pode ser utilizada a entrada 0 para que se analise todos os contratos do diretório onde o script se encontra.

A DECIDIR: interface gráfica do script, facilitando ainda mais o processo de testes

Análises de Smart Contracts

    Problemas conhecidos

  • Quando um contrato importado por outro usa uma versão diferente de solidity do contrato principal, mythril não completa a análise, retornando um erro no output da análise.
  • CryptoKitties

  • /contracts/GameVarAndFee.sol: Erro com a versão do authority/Owned.sol, todos os contratos usam solidity 0.5.5 e Owned usa 0.5.0. Alterando a sua versão não muda o resultado.
  • /contracts/CronJob.sol: Mesmo erro de versão do authority/Owned.sol
  • /contracts/DSNote.sol: Nenhum erro foi detectado. Checar DSNote_analyzed.json no repositório.
  • /contracts/authority/Owned.sol: Falha identificada - Exception State: an assertion violation was triggered. Checar Owned_analyzed.json no repositorio.
  • /contracts/ethie/EthieToken.sol: Falha identificada - Integer Arithmetic Bugs: é possível de se causar overflow ou underflow de números inteiros a partir de operadores aritméticos. Checar EthieToken_analyzed.json no repositório.
  • /contracts/

Releases

No releases published

Packages

No packages published

Languages