9batalion/coderisktools-scanner
GitHub: 9batalion/coderisktools-scanner
一款默认离线、零运行时依赖的密钥与配置风险扫描引擎,内置 297 个检测器并支持漏洞数据 enrichment。
Stars: 1 | Forks: 0
# 代码风险工具 Secret Scanner Engine
**开源旗舰产品,用于在 AI 生成的代码合并之前审查类机密值和有风险的配置变更。**
CodeRiskTools Secret Scanner Engine 采用 MIT 许可协议,优先本地化,默认离线,且无 runtime 依赖。它扫描 unified diff、staged changes、本地目录和受限的 Git 历史,而无需执行目标项目的代码。
## 此处公开的内容
- Secret Scanner Engine `3.0.1`;
- 严格、受限且 fail-closed 的 unified-diff 解析;
- staged-change 扫描;
- JSON、Markdown、HTML、SARIF 和 GitHub 输出;
- baseline 和 allowlist;
- 签名的 rule-pack 验证支持;
- 受限的 Git-history 模式;
- 通用的离线 agent-hook envelope;
- pre-commit 集成;
- 复合的 GitHub Action;
- 测试和合成测试用例。
## 已验证的检测器覆盖范围
当前的公开注册表包含 **297 个原生检测器**,其中包括 **187 个稳定的 secret-format 检测器**,以及 267 个行检测器和 32 个上下文检测器。该注册表包含 73 个 CI/CD 策略检测器。稳定的 secret 集合有源代码 backing,并从稳定计数中排除了临时候选者。golden corpus 涵盖了所有 297 个原生检测器,并具有确定性的 parity。
Stage 8 CI/CD 权限范围覆盖情况记录在 [`docs/STAGE8_CI_CD_BATCH1_SOURCES.md`](docs/STAGE8_CI_CD_BATCH1_SOURCES.md) 中;workflow-wide 的写权限被归类为最小权限策略审查,而非自动利用声明。
Stage 6 研究记录在 [`docs/STAGE6_SECRET_DETECTOR_BACKLOG.md`](docs/STAGE6_SECRET_DETECTOR_BACKLOG.md) 中;backlog 已通过 PR #49 重新验证,opaque、generic 和不完整的 provider 格式仍被明确排除在稳定计数之外。
## 本地漏洞 enrichment
扫描器还具有一个明确的、由提供的 SQLite 数据库支持的离线漏洞路径。它是 opt-in 的,并且在缺少 `--vulnerability-db` 时不会更改传统的 secret/config 扫描行为。
```
secret-scanner scan --dir . --vulnerability-db vulnerability.sqlite --format json
```
当前的 enrichment 轨道包括:
- 仅 active-snapshot 匹配和独立的漏洞 baseline;
- OSV、NVD、KEV、CVE v5 和 GHSA 导入边界;
- 确定性的 provenance、覆盖范围和质量报告;
- 版本化的数据库 schema 状态和 fail-closed 的未来版本处理;
- NVD 配置语义(`AND`、`OR`、`negate`、嵌套子项);
- NVD 引用、source tag 和变更历史回读。
这些功能是本地 enrichment 能力,而不是完整或自动更新的漏洞 feed。请参阅 [漏洞流水线](docs/V4A-VULNERABILITY-PIPELINE.md)、[漏洞 baseline 和 SARIF](docs/V4B-VULNERABILITY-BASELINE-SARIF.md)、[V5x schema 版本控制](docs/V5X-SCHEMA-VERSIONING.md)、[V5y NVD 配置语义](docs/V5Y-NVD-CONFIGURATION-SEMANTICS.md) 和 [V5z NVD 引用/tag/历史](docs/V5Z-NVD-REFERENCES-TAGS-HISTORY.md)。
## 产品边界
此公开仓库**仅包含 Scanner 旗舰版**。
不包含且未受本仓库授权的内容:
- **MCPwatch Scanner** — 专用于 MCP 扫描的付费专有附加组件;
- **AI Change Firewall** — 独立的付费专有产品,用于 intent、scope、change budget、`ALLOW/BLOCKED` 控制、receipts、evidence pack 和策略 workflow。
本仓库中不包含任何 MCPwatch Scanner 或 AI Change Firewall 的源代码。请参阅 [产品边界](docs/PRODUCT_BOUNDARY.md)。
## 从 checkout 安装
要求:Python 3.10+。仅在 staged/history 模式下需要 Git。
```
python -m venv .venv
. .venv/bin/activate
python -m pip install --no-deps .
secret-scanner --version
```
## 扫描 staged changes
```
secret-scanner scan --staged --profile balanced --format json
```
## 扫描已保存的 diff
```
secret-scanner scan \
--diff examples/clean.diff \
--profile strict \
--format json
```
## 扫描本地目录
```
secret-scanner scan \
--dir . \
--recursive \
--profile balanced \
--format json
```
## 退出代码
- `0`:干净或仅有警告;
- `1`:在配置的失败阈值下发现 secret;
- `2`:发现风险的配置/策略,但没有导致失败的 secret;
- `3`:输入 malformed、不安全或过大,或发生操作失败。
## Pre-commit
```
repos:
- repo: https://github.com/9batalion/coderisktools-scanner
rev: v3.0.1
hooks:
- id: coderisktools-secret-scan
```
该 hook 扫描 staged 的 Git diff 字节。它会禁用外部 diff 和 text-conversion 辅助程序,并且不会运行项目构建或测试。
## GitHub Action
```
name: CodeRiskTools Scanner
on:
pull_request:
permissions:
contents: read
jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
fetch-depth: 0
- uses: 9batalion/coderisktools-scanner@v3.0.1
with:
profile: balanced
```
该 Action 仅分析受限的 Git diff 字节。它不会从目标仓库安装依赖项,也不会执行目标项目的代码。
## Agent-hook envelope
Scanner 可以接受用于通用、Codex-labelled 和 Claude Code-labelled 适配器的严格离线 envelope。这是一个文档化的输入契约,而不是对未文档化的供应商原生兼容性的声明。请参阅 [Agent hooks](integrations/AI_AGENT_HOOKS.md)。
## 安全属性
- 默认离线;
- 无 telemetry;
- 无 runtime 依赖;
- runtime evidence 保留是必需的修复契约;当前的 formatter 迁移被作为一项待处理的审计发现进行追踪;
- publication-safe 的脱敏必须是一个单独的明确边界,而不是隐式的 runtime 契约;
- 严格拒绝 malformed 的 diff;
- 拒绝绝对/遍历路径;
- 受限的 diff、文件和行输入;
- 非 symlink 文件读取;
- 在 staged/Action 路径中没有外部的 Git diff/textconv 辅助程序;
- 不执行目标项目的代码。
可选的凭据验证是联网的,默认禁用,并且需要明确的每次运行同意。在启用之前,请阅读 CLI 帮助和测试。
## 开发
```
python -m unittest discover -s tests -p 'test_*.py' -v
python -m compileall -q src tests
```
## 许可协议
本仓库中的文件均在 [MIT 许可协议](LICENSE)下提供。产品名称、网站内容、MCPwatch Scanner、AI Change Firewall 以及单独分发的商业材料并不自动受本仓库许可。
标签:Linux安全, 逆向工具