0sec-labs/foxguard
GitHub: 0sec-labs/foxguard
一款用 Rust 编写的极速本地安全扫描器,集成漏洞检测、密钥泄露发现与后量子密码审计,快到可以在每次保存时运行。
Stars: 245 | Forks: 9
𓃥 foxguard 𓃦
单一 Rust 二进制文件中的快速本地安全扫描。
扫描 · 差异 · 密钥 · 后量子密码审计 · 交互式 TUI 分类
涵盖 11 种语言的 170+ 条内置规则 · 跨文件污点追踪 · 兼容 Semgrep 的 YAML 桥接
foxguard.dev · npm · crates.io
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, 上游代理, 代码安全, 可视化界面, 后量子密码学, 安全助手, 安全扫描, 密钥泄露, 差异扫描, 时序注入, 本地扫描, 机密检测, 漏洞枚举, 盲注攻击, 终端用户界面, 网络流量审计, 跨文件污点分析, 通知系统, 错误基检测, 静态代码分析, 静态分析工具