
Scanner de vulnerabilidades estático baseado em Tree-sitter, com correspondência de padrões e análise de fluxo de dados (taint-flow) para código-fonte em várias linguagens. Gera resultados como texto, JSON, CSV ou SARIF para integração com CI/CD.

Scanner de vulnerabilidades estático baseado em Tree-sitter com correspondência de padrões e análise de fluxo de taint.
| Linguagem | Extensões | Analisador | Regras Inclusas |
|---|---|---|---|
| Python | .py, .pyw, .pyi, .pyx | Sim | Sim |
| JavaScript | .js, .mjs, .cjs, .jsx, .vue, .svelte | Sim | Sim |
| TypeScript / TSX | .ts, .tsx, .mts, .cts | Sim | Sim (regras JS) |
| Java | .java | Sim | Sim |
| PHP | .php, .phtml | Sim | Sim |
| C# | .cs, .csx | Sim | Sim |
| Go | .go | Sim | Sim |
| Ruby | .rb | Sim | Sim |
| HTML | .html, .htm, .twig, .ejs, .hbs, ... | Sim | Sim |
| Templates Django | .html (sintaxe Django) | Sim | Sim (regras HTML) |
Atualmente não suportado: Razor (.cshtml), C/C++ (.c, .h).
Pré-requisitos:
Compilar a partir do código fonte:
git clone https://github.com/Corgea/Sighthound.git
cd Sighthound
cargo build --release
Caminho do binário: target/release/sighthound
Exportação de versão compatível com contentor Linux:
DOCKER_BUILDKIT=1 docker build \
--target export \
--output type=local,dest=./sighthound_release \
.
Ou execute ./build_all_platforms.sh.
# Auto-detect languages and run embedded rules
cargo run --bin sighthound -- /path/to/project
# Explicit language + custom rules path
cargo run --bin sighthound -- /path/to/project python rules/python
# Taint-only scan and JSON output
cargo run --bin sighthound -- --taint-analysis --output-format json /path/to/project > findings.json
# SARIF output for GitHub Code Scanning
cargo run --bin sighthound -- --output-format sarif /path/to/project > results.sarif
Formato da CLI:
sighthound [OPTIONS] <ROOT_DIR> [LANGUAGE] [RULES_PATH]
Execute sighthound --help para a lista completa de opções.
O formato de saída sarif escreve SARIF 2.1.0, que a Varredura de Código do GitHub ingere diretamente. Faça o upload a partir de um fluxo de trabalho para que os resultados apareçam em linha no pull request e na aba de Segurança do repositório:
Execute a varredura a partir da raiz do repositório e use . (ou o caminho absoluto da raiz do repositório) como <ROOT_DIR> para que os URIs dos artefatos SARIF permaneçam relativos ao repositório.
- 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
As regras são escritas em RON e suportam ambos:
mode: "search" para correspondência de padrõesmode: "taint" para análise de fonte/sumidouro/sanitizadorComece por aqui:
Comandos principais:
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
Portões de qualidade adicionais:
make complexity
make audit
make acceptance
cargo harness coverage --min=0
cargo harness crap --max=30