0sec-labs/foxguard

GitHub: 0sec-labs/foxguard

一款用 Rust 编写的极速本地安全扫描器,集成漏洞检测、密钥泄露发现与后量子密码审计,快到可以在每次保存时运行。

Stars: 245 | Forks: 9

foxguard logo

𓃥 foxguard 𓃦

单一 Rust 二进制文件中的快速本地安全扫描。
扫描 · 差异 · 密钥 · 后量子密码审计 · 交互式 TUI 分类
涵盖 11 种语言的 170+ 条内置规则 · 跨文件污点追踪 · 兼容 Semgrep 的 YAML 桥接

foxguard.dev · npm · crates.io

CI foxguard: clean crates.io npm GitHub stars

foxguard scan demo

foxguard TUI findings list with source/sink dataflow
foxguard tui . — interactive triage with scan, diff, secrets, and PQ modes. Launch post.

foxguard 是一款可以在每次保存时运行的安全扫描器。它是一个单一的 Rust 二进制文件,包含 170 多条涵盖 10 种源语言的内置规则,以及通过兼容 Semgrep 的 YAML 规则包支持的 C 语言(已发布内核/dirty-frag 类别)、跨文件污点追踪、兼容 Semgrep 的 YAML 加载功能,以及四种顶级模式——常规扫描、分支差异比对、密钥检测和后量子密码审计——所有这些都可以通过同一个 CLI 或交互式 TUI 访问。 它的速度快到足以用于 pre-commit 钩子,在真实的代码仓库中,`--changed` 路径的运行只需几毫秒。输出格式包括:终端、JSON、SARIF(用于 GitHub Code Scanning)和 CycloneDX 1.6 CBOM。 ## 快速开始 ``` npx foxguard . # scan the repo npx foxguard pqc . # post-quantum crypto audit npx foxguard --format cbom . # CycloneDX 1.6 CBOM for compliance npx foxguard tui . # interactive triage (scan, diff, secrets, pqc) ``` 其他常用标志: ``` npx foxguard --changed . # only modified files npx foxguard diff main . # new findings vs target branch npx foxguard --explain . # source-to-sink dataflow traces npx foxguard --github-pr 42 . # post as PR review comments npx foxguard secrets . # leaked credentials and private keys npx foxguard init # install local pre-commit hook ``` ## 四大模式 | 模式 | 命令 | 功能描述 | |------|---------|--------------| | **扫描** | `foxguard .` | 常规安全扫描。170 多条内置规则,涵盖 JavaScript/TypeScript、Python、Go、Ruby、Java、PHP、Rust、C#、Swift、Kotlin。针对 Express、Next.js、Django、Flask、FastAPI、Rails、Spring、Laravel、Gin、.NET 和 iOS 的框架感知检查。针对 Python、JS、Go、Kotlin 的带有跨文件摘要的过程内污点流分析。 | | **差异** | `foxguard diff main .` | 仅显示自目标分支以来新增的发现。与 `--changed` 搭配使用可仅针对暂存/未暂存的文件。 | | **密钥** | `foxguard secrets .` | AWS 密钥、GitHub/GitLab/Slack/Stripe 令牌、私钥。支持脱敏输出和基线。 | | **PQC** | `foxguard pqc .` | 后量子密码审计。针对 5 种语言以及 TLS/配置文件的 PQ 易受攻击密码规则。每条发现都会标注其 CNSA 2.0 迁移截止日期。支持 FN-DSA (FIPS 206) 和 HQC 识别。 | 这四种模式都可以通过 `foxguard tui .` 访问——这是一种交互式分类工具,提供审查、基线、忽略、严重性覆盖、置信度过滤以及 CNSA 2.0 合规性面板功能。 ## 开箱即用的其他功能 | 领域 | 包含内容 | |------|--------------| | **输出** | 终端、JSON、SARIF(GitHub Code Scanning)、CycloneDX 1.6 CBOM(`--format cbom`)。每个 CBOM 组件都链接回源代码位置和严重性。 | | **Semgrep 兼容性** | 通过 `--rules` 加载 Semgrep/OpenGrep 的 YAML 子集。已在 CI 中针对真实的 `semgrep` CLI 进行了一致性测试。参见 [`COMPATIBILITY.md`](./COMPATIBILITY.md)。 | | **CI 集成** | 原生 GitHub Action(见下文)、SARIF 上传、用于 PR 审查评论的 `--github-pr`,以及基于发现结果的退出代码。 | | **配置** | `.foxguard.yml` 支持按规则启用/禁用、严重性覆盖、熵和污点跳数阈值以及按规则配置选项。 | ## 后量子密码审计 NSA 的 CNSA 2.0 套件([CSI,2022 年 9 月;FAQ v2.1,2024 年 12 月](https://media.defense.gov/2022/Sep/07/2003071836/-1/-1/0/CSI_CNSA_2.0_FAQ_.PDF))强制要求在特定截止日期前专属使用 ML-KEM 和 ML-DSA。软件和固件签名是最早的类别——到 2030 年必须专属使用——其次是传统网络、操作系统和 Web 浏览器,将持续到 2033 年。foxguard 针对易受 PQ 攻击算法产生的每条发现,都会在输出中附带匹配的截止日期。 ``` foxguard pqc . ``` ``` src/tls/client.go 42:14 HIGH go/pq-vulnerable-crypto (CWE-327) ECDH P-256 is not post-quantum safe. CNSA 2.0 mandates ML-KEM-1024 for NSS; ML-KEM-768 is the NIST default for commercial use. CNSA 2.0 deadline: traditional networking equipment, 2030. WARNING 1 PQ finding in 18 files (0.04s): 1 high, 0 medium, 0 low CNSA 2.0 migration: at-risk (1 finding with an NSA transition deadline) ``` 据我们所知,foxguard 是第一款为每条 PQ 发现标注 CNSA 2.0 迁移截止日期的开源(OSS)源代码扫描器。修复指南根据 CNSA 2.0 算法表,针对 NSS 工作负载推荐使用 ML-KEM-1024 / ML-DSA-87,针对商业用途推荐使用 ML-KEM-768 / ML-DSA-65。 **CBOM 导出。** `foxguard --format cbom .` 可生成 CycloneDX 1.6 密码材料清单。每个组件(算法、密钥、协议)都会链接回产生它的源代码位置以及该位置上任何发现的严重性。IBM 的 [CBOMkit](https://github.com/IBM/cbomkit)、[sonar-cryptography](https://github.com/IBM/sonar-cryptography) 和 [cdxgen](https://github.com/CycloneDX/cdxgen) 都提供 CBOM 输出;foxguard 的独特贡献在于扫描和清单是同一个产物,因此 `crypto-agility` 评分和 CNSA 2.0 标注会随 BOM 一起提供。 **规则覆盖范围。** 针对 Python、JavaScript/TypeScript、Go、Java 和 Rust 提供易受 PQ 攻击的密码规则;同时还会扫描 TLS 配置文件(OpenSSL、nginx、Apache)以查找非 PQ 密码套件。 ## 安装 ``` npx foxguard . # no install needed curl -fsSL https://foxguard.dev/install.sh | sh # prebuilt binary (macOS/Linux) cargo install foxguard # crates.io ``` **编辑器和智能体:** - [VS Code 扩展](https://marketplace.visualstudio.com/items?itemName=peaktwilight.foxguard) 在保存时进行扫描并内联显示发现结果。 - [Claude Code 插件](./plugins/claude-code) 会在 Claude 写入或编辑文件后自动扫描,添加 `/foxguard:*` 扫描/分类/PQ/密钥技能,并将安全编码默认配置注入到智能体会话中。 ``` claude --plugin-dir ./plugins/claude-code ``` 在 Claude Code 内部运行 `/foxguard:setup` 以验证扫描器是否可用。有关本地插件加载、钩子行为和市场状态,请参见 [Claude Code 集成](docs/claude-code-integration.md)。 ## CI 集成 ``` name: Security on: [push, pull_request] jobs: foxguard: runs-on: ubuntu-latest permissions: security-events: write steps: - uses: actions/checkout@v4 - uses: 0sec-labs/foxguard/action@v0.8.0 with: path: . severity: medium fail-on-findings: "true" upload-sarif: "true" ``` 发现结果将显示在 **Security → Code Scanning** 中。在其他任何 CI 上使用:`npx foxguard@latest --format sarif . > out.sarif`。有关 Claude Code 和其他智能体/编辑器钩子,请参见 [docs/claude-code-integration.md](docs/claude-code-integration.md)。 **Pre-commit:** ``` repos: - repo: https://github.com/0sec-labs/foxguard rev: v0.8.0 hooks: - id: foxguard ``` ## 性能基准 可通过 `./benchmarks/run.sh` 复现。以下数据来自搭载 Apple Silicon 的笔记本电脑上使用 `foxguard 0.6.2`、`semgrep 1.156.0`、`tokei 14.0.0` 进行的本地运行。LoC(代码行数)由 tokei 统计,仅限目标语言(不包含第三方 HTML/JSON)。 | 仓库 | 文件数 | LoC | foxguard | Semgrep | 加速比 | |------|-------|-----|----------|---------|---------| | express (框架) | 141 | 15,804 JS | **0.276s** | 6.09s | **22x** | | flask (框架) | 83 | 14,029 Py | **0.333s** | 6.51s | **20x** | | gin (框架) | 99 | 17,669 Go | **0.499s** | 4.95s | **10x** | | **sentry (生产环境)** | **8,539** | **1,291,606 Py** | **35.4s** | 194.0s | **5x** | Sentry 是包含约 130 万行 Python 代码的压力测试目标:foxguard 在大约 35 秒内扫描完整个代码树;而使用 `--config auto` 的 Semgrep 耗时约 3 分 14 秒。在同一台机器上运行——可使用 `./benchmarks/run.sh` 在本地复现(添加 `BENCH_SKIP_LARGE=1` 可跳过 sentry)。复现步骤请参见 [`benchmarks/README.md`](./benchmarks/README.md)。 ## 规则 170 多条内置规则,涵盖 10 种源语言,以及通过兼容 Semgrep 的 YAML 规则包支持的 C 语言(已发布内核/dirty-frag 类别),覆盖 SQL 注入、XSS、SSRF、命令注入、硬编码密钥、弱加密、不安全的反序列化、日志注入、易受 PQ 攻击的密码、密码敏捷性以及针对特定框架的检查。完整的单条规则覆盖率、精确度级别和误报处理方法详见 [docs/precision.md](docs/precision.md) 以及 [foxguard.dev 上的规则页面](https://foxguard.dev/rules)。 ## 配置 foxguard 会从扫描路径开始自动向上查找并加载 `.foxguard.yml`。 ``` scan: baseline: .foxguard/baseline.json rules: ./semgrep-rules enable_rules: [py/no-sql-injection, py/no-xss] # optional allowlist disable_rules: [py/no-eval] # optional denylist severity_overrides: py/no-hardcoded-secret: medium secrets: baseline: .foxguard/secrets-baseline.json exclude_paths: [fixtures, testdata] ``` 行内抑制可在目标行使用 `// foxguard: ignore[rule-id]` 或 `# foxguard: ignore`。完整的配置参考、规则选项和阈值调整记录在 [foxguard.dev/docs](https://foxguard.dev/docs)。 ## 局限性 foxguard 并非 Semgrep 或 OpenGrep 的完全替代品。其预期模型为:使用 foxguard 内置规则获取快速的本地反馈,使用兼容 Semgrep/OpenGrep 的 YAML 子集作为过渡桥梁,当需要最广泛的外部规则生态系统时再使用 Semgrep/OpenGrep 本身。这种边界设定保持了本地扫描的快速性,并使兼容性声明具备可测试性。 ## 贡献 添加规则只需实现一个 trait 的结构体。参见 [`CONTRIBUTING.md`](./CONTRIBUTING.md)。 ## 0sec Labs 的一部分 **面向 Agentic AI 时代的开源对抗性安全。** foxguard 是该技术栈的一部分: - **[pwnkit](https://github.com/0sec-labs/pwnkit)** — AI 智能体渗透测试工具(检测) - **[foxguard](https://github.com/0sec-labs/foxguard)** — Rust 安全扫描器(防范) - **[opensoar](https://github.com/opensoar-hq/opensoar-core)** — Python 原生 SOAR 平台(响应) ## 许可证 MIT
标签:DevSecOps, lint, Rust, SAST, Semgrep兼容, StruQ, TUI, 上游代理, 代码安全, 可视化界面, 后量子密码学, 安全助手, 安全扫描, 密钥泄露, 差异扫描, 时序注入, 本地扫描, 机密检测, 漏洞枚举, 盲注攻击, 终端用户界面, 网络流量审计, 跨文件污点分析, 通知系统, 错误基检测, 静态代码分析, 静态分析工具