Un scanner de sécurité de code universel et rapide, écrit en Rust. Fonctionnalités incluses : prend en charge 14 langages, TUI pour le triage, secrets, audits post-quantiques, analyses différentielles et plus encore 𓃥
Analyse de sécurité locale rapide pour le code, les secrets, les dépendances et les risques cryptographiques.
Intégré à 0sec, le harnais open source de cybersécurité.
npx foxguard .
npx foxguard . # sans installation
pipx install foxguard # CLI précompilée depuis PyPI
curl -fsSL https://foxguard.dev/install.sh | sh # binaire précompilé (macOS/Linux)
cargo install foxguard # depuis les sources
Les installateurs de binaires autonomes vérifient les binaires des releases GitHub par rapport à checksums.txt. Les binaires de release publient également des attestations d'artefacts GitHub ; utilisez gh attestation verify pour une vérification manuelle, ou consultez la provenance des releases.
Les wheels PyPI prennent en charge Python 3.9+ sur Linux glibc 2.28+ (x86_64/ARM64), macOS (Intel/Apple Silicon) et Windows x86_64. Dans un environnement virtuel Python existant, utilisez plutôt python -m pip install foxguard. Ces installations fournissent la CLI native sans compilateur Rust ni téléchargement de binaire à l'exécution ; aucune API Python n'est fournie. Les utilisateurs d'Alpine/musl doivent utiliser les binaires de release Linux autonomes.
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
Intégrations : GitHub App, VS Code, plugin Claude Code et serveur MCP.
foxguard-github-app écrit des journaux JSON délimités par des retours à la ligne. Les analyses terminées et échouées utilisent event=foxguard.scan.completed et event=foxguard.scan.failed, avec les champs de livraison, d'installation, de dépôt, de PR, de commit, de durée et usage_scope pour la corrélation. Conservez les identifiants comme champs de journal, et non comme étiquettes de métriques.
Définissez FOXGUARD_INTERNAL_ACCOUNTS sur une liste d' comptes et d'organisations GitHub qui vous appartiennent, séparés par des virgules. La correspondance est insensible à la casse. Les autres propriétaires sont classés comme external ; une liste non définie ou un propriétaire manquant produit unknown. L'activité externe ne prouve pas qu'il s'agit d'un client payant, et les analyses ne sont pas des personnes.
Le registre des installations est réconcilié avec toutes les pages de l'API d'installation de la GitHub App au démarrage et toutes les heures. Les rafraîchissements échoués conservent l'état existant ; les webhooks concurrents ont la priorité. Les métadonnées de webhook partielles préservent les détails de compte connus et les noms de dépôts observés. Ces noms ne constituent pas un inventaire complet des dépôts accessibles d'une installation.
Persistez FOXGUARD_INSTALLATIONS_PATH et FOXGUARD_PULL_REQUEST_JOBS_PATH sur un stockage durable. Surveillez foxguard.installations.reconcile_failed en parallèle des échecs d'analyse ; foxguard.installations.reconciled rapporte le total et les nombres d'installations internes/externes/inconnues après un rafraîchissement réussi. Dimensionnez FOXGUARD_PR_WORKERS en fonction de la mémoire de pointe mesurée du scanner et de la limite mémoire du conteneur : des processus enfants tués par OOM peuvent survenir sans redémarrer l'application hébergée.
foxguard . # tout analyser
foxguard diff main . # uniquement les nouveaux résultats par rapport à main
foxguard tui . # revue interactive dans le terminal
foxguard secrets . # identifiants et clés divulgués
foxguard sca . # vulnérabilités des dépendances via OSV
foxguard pqc . # audit cryptographique post-quantique
foxguard --format sarif . > results.sarif
foxguard --format semgrep-json . # JSON compatible avec la CLI Semgrep
Utilisez foxguard --fix src/ ou foxguard --fix src/app.py pour appliquer sur place les corrections de teinte prises en charge. Les cibles sont vérifiées par rapport au répertoire d'analyse canonique ou au fichier sélectionné ; les résultats hors de ce périmètre sont ignorés. Les corrections d'injection de commandes Python ajoutent import subprocess si nécessaire, en préservant les docstrings de module et les imports futurs. Relisez les modifications générées avant de les committer.