Un escáner de seguridad de código rápido y universal, escrito en Rust. Baterías incluidas: soporta 14 idiomas, TUI para triaje, secretos, auditorías post-cuánticas, escaneos con detección de diferencias y más 𓃥
Escaneo de seguridad local rápido para código, secretos, dependencias y riesgo criptográfico.
Integrado en 0sec, el arnés de ciberseguridad de código abierto.
npx foxguard .
npx foxguard . # sin instalación
pipx install foxguard # CLI precompilada desde PyPI
curl -fsSL https://foxguard.dev/install.sh | sh # binario precompilado (macOS/Linux)
cargo install foxguard # desde el código fuente
Los instaladores de binarios independientes verifican los binarios de las releases de GitHub contra checksums.txt. Los binarios de release también publican atestaciones de artefactos de GitHub; usa gh attestation verify para verificación manual, o consulta procedencia de la release.
Los wheels de PyPI son compatibles con Python 3.9+ en Linux glibc 2.28+ (x86_64/ARM64), macOS (Intel/Apple Silicon) y Windows x86_64. En un entorno virtual de Python existente, usa python -m pip install foxguard en su lugar. Estos instalan la CLI nativa sin un compilador de Rust ni una descarga de binario en tiempo de ejecución; no se proporciona API de Python. Los usuarios de Alpine/musl deben usar los binarios de release independientes para 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
Integraciones: GitHub App, VS Code, plugin de Claude Code y servidor MCP.
foxguard-github-app escribe logs JSON delimitados por saltos de línea. Los escaneos completados y fallidos usan event=foxguard.scan.completed y event=foxguard.scan.failed, con campos de entrega, instalación, repositorio, PR, commit, duración y usage_scope para correlación. Mantén los identificadores como campos de log, no como etiquetas de métricas.
Configura FOXGUARD_INTERNAL_ACCOUNTS con una lista separada por comas de tus propias cuentas y organizaciones de GitHub. La coincidencia no distingue mayúsculas de minúsculas. Otros propietarios se clasifican como external; una lista no configurada o un propietario ausente produce unknown. La actividad externa no es prueba de un cliente de pago, y los escaneos no son personas.
El registro de instalaciones se reconcilia contra todas las páginas de la API de instalaciones de la App de GitHub al inicio y cada hora. Las actualizaciones fallidas conservan el estado existente; los webhooks concurrentes tienen prioridad. Los metadatos de webhook dispersos preservan los detalles de cuenta conocidos y los nombres de repositorio observados. Esos nombres no son un inventario completo de los repositorios accesibles de una instalación.
Persiste FOXGUARD_INSTALLATIONS_PATH y FOXGUARD_PULL_REQUEST_JOBS_PATH en almacenamiento duradero. Monitorea foxguard.installations.reconcile_failed junto con los fallos de escaneo; foxguard.installations.reconciled informa el total y los recuentos de instalaciones internas/externas/desconocidas tras una actualización exitosa. Dimensiona FOXGUARD_PR_WORKERS según el pico de memoria medido del escáner y el límite de memoria del contenedor: los procesos hijos pueden ser terminados por OOM sin reiniciar la aplicación alojada.
foxguard . # escanear todo
foxguard diff main . # solo hallazgos nuevos vs main
foxguard tui . # revisión interactiva en terminal
foxguard secrets . # credenciales y claves filtradas
foxguard sca . # vulnerabilidades de dependencias desde OSV
foxguard pqc . # auditoría de criptografía post-cuántica
foxguard --format sarif . > results.sarif
foxguard --format semgrep-json . # JSON compatible con la CLI de Semgrep
Usa foxguard --fix src/ o foxguard --fix src/app.py para aplicar correcciones de taint compatibles in situ. Los objetivos se verifican contra el directorio de escaneo canónico o el archivo seleccionado; los hallazgos fuera de ese alcance se omiten. Las correcciones de inyección de comandos en Python añaden import subprocess cuando es necesario, preservando los docstrings del módulo y los imports futuros. Revisa los cambios generados antes de hacer commit.