jimstratus/pkgfence

GitHub: jimstratus/pkgfence

pkgfence 是一款多代码库依赖与供应链漏洞扫描器,通过整合多源威胁情报和三信号加权排序,帮助团队高效发现并优先处理依赖项中的安全风险。

Stars: 0 | Forks: 0

# pkgfence 多代码库依赖与供应链漏洞扫描器,作为 Claude Code skill 提供。 扫描本地仓库和远程 SSH 目标,以检测已知的 CVE(通过 osv-scanner v2 或 OSV API 后备机制)、恶意包(通过 OpenSSF Malicious Packages `MAL-*` 覆盖层)以及行为危险信号。生成经过排序和分类的报告,并提供可直接复制粘贴的修复建议。校准信任声明和每项发现的详细卡片明确了哪些内容被扫描,哪些没有。 **状态:🟢 v0.5.0 — 阶段 3 完成 + 阶段 4/5(查询、监控、修复建议、CDN/SRI 扫描器),已加固。** 支持本地 + 远程 SSH 扫描、三信号风险排序、7 源情报丰富、按需查询、watch 守护进程、基线差异警报、自动发布,以及 #7–#20 的安全/正确性加固流程。 ## 架构概览 ``` flowchart LR L1[L1 Discovery
local + ssh + EOL] --> L2[L2 Scan
osv-scanner] L2 --> L3[L3 Enrich
KEV + EPSS] L3 --> L4[L4 Triage
dedup, MAL, exclude,
installed-check, priority, sort] L4 --> OUT[Output
md + SARIF + JSONL] OUT --> L5[L5 Publish
scp sink] ``` ## 当前可用功能 (v0.5.0) - `pkgfence scan` 支持在一次执行中扫描本地注册表根目录和远程 SSH 目标 - 注册表 CLI:`validate`、`list`、`add-root`、`add-project`、`add-ssh`、`remove` - `pkgfence ssh precheck ` — 用于新 SSH 主机的预检诊断(可达性、osv-scanner 存在情况 + 版本、`discover_paths` 存在情况) - osv-scanner v2 集成,并带有向 OSV API `querybatch` 回退的机制 - 远程 SSH 扫描(模式 B:osv-scanner 在远程主机上运行;只有路径、哈希值和扫描器 JSON 在本地传输——源代码永远不会离开主机)。针对每个目标的批量 `find`/`sha256sum`/`osv-scanner`/`ls`,并在 POSIX 上使用 `ControlMaster` 连接复用 - **通过 `cvss` 包将 CVSS 向量解码为真实的基础分数** (V2/V3/V4) —— 9.8 的严重级别会被正确归类为 `critical`,而不会被误读为规范版本号 - **CISA KEV** `actively_exploited` 情报丰富(通过 cveID + 别名关联) - **EPSS** 来自 FIRST 的漏洞利用概率丰富(分数 + 百分位) - **三重分数排序** —— `priority_score = w_cvss·CVSS + w_epss·EPSS + w_kev·KEV`(权重可在 `config/defaults.yaml` 中调整);在每个严重性区间内根据优先级对发现结果进行排序 - **通过精心策划的目录进行 EOL 软件检测**(本地 + 远程) - **是否已安装检查** —— 磁盘上不存在的包会被降级(减少误报带来的疲劳感),在本地和远程的统一流水线位置进行处理 - 过期的例外/豁免、硬编码的低价值排除项,以及 MAL-* 恶意包覆盖(严重性由配置决定) - 感知差异的基线扫描(新增 vs 现有 标记) - Markdown 报告 + YAML frontmatter + SARIF 2.1.0 + 每次运行的 JSONL 审计日志 - `pkgfence-notify` —— 当某次运行发现超过阈值的全新(或升级的)漏洞时触发 webhook - 弹性威胁情报源:发布前验证缓存、单次降级机制,以及操作员可见的情报源过期信号 - **GHSA 公告情报丰富**(CVE 别名注入、CVSS/描述回退、每个公告缓存) - **deps.dev + OpenSSF Scorecard** 包元数据 + 仓库健康分数 - **行为启发式检查** —— 熵(域名抢注/typosquatting)、来自 deps.dev `publishedTime` 的 `age:stale-version`;已接入生命周期脚本 + 来源挂钩点(等待注册表元数据客户端) - **`pkgfence lookup`** —— 用于事件响应的按需 CVE/GHSA/MAL/包查询(并发源 + 可选的网页搜索) - **`pkgfence-watch`** —— 轮询 CISA KEV 以获取新条目的守护进程(基于集合的游标,`watch-log.jsonl`) - **基线差异警报** —— 清单哈希更改及未伴随新发现而被移除的清单 - **`--with-fixes`** —— JSON 修复建议文档(通用、符合 S2 安全标准的升级指南) - **CDN/SRI 扫描器** —— 标记缺少 `integrity` 哈希的 CDN `