Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Herramientas/GitHubGitHub/crytic/caracal
Análisis EstáticoAnálisis de VulnerabilidadesAnálisis de Código
GitHubcrytic/caracal

caracal

Analizador estático para contratos inteligentes de Starknet

Ver Repositorio
148117hace 2 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Caracal

Caracal es una herramienta de análisis estático sobre la representación SIERRA para contratos inteligentes de Starknet.

Características

  • Detectores para detectar código Cairo vulnerable
  • Impresoras para reportar información
  • Análisis de taint
  • Marco de análisis de flujo de datos
  • Fácil de ejecutar en proyectos Scarb

Instalación

Binarios precompilados

Los binarios precompilados están disponibles en nuestra página de lanzamientos. Si usas el compilador Cairo 1.x.x, utiliza el binario v0.1.x; de lo contrario, si usas el compilador Cairo 2.x.x, utiliza v0.2.x.

Compilación desde el código fuente

Necesitas el compilador de Rust y Cargo. Compilando desde git:

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

Compilando desde una copia local:

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

Uso

Descargar herramienta

Listar detectores:

root@kitploit:~
caracal detectors

Listar impresoras:

root@kitploit:~
caracal printers

Independiente

Para usar con un archivo Cairo independiente y tienes un binario del compilador Cairo local, es suficiente apuntarlo al archivo. De lo contrario, se usará un compilador empaquetado y necesitas pasar la ruta a la biblioteca corelib ya sea con la opción de CLI --corelib o configurando la variable de entorno CORELIB_PATH.
Ejecutar detectores:

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

Ejecutar impresoras:

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

Proyecto Cairo

Si tienes un proyecto Cairo con múltiples archivos y contratos, puede que necesites especificar qué contratos con --contract-path. Se usará el binario del compilador Cairo local si está disponible; de lo contrario, se usará un compilador empaquetado. En este último caso, también debes especificar el corelib como se explicó anteriormente para el caso independiente. La ruta es el directorio donde reside cairo_project.toml.
Ejecutar detectores:

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

Ejecutar impresoras:

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

Scarb

Si tienes un proyecto que usa Scarb, debes agregar lo siguiente en Scarb.toml:

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

[cairo]
sierra-replace-ids = true

Luego pasa la ruta al directorio donde reside Scarb.toml. Ejecutar detectores:

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

Ejecutar impresoras:

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

Detectores

NumDetectorQué detectaImpactoConfianzaCairo
1controlled-library-callLlamadas a librería con un hash de clase controlado por el usuarioAltoMedia1 & 2
2unchecked-l1-handler-fromDetecta manejadores L1 sin verificación de dirección de origenAltoMedia1 & 2
3felt252-unsafe-arithmeticDetecta operaciones controladas por el usuario con tipo felt252, que no es seguro contra desbordamiento/subdesbordamientoMedioMedia1 & 2
4reentrancyDetecta cuando una variable de almacenamiento se lee antes de una llamada externa y se escribe despuésMedioMedia1 & 2
5read-only-reentrancyDetecta cuando una función de vista lee una variable de almacenamiento escrita después de una llamada externaMedioMedia1 & 2
6unused-eventsEventos definidos pero no emitidosMedioMedia1 & 2
7unused-returnValores de retorno no utilizadosMedioMedia1 & 2
8unenforced-viewLa función tiene decorador de vista pero modifica el estadoMedioMedia1
9tx-originDetecta el uso de la dirección de origen de la transacción como control de accesoMedioMedia2
10unused-argumentsArgumentos no utilizadosBajoMedia1 & 2
11reentrancy-benignDetecta cuando una variable de almacenamiento se escribe después de una llamada externa pero no se lee antesBajoMedia1 & 2
12reentrancy-eventsDetecta cuando un evento se emite después de una llamada externa, provocando eventos fuera de orden

La columna Cairo representa la(s) versión(es) del compilador para las cuales el detector es válido.

Impresoras

  • cfg: Exporta el CFG de cada función a un archivo .dot
  • callgraph: Exporta el grafo de llamadas de funciones a un archivo .dot

Cómo contribuir

Consulta la wiki sobre los siguientes temas:

  • Cómo escribir un detector
  • Cómo escribir una impresora

Limitaciones

  • Las funciones inlineadas no se manejan correctamente.
  • Dado que funciona sobre la representación SIERRA, no es posible reportar dónde está un error en el código fuente, solo podemos reportar instrucciones SIERRA/lo que está disponible en un programa SIERRA.
Bajo
Media
1 & 2
13dead-codeFunciones privadas nunca utilizadasBajoMedia1 & 2
14use-after-pop-frontDetecta el uso de un array o un span después de eliminar elemento(s)BajoMedia1 & 2