软件库的供应链安全风险

关键要点

许多开发者在使用开源软件库时,没有充分的审核和信任机制,这可能导致安全风险。NPM库“ ”的例子显示了困扰许多开发者的问题:库的使用可能没有实际价值。随着安全事件的增加,组织应对库和依赖进行严格的管理和审核。开发者应确保所用库的合法性,避免无视潜在风险。

在谈到软件供应链时,我总是喜欢问听众一个问题:你会允许街上Random的陌生人向你的应用程序库提交代码吗?

幸运的是,听众的回答通常都是 不。但是,如果我们将这个问题转换成如何在应用程序中使用软件库,那么这种情况往往正好与实际情况相符。开发者从公共库中直接获取库,这些库允许任何人提交代码,几乎不经过严格审查。开发者在将陌生人的代码通过这些库并入到自己的应用程序中时,实际上是寄托了信任。

你不相信我吗?让我举一个我最喜欢的例子:毫无意义的 NPM 库:“ ”。没错,这就是库的真实名称!

我最早是通过 Bleeping Computer 的一篇报道了解到这个库的。除了名字之外,另一个特点是这个库完全没有任何功能。它提供了零价值。以下是库内容的屏幕截图:

图1:NPM库“”的内容截图

飞跃加速器永久免费版

这个库只有一个源文件 indexjs ,从截图来看,它完全没有用。你可以在 NPM 官方库 上查看这个库。令人欣慰的是,这个库最近被官方的 NPM 维护者npmsupport接管了:

图2:展示 NPM 库“”的当前所有权的截图。

这一点很重要,因为虽然这个库只有一个无用的版本,但很难说出这个库的最初意图是什么。也许作者想用这个库进行实验;或者更糟糕的是,他们想让这个库被广泛使用,从而在以后注入恶意代码。不管怎样,其背后最初的意图依旧是个谜。

为什么你不应该盲目信任软件供应链

关于这个库的内容。第一个也是唯一的版本在两年前发布。借助 WayBackMachine,我们可以看到这个库 首次被归档 的时间是在 2020 年底:

图3:NPM包在官方NPM库上的WayBackMachine归档。

当时,只有 9351 次每周下载和 26 个库将这个库作为依赖而且这个库当时已经存在八个月:

图4:2020年8月8日 NPM库“”的WayBackArchived页面截图。

而现在的数字则是:每周 19669 次下载和 74 个库将此库作为依赖:

图5:NPM库