
O Scout é uma ferramenta extensível de código aberto destinado a ajudar os desenvolvedores e auditores de contratos inteligentes estelares de Soroban a detectar questões de segurança e desvios comuns das melhores práticas.
Essa ferramenta ajuda os desenvolvedores a escrever contratos inteligentes seguros e mais robustos.
Nosso interesse nesse projeto vem de nossa experiência em auditoria manual e detecção de vulnerabilidades em outros blockchains (consulte Scout para tinta!).
Instale a auditoria de escoteiros:
Verifique se a carga está instalada no seu computador. Em seguida, instale o Scout com o seguinte comando:
cargo install cargo-scout-auditExecute a auditoria de escoteiros:
Para executar o Scout em seu projeto, execute o seguinte comando:
cargo scout-auditO Scout suporta espaços de trabalho de carga. Quando executado em um espaço de trabalho, o Scout será executado em todos os pacotes especificados como membros da área de trabalho.
Para obter mais informações sobre instalação e uso, consulte a seção de início da nossa seção de documentação abaixo.
Atualmente, o Scout inclui os seguintes detectores.
| ID do detector | O que isso detecta | Casos de teste | Gravidade |
|---|---|---|---|
| dividir-se antes multiplicado | Realizando uma operação de divisão antes de uma multiplicação, levando à perda de precisão. | 1, 2, 3 | Médio |
| INSFERIOR-UNWRAP | O uso inadequado do método desembrulhado, causando falhas de programa inesperadas. | 1 | Médio |
| Especas inseguro | Uso inadequado do método de espera, levando a falhas inesperadas do programa. | 1 | Médio |
| Overflow-check | Uma operação aritmética transborda ou diminui a memória disponível alocada para a variável. | 1 | Crítico |
| valores insuficientemente aleatórios | Evite usar atributos de bloco para geração de números aleatórios para evitar a manipulação. | 1 | Crítico |
| Atuação desprotegida-corrente-contrato-wasm | Se os usuários tiverem permissão para ligar para update_current_contract_wasm() , eles poderão modificar intencionalmente o comportamento do contrato. | 1 | Crítico |
| Evite o núcleo-homem-esquema | O uso de core::mem::forget() pode levar a vazamentos de memória e erros lógicos. | 1 | Aprimoramento |
| Set-contrato-armazenamento | Controle de acesso insuficiente no método env.storage() . | 1, 2, 3 | Crítico |
| Evite-Panic-Error | O código entra em pânico no erro em vez de usar enum descritivo. | 1 | Aprimoramento |
| Evite-se-bloqueio | Usando blocos inseguros em riscos Segurança e confiabilidade do código. | 1 | Crítico |
| Operação de Dos-Unboused | DOS devido à operação ilimitada. | 1, 2, 3 | Médio |
| Soroban-Versão | O uso de uma versão antiga do Soroban pode ser perigosa, pois pode ter bugs ou problemas de segurança. Use a versão mais recente disponível. | 1 | Aprimoramento |
| não-utilizado-retorno-enum | Return Enum de uma função não é completamente usado. | 1, 2 | Menor |
| iteradores-over-indexing | Iterando com índices codificados é mais lento do que usar um iterador. Além disso, se o índice estiver fora dos limites, ele entrará em pânico. | 1 | Aprimoramento |
| assert-violação | Evite o uso da macro assert!, Pode entrar em pânico. | 1 | Aprimoramento |
| Operação de mapeamento desprotegida | Modificar os mapeamentos com uma chave arbitrária dada pelos usuários pode ser uma vulnerabilidade significativa. | 1, 2 | Crítico |
| DOS-UNEXSPETED-REVERT-SECTOR | DOS devido ao armazenamento inadequado. | 1, 2 | Médio |
| sem restrições de transferência | Evite passar por um parâmetro definido pelo usuário como um from em transferência de transferência. | 1 | Crítico |
| MAP-MAP UNSAGEM | Uso inadequado do método get para Map em Soroban | 1 | Médio |
| Arremente zero ou teste | Evite a atribuição de endereço zero ou teste para impedir a perda de controle do contrato. | 1 | Médio |
| exposição incorreta | Adverte contra o uso incorreto de '^'. | 1 | Crítico |
Você pode escolher o formato de saída que melhor atenda às suas necessidades. O Scout oferece relatórios HTML, Markdown, JSON, PDF e SARIF. Para especificar a saída desejada, execute o seguinte comando:
cargo scout-audit --output-format [html|md|pdf|json|sarif]
Relatório HTML

Adicione o Scout ao seu espaço de trabalho de desenvolvimento com a extensão de código VS do Scout para executar o Scout automaticamente ao salvar seu arquivo.

Dica: para ver os erros destacados em seu código, recomendamos a instalação da extensão da lente de erro.
Faça o download do Scout vs Code do Visual Studio Marketplace.
Integre o escoteiro ao seu pipeline CI/CD! Execute automaticamente a ferramenta contra os contratos inteligentes direcionados. Esse loop de feedback imediato permite que os desenvolvedores abordem rapidamente quaisquer problemas antes de mesclar o código na filial principal, reduzindo o risco de introduzir bugs ou vulnerabilidades.
Saída do escoteiro como um comentário em um pedido de tração

Encontre a ação do Scout Github no mercado do GitHub.
Junte -se a nós para uma série emocionante de tutoriais em vídeo, onde você aprenderá a instalar e executar o Scout. Descubra como identificar e resolver problemas específicos detectados pela ferramenta e aprimore suas habilidades com nossa orientação especializada.
? Mais vídeos que estão chegando em breve!
Para validar nossa ferramenta, fornecemos um conjunto de exemplos de código localizados na pasta de casos de teste.
Para executar os testes de integração, navegue para apps/cargo-scout-audit e execute:
cargo test --all --all-features Para executar os testes para um caso de teste específico, execute o mesmo comando nessa pasta de teste de teste específica (por exemplo: test-cases/divide-before-multiply/divide-before-multiply-1 )
Siga nossos links de documentação abaixo e saiba mais sobre as vulnerabilidades detectadas pelo Scout, como a ferramenta funciona e como contribuir para o projeto!
O Scout for Soroban é um analisador de vulnerabilidade de código aberto desenvolvido pela equipe de pesquisa e desenvolvimento da Coinfabrik.
Recebemos apoio por meio de uma concessão do Stellar Community Fund (SCF).
Nós - Coinfabrik - somos uma empresa de pesquisa e desenvolvimento especializada em Web3, com uma forte experiência em segurança cibernética. Fundada em 2014, trabalhamos em mais de 180 projetos relacionados a blockchain, baseados em EVM e também para Solana, Algorand, Stellar e Polkadot. Além do desenvolvimento, oferecemos auditorias de segurança através de uma equipe interna dedicada de profissionais seniores de segurança cibernética, atualmente trabalhando no código em substrato, solidez, clareza, ferrugem, cerceta e soroban estelar.
Nossa equipe tem formação acadêmica em ciência da computação e matemática, com experiência de trabalho focada na segurança cibernética e no desenvolvimento de software, incluindo publicações acadêmicas, patentes se transformou em produtos e apresentações de conferências. Além disso, temos uma colaboração contínua em transferência de conhecimento e projetos de código aberto com a Universidade de Buenos Aires.
O Scout é licenciado e distribuído sob uma licença do MIT. Entre em contato conosco se você estiver procurando uma exceção aos termos.