依赖投毒案发时光机
依赖投毒曝光后导入构建证据,立即确认哪些历史制品真的装过恶意版本,以及该隔离什么。
某个依赖包曝出投毒消息后,安全工程师把锁文件、构建时间、制品摘要和 CI 缓存信息交进来。产品不会拿今天的依赖树替代过去的环境,而是按每次构建发生的日期还原当时可安装的版本,检查短暂出现的恶意包是否真的进入过制品。
结果页先列出受影响的镜像、服务和已交付给客户的版本。每一项都能展开看到命中的构建编号、依赖路径和证据缺口。工程师可把某个制品标为已隔离,随后生成最小升级改动和重新构建步骤,避免为了一个告警盲目重做全部发布链路。
首批覆盖有锁文件和构建日志的 JavaScript 项目,重点处理已被后续版本覆盖的短暂恶意依赖。它不把缺少历史证据的项目直接判定为安全,也不代替人工完成密钥轮换和事故通报。
为什么是现在
8 月 4 日,Keyv 相关包被植入可窃取凭据并继续传播的恶意代码。S1 截至 8 月 5 日,该帖以 227 points、120 条评论位于 Hacker News 第 6 位,安全团队正急于核对旧制品。S2
目标用户
首要用户是负责供应链事件响应的安全工程师。投毒消息刚公开时,他们要判断是否需要停服、轮换密钥或通知客户。此时当前分支往往已经升级,普通扫描可能看不到旧版本。拥有锁文件、构建日志或镜像摘要的团队,最容易得到可信结论。
最小切入点
导入 package-lock.json、npm-shrinkwrap.json 和构建日志。先以锁文件中的版本、resolved 与 integrity 为强证据。无完整锁文件时,再读取 npm Registry 的 versions、time 与 dist 元数据。S3 版本范围解析可直接采用 npm/semver,包元数据获取可用 pacote。结果按制品摘要保存,不按仓库当前分支覆盖。首版只支持 npm 与 GitHub Actions。它不自动轮换密钥,也不替用户发送事故通知。
以小博大
第一批用户就在投毒事件的技术讨论区和处置工单里。可发布开源 CLI,输出可复核的单制品证据报告。每次事件再维护一份恶意版本清单和复现样例。安全顾问可用它完成初筛,平台团队则可能为批量制品追踪升级到托管版。
竞品与缝隙
怎么赚钱
按每个已接入代码库收取月费,包含固定数量的历史制品核验。重大投毒事件可购买一次性应急包,按导入的制品数量计费。
反方视角
历史证据经常残缺,构建日志也可能已过期删除。仅凭发布日期和版本范围,只能得到概率判断。若产品把推断写成确定命中,团队可能误停服务。反过来漏掉一次安装,又会延误密钥轮换。私有包、镜像多阶段构建和缓存复用会继续增加歧义。制品与客户版本的映射还依赖企业内部发布数据。首版必须明确标记证据等级,否则报告很难用于审计和事故通报。