从插件 README 里识别危险信号,是你做的最便宜的安全审查。把文档当作关于代码的证据,而不是作者的承诺。
README 是证据,不是广告
README 在运行代码前就能读,是最便宜的安全文档。别当营销读。每句关于插件做什么、需要什么、怎么更新,都是背后团队的证据。用心的 README 意味着用心的项目。
权限与网络访问
从它索要的看起。README 列权限或网络端点并解释每项必要,是好信号;只要宽泛权限却只字不提,是缺口。读你文件的插件该说清读哪些、为何。
安装、密钥,与文档漏掉的事
安装段最易露风险习惯。留意几种把正常安装变盲目信任的模式。
- 把远程脚本直接管道进 shell,即 curl | sh,读之前就跑了代码。
- 下载没签名、无法核实内容的二进制文件。
- 完全没提固定版本,你拿到的是服务器今天发来的任何东西。
- 更新机制以后能在你未审查时拉取新代码。
再读插件如何处理数据与自身代码。几种省略值得注意。
- 示例鼓励把令牌或环境变量明文塞进配置。
- 构建步骤在安装时跑任意代码,不只开发时。
- 文档从不披露遥测或分析。
- 没写许可证,你不清楚自己对代码的权利。
信号与担忧程度对照表
| 信号 | 通常意味着什么 | 值得担心的程度 |
|---|---|---|
| 安装用 curl | sh | 代码读前就运行 | 高 |
| 没有固定版本 | 收到未审查的更新 | 中 |
| 未披露遥测 | 使用被悄悄追踪 | 中 |
| 链接失效、多年未动 | 项目可能废弃 | 维护高危 |
| 权限清楚、有变更日志 | 维护者考虑了风险 | 低 |
粗心与恶意的区别
最有用的判断是区分这两者。多数糟糕 README 只是粗心,缺变更日志不等于恶意,死链烦人但不邪恶。恶意表现为隐藏行为:网络访问遮遮掩掩、安装绕过审查、更新不看就到。学会分辨单薄与不诚实。
粗心的 README 是维护风险。隐藏代码运行的 README 是信任风险。后者才该转身离开。
一份好的 README 长什么样
好的一份明确说明插件能做什么、不能做什么。
- 明确的权限范围,并各给一个理由。
- 变更日志,写明改了什么、何时改的。
- 哪怕简短的威胁模型说明。
- 签名发布,便于核实你下载的东西。
你真的能用上的流程
这些不必花很久。首页 / 的评分给第一眼判断,维度在 /blog/dsh-quality-score-decoded 解释,但 README 才是确认处。把厂商挡在评分外:像 /blog/why-independent-plugin-scoring 说的独立数字才值得信任。
- 读 README,记下任何没说清的地方。
- 信任之前,先查那个独立评分。
- 固定你审查过的确切版本。
- 先在沙箱或一次性环境里安装。
只要用了 curl | sh 就该拒绝吗?
不总是,但应先读那个脚本。读不了就别管道它。先下载检查,再自己运行。这模式有风险,因它默认跳过那一步。
README 很旧就说明插件不安全吗?
单看不说明。废弃 README 意味着项目可能无人维护,这和无恶意代码不是一回事。决定前先查发布日期,以及链接是否还通。
评分在这其中是什么位置?
README 是你的确认步骤,评分是快速过滤。用评分给要审的排个序,再让 README 告诉你厂商的话是否和代码对得上。两者合起来胜过单独任一个。