
Scanner di vulnerabilità statico basato su Tree-sitter con pattern matching e analisi del flusso di taint per codice sorgente multi-linguaggio. Output dei risultati come testo, JSON, CSV o SARIF per l'integrazione CI/CD.

Scanner di vulnerabilità statico basato su Tree-sitter con pattern matching e analisi del flusso di taint.
| Linguaggio | Estensioni | Parser | Regole incluse |
|---|---|---|---|
| Python | .py, .pyw, .pyi, .pyx | Sì | Sì |
| JavaScript | .js, .mjs, .cjs, .jsx, .vue, .svelte | Sì | Sì |
| TypeScript / TSX | .ts, .tsx, .mts, .cts | Sì | Sì (regole JS) |
| Java | .java | Sì | Sì |
| PHP | .php, .phtml | Sì | Sì |
| C# | .cs, .csx | Sì | Sì |
| Go | .go | Sì | Sì |
| Ruby | .rb | Sì | Sì |
| HTML | .html, .htm, .twig, .ejs, .hbs, ... | Sì | Sì |
| Template Django | .html (sintassi Django) | Sì | Sì (regole HTML) |
Attualmente non supportati: Razor (.cshtml), C/C++ (.c, .h).
Prerequisiti:
Compilazione dai sorgenti:
git clone https://github.com/Corgea/Sighthound.git
cd Sighthound
cargo build --release
Percorso del binario: target/release/sighthound
Esportazione compatibile con container Linux:
DOCKER_BUILDKIT=1 docker build \
--target export \
--output type=local,dest=./sighthound_release \
.
Oppure eseguire ./build_all_platforms.sh.
# Rilevamento automatico dei linguaggi ed esecuzione delle regole incorporate
cargo run --bin sighthound -- /percorso/del/progetto
# Linguaggio esplicito + percorso regole personalizzate
cargo run --bin sighthound -- /percorso/del/progetto python rules/python
# Solo analisi taint e output JSON
cargo run --bin sighthound -- --taint-analysis --output-format json /percorso/del/progetto > findings.json
# Output SARIF per GitHub Code Scanning
cargo run --bin sighthound -- --output-format sarif /percorso/del/progetto > results.sarif
Sintassi della CLI:
sighthound [OPZIONI] <DIR_ROOT> [LINGUAGGIO] [PERCORSO_REGOLE]
Eseguire sighthound --help per l'elenco completo delle opzioni.
Il formato di output sarif produce SARIF 2.1.0, che GitHub Code Scanning
utilizza direttamente. Caricatelo da un workflow in modo che i risultati appaiano inline
nella pull request e nella scheda "Security" del repository:
Eseguire la scansione dalla root del repository e usare . (o il percorso assoluto
della root del repository) come <DIR_ROOT> in modo che gli URI degli artefatti SARIF
rimangano relativi al repository.
- name: Esegui Sighthound
run: sighthound --output-format sarif . > results.sarif
- name: Carica SARIF
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: results.sarif
Le regole sono scritte in RON e supportano entrambe le modalità:
mode: "search" per il pattern matchingmode: "taint" per l'analisi sorgente/sink/sanitizerIniziare da qui:
Comandi principali:
make check # correzione + formattazione + lint + test + report soppressioni
make pre-commit # file Rust nello staging (hook)
make pre-push # controlli gate per push
make ci # pipeline CI rigorosa
Gate di qualità aggiuntivi:
make complexity
make audit
make acceptance
cargo harness coverage --min=0
cargo harness crap --max=30