Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
caracal — Starknet 스마트 계약을 위한 정적 분석기 | Kitploit
도구/GitHubGitHub/crytic/caracal
Static AnalysisVulnerability AnalysisCode Analysis
GitHubcrytic/caracal

caracal

Starknet 스마트 계약을 위한 정적 분석기

저장소 보기
1481122년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Caracal

Caracal은 Starknet 스마트 계약을 위한 SIERRA 표현에 대한 정적 분석 도구입니다.

기능

  • 취약한 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 CLI 옵션 또는 CORELIB_PATH 환경 변수를 설정하여 corelib 라이브러리 경로를 전달해야 합니다.
탐지기 실행:

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 열은 해당 탐지기가 유효한 컴파일러 버전을 나타냅니다.

프린터

  • cfg: 각 함수의 CFG를 .dot 파일로 내보내기
  • callgraph: 함수 호출 그래프를 .dot 파일로 내보내기

기여 방법

다음 주제에 대한 위키를 확인하십시오:

  • 탐지기 작성 방법
  • 프린터 작성 방법

제한 사항

  • 인라인 함수는 올바르게 처리되지 않습니다.
  • SIERRA 표현 위에서 동작하므로 소스 코드에서 오류 위치를 보고할 수 없으며, SIERRA 명령어/SIERRA 프로그램에서 사용 가능한 정보만 보고할 수 있습니다.
도구 다운로드
번호탐지기탐지 대상영향신뢰도Cairo
1controlled-library-call사용자 제어 클래스 해시를 사용한 라이브러리 호출높음중간1 & 2
2unchecked-l1-handler-fromfrom 주소 확인 없는 L1 핸들러 감지높음중간1 & 2
3felt252-unsafe-arithmeticoverflow/underflow에 안전하지 않은 felt252 유형의 사용자 제어 연산 감지중간중간1 & 2
4reentrancy외부 호출 전에 저장 변수를 읽고 외부 호출 후에 쓰는 경우 감지중간중간1 & 2
5read-only-reentrancyview 함수가 외부 호출 후에 쓰여진 저장 변수를 읽는 경우 감지중간중간1 & 2
6unused-events정의되었지만 발생되지 않은 이벤트중간중간1 & 2
7unused-return사용되지 않은 반환 값중간중간1 & 2
8unenforced-viewview 데코레이터가 있지만 상태를 수정하는 함수중간중간1
9tx-origin트랜잭션 원본 주소를 접근 제어로 사용하는 경우 감지중간중간2
10unused-arguments사용되지 않은 인수낮음중간1 & 2
11reentrancy-benign외부 호출 후에 저장 변수가 쓰여지지만 호출 전에 읽히지 않는 경우 감지낮음중간1 & 2
12reentrancy-events외부 호출 후 이벤트가 발생하여 순서가 어긋난 이벤트가 발생하는 경우 감지낮음중간1 & 2
13dead-code사용되지 않은 private 함수낮음중간1 & 2
14use-after-pop-front요소 제거 후 배열 또는 span 사용 감지낮음중간1 & 2