DSH Quality

你的插件清单为什么是一项安全资产

多数团队说不清自己装了哪些插件、装在什么地方。plugin inventory value 会在公告落地的那天显现,这也是 why your plugin list is a security asset。怎么 know what plugins you have installed,以及一个下午怎么把清单搭起来。

多数团队答不上来一个决定性问题:受影响的插件到底跑在哪些项目里。而正是这个问题,决定一条安全公告的代价是一个下午还是一周。plugin inventory value 就藏在这个缺口里,这也是 why your plugin list is a security asset 的原因,而不是一份杂物台账。一旦知道 how to run a plugin list security audit,它就不再是留痕用的文书工作,而是几分钟界定事件范围的那一步。下面讲的是如何在不靠谁回忆的前提下 know what plugins you have installed、这份记录在你真正用得上的三天里值多少,以及保持它不过期的最短路径。

plugin inventory value 到底体现在哪

风平浪静的工作日里,这份清单几乎没什么价值。它的价值在压力下显现,具体是下面四种情况。

  • 响应安全公告。某个插件被公开点名时,范围靠查清单界定,而不是全仓库 grep 之后再猜。
  • 发现重复项。两个插件解决同一个问题,意味着要多评审一份、多授予一份权限,而活只干一份。
  • 发现偏移。某位开发者装着别人都没有的插件,要么是他走在团队前面,要么是配置已经漂移了,两种情况都值得聊一聊。
  • 交接与离职。写下来的记录能活过当初装它的人。

这些都不需要新工具。只需要一个文件,在有变动的时候更新它。

你被问到的问题没有清单有清单
哪些项目用了受影响的插件?全仓库 grep,然后靠猜一次查询
有多少台机器暴露?要等有人在群里回话说不清立刻给出数量
我们当初装过它吗?没人记得记录里有,还带日期
同一作者还装了别的吗?再搜一轮按作者归类好了

清单真正派上用场的三天

每个坚持做清单的团队迟早都会撞上这三天,一般一年内都会遇到。

  • 公告那天。你装的东西被公开点名。有清单,回答是一次查询;没有清单,是一整天的搜索,最后还得出一个没人完全信服的答案。
  • 审计那天。有人要你拿出构建环境里跑了什么的证据。清单本身就是证据,而事后补做清单,永远比预想的花时间长。
  • 事故那天。某个东西行为异常,缩小嫌疑范围的第一步就是知道装了什么。问题安装脚本背后的权限套路写在 /blog/how-install-script-scanning-works。
清单不是白捡的安全工作。它是你一次性做掉的部分,好让另外三天不用花在找清单这件事上。

给自己留一份 know what plugins you have installed 的记录

这是个表格就能干的活。别等什么平台选型。

  • 从一台机器上导出已装插件列表,放进共享文件,写上当天日期。
  • 每条加三列:版本或 commit、来源(注册表、仓库还是本地路径)、加入日期。
  • 在每台开发机和每个 CI 镜像上重复一遍。CI 那一列最容易被忘,而它的权限往往是给得最宽的。
  • 把涉及网络访问、凭据、以及项目目录之外文件的条目标出来。
  • 指定一个人每月重跑一次导出。没有轮流负责的人,是多数清单悄悄失效的原因。

每条的评分不必写进文件,链接插件页面就行,因为分数会动,而文件不该跟着动。每个分数背后的四个输入写在 /blog/dsh-quality-score-decoded。

不增加流程也能保持更新

清单失败的原因和多数检查表一样:它指望人去记。把更新挂在已经会发生的事情上。

  • 在装机或清机的那天重新导出,而不是挂在一个没人看的日历上。
  • 新增插件必须同时在文件里加一行,就像加依赖要提 PR 一样。这道闸门在团队层面怎么落地,写在 /blog/setting-up-a-plugin-allowlist-for-your-dev-team。
  • 更新时用 diff 比对,而不是靠手填,变更自己就会冒出来。
  • 保留历史版本。某个插件两个版本前还很干净,这在它的新版本被标记时是有用的上下文。

常见问题

  • 个人开发者也值得做吗?值得,只是价值会变而不是消失。对一个人来说,价值主要是清机后的重装速度,外加一份你到底授予了哪些权限的记录。
  • 多久刷新一次?只要装的东西变了就刷新。每月重跑一次能抓到漂移;间隔再长,记录基本已经过期了。
  • 分数要写进清单吗?引用,不要抄。分数会随维护和发布活跃度变动,抄在表格里的数字会不知不觉变成错的。
  • 我们已有依赖清单了怎么办?两个都留着。依赖清单管的是代码 import 的包;插件是跑在编辑器或 harness 里的工具,通常不在里面。
  • 这能替代扫描吗?不能。清单告诉你该查什么,扫描告诉它做了什么。为什么评级要独立于开发者自报的数据,写在 /blog/why-independent-plugin-scoring-beats-self-reported-ratings。

今天先做一台机器,这周把剩下的补齐。你清单里的每个插件在 dshquality.com 都有对应的评分页,那些页面的评分是独立给出的,不是开发者自报的。让清单保持诚实的评审习惯写在 /blog/dsh-plugin-review-process,我们发布的全部文章在 /blog。

plugin list securitydsh plugin inventoryplugin security auditinstalled plugin listplugin inventory valuewhy your plugin list is a security assethow to run a plugin list security auditknow what plugins you have installed