Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
caracal — Analyseur statique pour les contrats intelligents Starknet | Kitploit
Outils/GitHubGitHub/crytic/caracal
Analyse StatiqueAnalyse des VulnérabilitésAnalyse de Code
GitHubcrytic/caracal

caracal

Analyseur statique pour les contrats intelligents Starknet

Voir le dépôt
148112il y a 2 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Caracal

Caracal est un outil d'analyse statique basé sur la représentation SIERRA pour les contrats intelligents Starknet.

Fonctionnalités

  • Détecteurs pour repérer du code Cairo vulnérable
  • Imprimantes pour rapporter des informations
  • Analyse de flux de données contaminé (taint analysis)
  • Cadre d'analyse de flux de données
  • Facile à exécuter dans les projets Scarb

Installation

Binaires précompilés

Des binaires précompilés sont disponibles sur notre page des versions. Si vous utilisez le compilateur Cairo 1.x.x, utilisez le binaire v0.1.x ; sinon, si vous utilisez le compilateur Cairo 2.x.x, utilisez v0.2.x.

Construction à partir des sources

Vous avez besoin du compilateur Rust et de Cargo. Construction depuis git :

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

Construction à partir d'une copie locale :

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

Utilisation

Lister les détecteurs :

root@kitploit:~
caracal detectors

Lister les imprimantes :

root@kitploit:~
caracal printers

Autonome

Pour utiliser avec un fichier Cairo autonome et si vous avez un binaire du compilateur Cairo local, il suffit de le pointer vers le fichier. Sinon, un compilateur intégré est utilisé et vous devez fournir le chemin vers la bibliothèque corelib soit avec l'option CLI --corelib, soit en définissant la variable d'environnement CORELIB_PATH.
Exécuter les détecteurs :

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

Exécuter les imprimantes :

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

Projet Cairo

Si vous avez un projet Cairo avec plusieurs fichiers et contrats, vous devrez peut-être spécifier quels contrats avec --contract-path. Le binaire du compilateur Cairo local est utilisé s'il est disponible, sinon un compilateur intégré est utilisé. Dans ce dernier cas, vous devez également spécifier le corelib comme expliqué ci-dessus pour le cas autonome. Le chemin est le répertoire où se trouve cairo_project.toml.
Exécuter les détecteurs :

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

Exécuter les imprimantes :

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

Scarb

Si vous avez un projet qui utilise Scarb, vous devez ajouter ce qui suit dans Scarb.toml :

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

[cairo]
sierra-replace-ids = true

Ensuite, fournissez le chemin vers le répertoire où se trouve Scarb.toml. Exécuter les détecteurs :

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

Exécuter les imprimantes :

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

Détecteurs

La colonne Cairo représente la ou les versions du compilateur pour lesquelles le détecteur est valide.

Imprimantes

  • cfg : Exporte le CFG de chaque fonction dans un fichier .dot
  • callgraph : Exporte le graphe d'appels de fonctions dans un fichier .dot

Comment contribuer

Consultez le wiki sur les sujets suivants :

  • Comment écrire un détecteur
  • Comment écrire une imprimante

Limitations

  • Les fonctions inline ne sont pas traitées correctement.
  • Comme il fonctionne sur la représentation SIERRA, il n'est pas possible de signaler où se trouve une erreur dans le code source, nous ne pouvons signaler que les instructions SIERRA / ce qui est disponible dans un programme SIERRA.
Télécharger l’outil
NumDétecteurCe qu'il détecteImpactConfianceCairo
1controlled-library-callAppels de bibliothèque avec un hash de classe contrôlé par l'utilisateurÉlevéMoyen1 & 2
2unchecked-l1-handler-fromDétecte les gestionnaires L1 sans vérification d'adresse fromÉlevéMoyen1 & 2
3felt252-unsafe-arithmeticDétecte les opérations contrôlées par l'utilisateur avec le type felt252, qui n'est pas sûr contre les débordements/sous-débordementsMoyenMoyen1 & 2
4reentrancyDétecte quand une variable de stockage est lue avant un appel externe et écrite aprèsMoyenMoyen1 & 2
5read-only-reentrancyDétecte quand une fonction view lit une variable de stockage écrite après un appel externeMoyenMoyen1 & 2
6unused-eventsÉvénements définis mais non émisMoyenMoyen1 & 2
7unused-returnValeurs de retour inutiliséesMoyenMoyen1 & 2
8unenforced-viewLa fonction a un décorateur view mais modifie l'étatMoyenMoyen1
9tx-originDétecte l'utilisation de l'adresse d'origine de la transaction comme contrôle d'accèsMoyenMoyen2
10unused-argumentsArguments inutilisésFaibleMoyen1 & 2
11reentrancy-benignDétecte quand une variable de stockage est écrite après un appel externe mais pas lue avantFaibleMoyen1 & 2
12reentrancy-eventsDétecte quand un événement est émis après un appel externe entraînant des événements dans le désordreFaibleMoyen1 & 2
13dead-codeFonctions privées jamais utiliséesFaibleMoyen1 & 2
14use-after-pop-frontDétecte l'utilisation d'un tableau ou d'un span après avoir supprimé un ou plusieurs élémentsFaibleMoyen1 & 2