核心功能
wip-license-hook 是一款面向开源供应链安全的许可证监控工具,专注于检测并拦截「许可证 rug-pull」——即上游依赖在版本迭代中擅自更改许可证条款的恶意或高风险行为。该工具通过建立项目级许可证台账(ledger),持续追踪所有依赖项及 fork 的许可证状态,并在关键节点(如上游合并前)执行自动门禁检查。
显著优点
- 主动防御机制:在代码合并前拦截许可证变更,避免「事后发现」导致的法律与合规风险
- 全链路覆盖:检测 LICENSE 文件内容、package.json 字段、SPDX 头部、文件删除及许可证降级(permissive → restrictive)等多种变更场景
- CI/CD 原生集成:提供 exit code 门禁、Git hooks 支持及 MCP 协议接口,可无缝嵌入现有 DevOps 流水线
- 透明化治理:自动生成静态 HTML 合规仪表板,支持部署至 GitHub Pages,便于向团队及利益相关方展示许可证健康状态
- 多通道告警:支持邮件、iMessage、Discord 等通知渠道,实现异常即时触达
潜在局限
- 法律边界明确:工具明确声明不提供法律建议,复杂许可证解释仍需专业法务介入
- Node.js 生态绑定:当前实现依赖 npm/git 解析,对 Python、Rust、Go 等语言生态的支持需额外扩展
- 静态分析局限:无法检测「实际行为与许可证声明不符」的隐蔽风险(如代码实际闭源但声明 MIT)
- 人工最终裁决:自动门禁仅阻断变更,不自动决策,需人工复核确认
适合人群
- 开源项目维护者及企业合规团队
- 依赖大量第三方包的 Node.js 全栈/前端项目
- 对供应链攻击(如 colors.js、faker.js 事件)有防御需求的开发组织
- 需满足 SOC2、ISO 27001 等合规审计要求的工程团队
常规风险提示
- 误报可能:许可证元数据不一致(如 LICENSE 文件与 package.json 声明冲突)可能触发警告级告警,需人工甄别
- 上游对抗:恶意维护者可能通过删除 LICENSE 文件后再重建的方式规避检测,需结合版本锁定策略
- 性能考量:大型 monorepo 的全量扫描可能耗时较长,建议配合增量扫描策略使用