
Tree-sitter based static vulnerability scanner with pattern matching and taint-flow analysis for multi-language source code. Outputs findings as text, JSON, CSV, or SARIF for CI/CD integration.

Статический сканер уязвимостей на основе Tree-sitter с поиском по образцу и анализом потока данных (taint-flow analysis).
| Язык | Расширения | Парсер | Встроенные правила |
|---|---|---|---|
| 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 templates | .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 -- /путь/к/проекту
# Явное указание языка и путь к пользовательским правилам
cargo run --bin sighthound -- /путь/к/проекту python rules/python
# Сканирование только в режиме заражения и вывод в JSON
cargo run --bin sighthound -- --taint-analysis --output-format json /путь/к/проекту > findings.json
# Вывод SARIF для GitHub Code Scanning
cargo run --bin sighthound -- --output-format sarif /путь/к/проекту > results.sarif
Форма интерфейса командной строки:
sighthound [ОПЦИИ] <КОРНЕВАЯ_ДИР> [ЯЗЫК] [ПУТЬ_К_ПРАВИЛАМ]
Выполните sighthound --help для получения полного списка опций.
Формат вывода sarif генерирует SARIF 2.1.0, который напрямую обрабатывается
GitHub Code Scanning. Загрузите его из рабочего процесса, чтобы результаты
отображались непосредственно в pull request и на вкладке Security репозитория:
Запустите сканирование из корня репозитория и используйте . (или абсолютный
путь к корню репозитория) в качестве <ROOT_DIR>, чтобы URI артефактов SARIF
оставались относительными к репозиторию.
- 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 # исправление + форматирование + линтер + тесты + отчёт о подавлениях
make pre-commit # зафиксированные файлы Rust (хук)
make pre-push # проверки на push
make ci # строгий конвейер CI
Дополнительные ворота качества:
make complexity
make audit
make acceptance
cargo harness coverage --min=0
cargo harness crap --max=30