Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Strumenti/GitHubGitHub/crytic/caracal
Analisi StaticaAnalisi delle VulnerabilitàAnalisi del Codice
GitHubcrytic/caracal

caracal

Analizzatore statico per smart contract di Starknet

Vedi Repository
1481172 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Caracal

Caracal è uno strumento di analisi statica sulla rappresentazione SIERRA per smart contract Starknet.

Caratteristiche

  • Rilevatori per individuare codice Cairo vulnerabile
  • Stampanti per riportare informazioni
  • Analisi taint
  • Framework di analisi del flusso di dati
  • Facile da eseguire in progetti Scarb

Installazione

Binari precompilati

I binari precompilati sono disponibili nella nostra pagina delle release. Se stai usando il compilatore Cairo 1.x.x, utilizza il binario v0.1.x; altrimenti, se stai usando il compilatore Cairo 2.x.x, utilizza v0.2.x.

Compilazione da sorgente

Necessiti del compilatore Rust e di Cargo. Compilazione da git:

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

Compilazione da una copia locale:

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

Utilizzo

Scarica lo strumento

Elenca i rilevatori:

root@kitploit:~
caracal detectors

Elenca le stampanti:

root@kitploit:~
caracal printers

Autonomo

Per utilizzarlo con un file cairo autonomo e disponi di un binario del compilatore cairo locale, è sufficiente puntarlo al file. Altrimenti, viene utilizzato un compilatore integrato e devi passare il percorso della libreria corelib tramite l'opzione --corelib della CLI o impostando la variabile d'ambiente CORELIB_PATH.
Esegui i rilevatori:

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

Esegui le stampanti:

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

Progetto Cairo

Se hai un progetto cairo con più file e contratti, potresti dover specificare quali contratti con --contract-path. Il binario del compilatore cairo locale viene utilizzato se disponibile, altrimenti viene usato un compilatore integrato. In quest'ultimo caso, devi anche specificare il corelib come spiegato sopra per il caso autonomo. Il percorso è la directory in cui si trova cairo_project.toml.
Esegui i rilevatori:

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

Esegui le stampanti:

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

Scarb

Se hai un progetto che utilizza Scarb, devi aggiungere quanto segue in Scarb.toml:

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

[cairo]
sierra-replace-ids = true

Quindi passa il percorso alla directory in cui si trova Scarb.toml. Esegui i rilevatori:

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

Esegui le stampanti:

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

Rilevatori

NumDetectorCosa RilevaImpattoConfidenzaCairo
1controlled-library-callChiamate a libreria con un class hash controllato dall'utenteAltoMedium1 & 2
2unchecked-l1-handler-fromRileva gestori L1 senza controllo dell'indirizzo fromAltoMedium1 & 2
3felt252-unsafe-arithmeticRileva operazioni controllate dall'utente con tipo felt252, che non è sicuro contro overflow/underflowMedioMedium1 & 2
4reentrancyRileva quando una variabile di storage viene letta prima di una chiamata esterna e scritta dopoMedioMedium1 & 2
5read-only-reentrancyRileva quando una funzione view legge una variabile di storage scritta dopo una chiamata esternaMedioMedium1 & 2
6unused-eventsEventi definiti ma non emessiMedioMedium1 & 2
7unused-returnValori di ritorno non utilizzatiMedioMedium1 & 2
8unenforced-viewLa funzione ha il decorator view ma modifica lo statoMedioMedium1
9tx-originRileva l'uso dell'indirizzo di origine della transazione come controllo accessiMedioMedium2
10unused-argumentsArgomenti non utilizzatiBassoMedium1 & 2
11reentrancy-benignRileva quando una variabile di storage viene scritta dopo una chiamata esterna ma non letta primaBassoMedium1 & 2
12reentrancy-eventsRileva quando un evento viene emesso dopo una chiamata esterna causando eventi fuori ordineBasso

La colonna Cairo rappresenta la/e versione/i del compilatore per cui il rilevatore è valido.

Stampanti

  • cfg: Esporta il CFG di ogni funzione in un file .dot
  • callgraph: Esporta il grafo delle chiamate delle funzioni in un file .dot

Come contribuire

Consulta il wiki sui seguenti argomenti:

  • Come scrivere un rilevatore
  • Come scrivere una stampante

Limitazioni

  • Le funzioni inline non vengono gestite correttamente.
  • Poiché lavora sulla rappresentazione SIERRA, non è possibile segnalare dove si trova un errore nel codice sorgente, ma possiamo solo segnalare le istruzioni SIERRA/ciò che è disponibile in un programma SIERRA.
Medium
1 & 2
13dead-codeFunzioni private mai utilizzateBassoMedium1 & 2
14use-after-pop-frontRileva l'uso di un array o uno span dopo la rimozione di elementiBassoMedium1 & 2