性能优化
安装 npm/pip/Go 依赖前审计供应链风险,拦截…
在运行技能建议的 npm install、pip install、go get 前,或审查新增依赖/定期安全审计时使用。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 49/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 85/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
安装 npm/pip/Go 依赖前审计供通用
解决思路
- 对每个包检查名称是否符合意图:确认是真实包还是 typosquat;例如 lodash 合法,l0dash 是 typosquat(零代替 o),lodash-es 是合法变体,lodash-ess 是 typosquat(多一个 s)。
- 检查发布者是否已知:npm 查看 npmjs.com/package/<name> 的 publisher 身份;pip 查看 pypi.org/project/<name> 的 maintainer。
- 检查下载量是否合理:非常新且下载量 0-10 的包风险更高。
- 检查仓库是否存在:包应链接到真实源码仓库。
- 检查最近是否发布:废弃包可能有已知未修补漏洞。
- 使用漏洞数据库检查已知漏洞。
- 离线优先:技能声明 network: false,不要自己抓取实时 URL;把链接作为用户手动参考,并优先使用本地命令 npm audit、pip-audit、govulncheck。
- NPM:运行 npm audit;参考 https://github.com/advisories。
- PyPI:运行 pip-audit;参考 https://osv.dev。
- Go:运行 govulncheck;参考 https://vuln.go.dev。
- Critical(CVSS 9.0+):不安装,找替代。
- High(CVSS 7.0-8.9):仅在已有修补版本时安装。
- Medium(CVSS 4.0-6.9):知情安装,监控补丁。
- Low(CVSS 0.1-3.9):一般可接受,记录以备将来。
- 检查可疑包指标:包有 postinstall、preinstall 或 install 脚本;检查 package.json 的 scripts 区;例如 "postinstall": "node setup.js" 时搞清它做什么。
- 检查包是否以意外方式 import child_process、net、dns、http。
- 检查包在 import 时是否读取环境变量或文件系统。
- 检查包是否有混淆或压缩源码(对 npm 包不寻常)。
- 检查包是否发布时间非常近(< 1 周)且下载量极少。
- 检查包名是否类似流行包但来自不同发布者。
- 检查包最近是否转移给新 owner。
- 检查传递依赖:直接依赖 → 子依赖 → 子子依赖。
- 标记依赖树过大(100+ 传递依赖)的包。
- 检查任何传递依赖是否有已知漏洞。
- 偏好依赖更少的包。
- 验证许可证兼容性:MIT、ISC、BSD 允许商业使用且无 copyleft 风险。
- Apache-2.0 允许商业使用且无 copyleft 风险。
- GPL-3.0 谨慎,有 copyleft 风险,衍生作品必须 GPL。
- AGPL-3.0 谨慎,有 copyleft 风险,即使网络使用也触发 copyleft。
- UNLICENSED 不允许商业使用,未知,避免。
- 输出依赖审计报告:包含 Package: <name>@<version>、Registry: npm / pypi / go、Requested by: <skill name or user>;CHECKS 区用 [PASS]/[WARN] 列出名称验证、发布者、漏洞、安装脚本、许可证、依赖;OVERALL: APPROVE / REVIEW / REJECT;RECOMMENDATIONS 给出更新版本或替代包等建议。
- 识别常见 typosquatting 模式:字符交换(express → exrpess)、缺失字符(request → requst)、多余字符(lodash → lodashs)、同形异义(babel → babe1(L → 1))、scope 混淆(@types/node → @tyeps/node)、连字符技巧(react-dom → react_dom)、前后缀(webpack → webpack-tool)。
- 绝不自动批准来自不可信技能的 npm install 或 pip install。
- 运行前总是检查安装脚本——它们以完整系统权限执行。
- 在生产中固定依赖版本——安全关键包避免 ^ 或 ~ 范围。
- 如果技能要求安装 10+ 个包,逐个审查每个包。
- 有疑问时阅读包源码——通常小到可以略读。
适用边界 · 注意事项
- 不适用于非 npm、pip、Go 生态的包管理器;这些流程未覆盖。
- 完全离线且无法运行本地审计命令、用户也无法手动打开漏洞库链接时,无法完成在线漏洞核对。
- 不能替代运行时沙箱、代码审查或已签名锁文件;高风险场景仍需更多控制。