Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
caracal — Analisador Estático para contratos inteligentes Starknet | Kitploit
Ferramentas/GitHubGitHub/crytic/caracal
Análise EstáticaAnálise de VulnerabilidadesAnálise de Código
GitHubcrytic/caracal

caracal

Analisador Estático para contratos inteligentes Starknet

Ver Repositório
148112há 2 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Caracal

Caracal é uma ferramenta de análise estática sobre a representação SIERRA para contratos inteligentes Starknet.

Funcionalidades

  • Detectores para detectar código Cairo vulnerável
  • Impressoras para relatar informações
  • Análise de taint
  • Estrutura de análise de fluxo de dados
  • Fácil de executar em projetos Scarb

Instalação

Binários pré-compilados

Binários pré-compilados estão disponíveis na nossa página de releases. Se você estiver usando o compilador Cairo 1.x.x, use o binário v0.1.x; caso contrário, se estiver usando o compilador Cairo 2.x.x, use v0.2.x.

Compilando a partir do código fonte

Você precisa do compilador Rust e do Cargo. Compilando a partir do git:

root@kitploit:~
cargo install --git https://github.com/crytic/caracal --profile release --force

Compilando a partir de uma cópia local:

root@kitploit:~
git clone https://github.com/crytic/caracal
cd caracal
cargo install --path . --profile release --force

Uso

Listar detectores:

root@kitploit:~
caracal detectors

Listar impressoras:

root@kitploit:~
caracal printers

Autônomo

Para usar com um arquivo cairo autônomo e você possui um binário local do compilador cairo, basta apontá-lo para o arquivo. Caso contrário, um compilador empacotado é usado e você precisa passar o caminho para a biblioteca corelib usando a opção --corelib da CLI ou definindo a variável de ambiente CORELIB_PATH.
Executar detectores:

root@kitploit:~
caracal detect path/file/to/analyze
root@kitploit:~
caracal detect path/file/to/analyze --corelib path/to/corelib/src

Executar impressoras:

root@kitploit:~
caracal print path/file/to/analyze --printer printer_to_use --corelib path/to/corelib/src

Projeto Cairo

Se você tem um projeto Cairo com vários arquivos e contratos, pode ser necessário especificar quais contratos com --contract-path. O binário local do compilador Cairo é usado se disponível; caso contrário, um compilador empacotado é usado. Neste último caso, você também precisa especificar o corelib, conforme explicado acima para o caso autônomo. O caminho é o diretório onde o cairo_project.toml reside.
Executar detectores:

root@kitploit:~
caracal detect path/to/dir
root@kitploit:~
caracal detect path/to/dir --contract-path token::myerc20::... token::myerc721::...

Executar impressoras:

root@kitploit:~
caracal print path/to/dir --printer printer_to_use

Scarb

Se você tem um projeto que usa Scarb, precisa adicionar o seguinte no Scarb.toml:

root@kitploit:~
[[target.starknet-contract]]
sierra = true

[cairo]
sierra-replace-ids = true

Em seguida, passe o caminho para o diretório onde o Scarb.toml reside. Executar detectores:

root@kitploit:~
caracal detect path/to/dir

Executar impressoras:

root@kitploit:~
caracal print path/to/dir --printer printer_to_use

Detectores

A coluna Cairo representa a(s) versão(ões) do compilador para as quais o detector é válido.

Impressoras

  • cfg: Exporta o CFG de cada função para um arquivo .dot
  • callgraph: Exporta o grafo de chamadas de funções para um arquivo .dot

Como contribuir

Confira a wiki sobre os seguintes tópicos:

  • Como escrever um detector
  • Como escrever uma impressora

Limitações

  • Funções inline não são tratadas corretamente.
  • Por operar sobre a representação SIERRA, não é possível relatar onde um erro está no código fonte; podemos apenas relatar instruções SIERRA/o que está disponível em um programa SIERRA.
Baixar ferramenta
NumDetectorO que detectaImpactoConfiançaCairo
1controlled-library-callChamadas de biblioteca com hash de classe controlado pelo usuárioAltoMédio1 & 2
2unchecked-l1-handler-fromDetecta manipuladores L1 sem verificação de endereço de origemAltoMédio1 & 2
3felt252-unsafe-arithmeticDetecta operações controladas pelo usuário com tipo felt252, que não é seguro contra overflow/underflowMédioMédio1 & 2
4reentrancyDetecta quando uma variável de armazenamento é lida antes de uma chamada externa e escrita apósMédioMédio1 & 2
5read-only-reentrancyDetecta quando uma função view lê uma variável de armazenamento escrita após uma chamada externaMédioMédio1 & 2
6unused-eventsEventos definidos mas não emitidosMédioMédio1 & 2
7unused-returnValores de retorno não utilizadosMédioMédio1 & 2
8unenforced-viewFunção possui decorador view mas modifica estadoMédioMédio1
9tx-originDetecta uso do endereço de origem da transação como controle de acessoMédioMédio2
10unused-argumentsArgumentos não utilizadosBaixoMédio1 & 2
11reentrancy-benignDetecta quando uma variável de armazenamento é escrita após uma chamada externa mas não lida antesBaixoMédio1 & 2
12reentrancy-eventsDetecta quando um evento é emitido após uma chamada externa, resultando em eventos fora de ordemBaixoMédio1 & 2
13dead-codeFunções privadas nunca usadasBaixoMédio1 & 2
14use-after-pop-frontDetecta uso de um array ou span após remover elemento(s)BaixoMédio1 & 2