Быстрый универсальный сканер безопасности кода, написанный на Rust. Всё включено: поддержка 14 языков, TUI для триажа, секреты, постквантовые аудиты, сканирование с учётом изменений и многое другое 𓃥
Быстрое локальное сканирование безопасности кода, секретов, зависимостей и криптографических рисков.
Интегрирован в 0sec, открытый инструмент кибербезопасности.
npx foxguard .
npx foxguard . # без установки
pipx install foxguard # готовый CLI из PyPI
curl -fsSL https://foxguard.dev/install.sh | sh # готовый бинарник (macOS/Linux)
cargo install foxguard # из исходников
Автономные установщики бинарников проверяют бинарники релизов GitHub по checksums.txt. Бинарники релизов также публикуют аттестации артефактов GitHub; для ручной проверки используйте gh attestation verify или см. происхождение релиза.
Колёса PyPI поддерживают Python 3.9+ на Linux glibc 2.28+ (x86_64/ARM64), macOS
(Intel/Apple Silicon) и Windows x86_64. В существующем виртуальном окружении Python
используйте python -m pip install foxguard. Они устанавливают нативный
CLI без компилятора Rust или загрузки бинарника во время выполнения; Python API
не предоставляется. Пользователям Alpine/musl следует использовать автономные бинарники релизов Linux.
GitHub Action:
- uses: 0sec-labs/foxguard/[email protected]
with:
path: .
severity: medium
fail-on-findings: "true"
upload-sarif: "true"
pre-commit:
repos:
- repo: https://github.com/0sec-labs/foxguard
rev: v0.14.0
hooks:
- id: foxguard
Интеграции: GitHub App, VS Code, плагин Claude Code и MCP-сервер.
foxguard-github-app записывает логи в формате JSON с разделителями-переводами строк. Завершённые и неудачные
сканирования используют event=foxguard.scan.completed и event=foxguard.scan.failed с
полями доставки, установки, репозитория, PR, коммита, длительности и usage_scope
для корреляции. Храните идентификаторы как поля логов, а не как метки метрик.
Задайте FOXGUARD_INTERNAL_ACCOUNTS как список ваших собственных аккаунтов и организаций GitHub,
разделённых запятыми. Сопоставление нечувствительно к регистру. Другие владельцы
классифицируются как external; неустановленный список или отсутствующий владелец даёт unknown.
Внешняя активность не является доказательством платящего клиента, а сканирования — не люди.
Реестр установок сверяется со всеми страницами API установок GitHub App при запуске и ежечасно. Неудачные обновления сохраняют существующее состояние; параллельные вебхуки имеют приоритет. Разреженные метаданные вебхуков сохраняют известные сведения об аккаунте и наблюдаемые имена репозиториев. Эти имена не являются полным перечнем доступных репозиториев установки.
Храните FOXGUARD_INSTALLATIONS_PATH и FOXGUARD_PULL_REQUEST_JOBS_PATH на
долговременном хранилище. Следите за foxguard.installations.reconcile_failed наряду с
сбоями сканирования; foxguard.installations.reconciled сообщает общее число и
количество внутренних/внешних/неизвестных установок после успешного обновления.
Подбирайте размер FOXGUARD_PR_WORKERS исходя из измеренного пикового потребления памяти сканером и
лимита памяти контейнера: дочерние процессы могут быть убиты из-за OOM без перезапуска
размещённого приложения.
foxguard . # сканировать всё
foxguard diff main . # только новые находки относительно main
foxguard tui . # интерактивный просмотр в терминале
foxguard secrets . # утёкшие учётные данные и ключи
foxguard sca . # уязвимости зависимостей из OSV
foxguard pqc . # постквантовый криптоаудит
foxguard --format sarif . > results.sarif
foxguard --format semgrep-json . # JSON, совместимый с Semgrep CLI
Используйте foxguard --fix src/ или foxguard --fix src/app.py, чтобы применить поддерживаемые исправления
taint на месте. Цели проверяются по каноническому каталогу сканирования или
выбранному файлу; находки вне этой области пропускаются. Исправления command-injection для Python
добавляют import subprocess при необходимости, сохраняя docstring модуля и future
imports. Просмотрите сгенерированные изменения перед коммитом.
Ошибки чтения файлов, метаданных и обхода каталогов в нативном сканере кода
приводят к выходу с кодом 2 вместо формирования успешного отчёта или перезаписи базовой линии.
Намеренные исключения и неподдерживаемые, бинарные или слишком большие файлы остаются пропусками;
проверяйте уведомления о пропущенных файлах при проверке покрытия сканирования.