Uno scanner di sicurezza del codice universale e veloce, scritto in Rust. Batterie incluse: supporta 14 linguaggi, TUI per triage, segreti, audit post-quantistici, scansioni differenziali e altro ancora 𓃥
Scansione di sicurezza locale veloce per codice, segreti, dipendenze e rischio crittografico.
Integrato in 0sec, l'harness open per la cybersecurity.
npx foxguard .
npx foxguard . # zero install
pipx install foxguard # prebuilt CLI from PyPI
curl -fsSL https://foxguard.dev/install.sh | sh # prebuilt binary (macOS/Linux)
cargo install foxguard # from source
Gli installer binari standalone verificano i binari delle release GitHub rispetto a checksums.txt. I binari delle release pubblicano anche le attestazioni degli artefatti GitHub; usa gh attestation verify per la verifica manuale, oppure consulta release provenance.
I wheel PyPI supportano Python 3.9+ su Linux glibc 2.28+ (x86_64/ARM64), macOS
(Intel/Apple Silicon) e Windows x86_64. In un ambiente virtuale Python esistente,
usa python -m pip install foxguard invece. Questi installano la CLI nativa
senza un compilatore Rust o un download del binario a runtime; non è fornita
alcuna API Python. Gli utenti Alpine/musl dovrebbero usare i binari standalone
delle release 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
Integrazioni: GitHub App, VS Code, plugin Claude Code e server MCP.
foxguard-github-app scrive log JSON delimitati da newline. Le scansioni completate e fallite usano event=foxguard.scan.completed e event=foxguard.scan.failed, con campi delivery, installation, repository, PR, commit, duration e usage_scope per la correlazione. Mantieni gli identificatori come campi di log, non come etichette di metrica.
Imposta FOXGUARD_INTERNAL_ACCOUNTS su un elenco separato da virgole dei tuoi account e organizzazioni GitHub. La corrispondenza non distingue maiuscole/minuscole. Gli altri owner sono classificati come external; un elenco non impostato o un owner mancante produce unknown. L'attività esterna non è prova di un cliente pagante, e le scansioni non sono persone.
Il registry delle installazioni viene riconciliato rispetto a tutte le pagine dell'API delle installazioni della App di GitHub all'avvio e ogni ora. I refresh falliti mantengono lo stato esistente; i webhook concorrenti hanno la precedenza. I metadati sparsi dei webhook preservano i dettagli noti dell'account e i nomi dei repository osservati. Quei nomi non sono un inventario completo dei repository accessibili di un'installazione.
Persisti FOXGUARD_INSTALLATIONS_PATH e FOXGUARD_PULL_REQUEST_JOBS_PATH su storage durevole. Monitora foxguard.installations.reconcile_failed insieme ai fallimenti delle scansioni; foxguard.installations.reconciled riporta il totale e i conteggi delle installazioni internal/external/unknown dopo un refresh riuscito. Dimensiona FOXGUARD_PR_WORKERS in base alla memoria di picco misurata dello scanner e al limite di memoria del container: le terminazioni OOM dei processi figli possono verificarsi senza riavviare l'applicazione ospitata.
foxguard . # scan everything
foxguard diff main . # only new findings vs main
foxguard tui . # interactive terminal review
foxguard secrets . # leaked credentials and keys
foxguard sca . # dependency vulnerabilities from OSV
foxguard pqc . # post-quantum crypto audit
foxguard --format sarif . > results.sarif
foxguard --format semgrep-json . # Semgrep CLI-compatible JSON
Usa foxguard --fix src/ o foxguard --fix src/app.py per applicare sul posto le correzioni di taint supportate. I target vengono verificati rispetto alla directory di scansione canonica o al file selezionato; i finding al di fuori di tale ambito vengono saltati. Le correzioni di command-injection in Python aggiungono import subprocess quando necessario, preservando le docstring del modulo e gli import futuri. Rivedi le modifiche generate prima di committare.
I fallimenti di lettura file, metadati e attraversamento directory nello scanner di codice nativo escono con 2 invece di produrre un report riuscito o sovrascrivere una baseline. Le esclusioni intenzionali e i file non supportati, binari o sovradimensionati restano skip; ispeziona gli avvisi sui file saltati quando verifichi la copertura della scansione.