
Tree-sitter 기반 정적 취약점 스캐너로, 패턴 매칭 및 테인트 플로우 분석을 통해 다중 언어 소스 코드를 분석합니다. 결과를 텍스트, JSON, CSV 또는 SARIF 형식으로 출력하여 CI/CD 통합에 사용할 수 있습니다.
| 언어 | 확장자 | 파서 | 번들 규칙 |
|---|
| Python | .py, .pyw, .pyi, .pyx | 예 | 예 |
| JavaScript | .js, .mjs, .cjs, .jsx, .vue, .svelte | 예 | 예 |
| TypeScript / TSX | .ts, .tsx, .mts, .cts | 예 | 예 (JS 규칙) |
| Java | .java | 예 | 예 |
| PHP | .php, .phtml | 예 | 예 |
| C# | .cs, .csx | 예 | 예 |
| Go | .go | 예 | 예 |
| Ruby | .rb | 예 | 예 |
| HTML | .html, .htm, .twig, .ejs, .hbs, ... | 예 | 예 |
| Django 템플릿 | .html (Django 구문) | 예 | 예 (HTML 규칙) |
현재 지원되지 않음: Razor (.cshtml), C/C++ (.c, .h).
필수 조건:
소스에서 빌드:
git clone https://github.com/Corgea/Sighthound.git
cd Sighthound
cargo build --release
바이너리 경로: target/release/sighthound
Linux 컨테이너 호환 릴리즈 내보내기:
DOCKER_BUILDKIT=1 docker build \
--target export \
--output type=local,dest=./sighthound_release \
.
또는 ./build_all_platforms.sh 실행.
# 언어 자동 감지 및 내장 규칙 실행
cargo run --bin sighthound -- /path/to/project
# 명시적 언어 + 사용자 정의 규칙 경로
cargo run --bin sighthound -- /path/to/project python rules/python
# 오염 분석만 수행하고 JSON 출력
cargo run --bin sighthound -- --taint-analysis --output-format json /path/to/project > findings.json
# GitHub Code Scanning용 SARIF 출력
cargo run --bin sighthound -- --output-format sarif /path/to/project > results.sarif
CLI 구조:
sighthound [OPTIONS] <ROOT_DIR> [LANGUAGE] [RULES_PATH]
전체 옵션 목록은 sighthound --help를 실행하세요.
sarif 출력 형식은 SARIF 2.1.0을 작성하며, GitHub Code Scanning에서 직접 수집합니다. 워크플로우에서 업로드하면 풀 리퀘스트와 저장소의 보안 탭에 결과가 인라인으로 표시됩니다.
저장소 루트에서 스캔을 실행하고 .(또는 저장소 루트의 절대 경로)를 <ROOT_DIR>으로 사용하여 SARIF 아티팩트 URI가 저장소 상대 경로를 유지하도록 합니다.
- name: Run Sighthound
run: sighthound --output-format sarif . > results.sarif
- name: Upload SARIF
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: results.sarif
규칙은 RON으로 작성되며 다음 두 가지 모드를 지원합니다:
mode: "search" : 패턴 매칭mode: "taint" : 소스/싱크/샘니타이저 분석여기서 시작하세요:
핵심 명령어:
make check # fix + format + lint + test + suppression report
make pre-commit # staged Rust files (hook)
make pre-push # push gate checks
make ci # strict CI pipeline
추가 품질 게이트:
make complexity
make audit
make acceptance
cargo harness coverage --min=0
cargo harness crap --max=30