Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
caracal — Статический анализатор для смарт-контрактов Starknet | Kitploit
Инструменты/GitHubGitHub/crytic/caracal
Статический анализАнализ уязвимостейАнализ Кода
GitHubcrytic/caracal

caracal

Статический анализатор для смарт-контрактов Starknet

Репозиторий
1481172 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Caracal

Caracal — это инструмент статического анализа на основе представления SIERRA для смарт-контрактов Starknet.

Возможности

  • Детекторы для выявления уязвимого кода Cairo
  • Принтеры для вывода информации
  • Анализ потоков данных (taint analysis)
  • Инфраструктура анализа потоков данных
  • Простота запуска в проектах Scarb

Установка

Предварительно собранные бинарные файлы

Предварительно собранные бинарные файлы доступны на странице релизов. Если вы используете компилятор Cairo версии 1.x.x, используйте бинарный файл v0.1.x; если вы используете компилятор Cairo версии 2.x.x, используйте v0.2.x.

Сборка из исходного кода

Вам потребуются компилятор Rust и Cargo. Сборка из репозитория Git:

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

Сборка из локальной копии:

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

Использование

Список детекторов:

root@kitploit:~
caracal detectors

Список принтеров:

root@kitploit:~
caracal printers

Автономный режим

Для использования с отдельным файлом Cairo при наличии локального бинарного файла компилятора Cairo достаточно указать путь к файлу. В противном случае используется встроенный компилятор, и вам нужно указать путь к библиотеке corelib либо с помощью опции --corelib, либо установив переменную окружения CORELIB_PATH.
Запуск детекторов:

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

Запуск принтеров:

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

Проект Cairo

Если у вас есть проект Cairo с несколькими файлами и контрактами, вам может потребоваться указать конкретные контракты с помощью --contract-path. Если доступен локальный бинарный файл компилятора Cairo, он используется; в противном случае используется встроенный компилятор. В последнем случае также необходимо указать corelib, как описано выше для автономного режима. Путь — это каталог, где находится cairo_project.toml.
Запуск детекторов:

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

Запуск принтеров:

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

Scarb

Если у вас есть проект, использующий Scarb, необходимо добавить следующее в Scarb.toml:

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

[cairo]
sierra-replace-ids = true

Затем передайте путь к каталогу, где находится Scarb.toml. Запуск детекторов:

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

Запуск принтеров:

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

Детекторы

№ДетекторЧто он обнаруживаетВлияниеУверенностьCairo
1controlled-library-callБиблиотечные вызовы с хешом класса, контролируемым пользователемВысокийСредняя1 & 2
2unchecked-l1-handler-fromОбнаруживает L1-обработчики без проверки адреса отправителяВысокийСредняя1 & 2
3felt252-unsafe-arithmeticОбнаруживает операции, контролируемые пользователем, с типом felt252, который не защищает от переполнения/потери значимостиСреднийСредняя1 & 2
4reentrancyОбнаруживает, когда переменная хранилища читается перед внешним вызовом и записывается послеСреднийСредняя1 & 2
5read-only-reentrancyОбнаруживает, когда view-функция читает переменную хранилища, записанную после внешнего вызоваСреднийСредняя1 & 2
6unused-eventsОпределённые, но не эмитированные событияСреднийСредняя1 & 2
7unused-returnНеиспользуемые возвращаемые значенияСреднийСредняя1 & 2
8unenforced-viewФункция имеет декоратор view, но изменяет состояниеСреднийСредняя1
9tx-originОбнаруживает использование адреса источника транзакции для контроля доступаСреднийСредняя2
10unused-argumentsНеиспользуемые аргументыНизкийСредняя1 & 2
11reentrancy-benignОбнаруживает, когда переменная хранилища записывается после внешнего вызова, но не читается до негоНизкийСредняя1 & 2
12reentrancy-eventsОбнаруживает, когда событие эмитируется после внешнего вызова, что приводит к нарушению порядка событий

Столбец Cairo указывает версию(и) компилятора, для которых применим детектор.

Принтеры

  • cfg: Экспорт CFG каждой функции в файл .dot
  • callgraph: Экспорт графа вызовов функций в файл .dot

Как внести вклад

Ознакомьтесь с вики по следующим темам:

  • Как написать детектор
  • Как написать принтер

Ограничения

  • Встроенные (inlined) функции обрабатываются некорректно.
  • Поскольку работа производится над представлением SIERRA, невозможно указать, где именно в исходном коде находится ошибка; мы можем сообщать только об инструкциях SIERRA и о том, что доступно в программе SIERRA.
Скачать инструмент
Низкий
Средняя
1 & 2
13dead-codeЧастные функции, которые никогда не используютсяНизкийСредняя1 & 2
14use-after-pop-frontОбнаруживает использование массива или span после удаления элемента(ов)НизкийСредняя1 & 2