幸运的是 Github 在 1 月初发现后在没有被大面积扩散之前已从 NPM 注册表中删除了两个软件包:warbeast2000 和 kodiak2k
详细了解下它们做了什么?
warbeast2000
以下代码不是很复杂,一旦将其包安装到自己的电脑上后,会做以下几件事:
- 启动一个安装后的脚本
- 读取 home 目录下的
/.ssh/id_rsa
文件(代码 L10 行定义的路径 filePath,代码 L13 行使用 Node.js API 从本地文件系统获取私钥信息) - 对获取到的密钥 base64 编码并上传至攻击者的 Github 仓库
这段代码看完,真是恐怖如斯!id_rsa
是 ssh-keygen
生成的 SSH 密钥默认文件,在 Windows、MacOS、Linux、Unix 系统上是一个标准文件名了,开发者通常使用它访问自己的私有仓库,例如 Github、Gitlab 等。
要注意的是,除了 id_rsa 是默认的文件名,.ssh 这个文件夹也是可以访问的,意味这该文件夹下的内容也是可以被全部窃取的。很显然,“这个攻击者的软件包很可能还处于开发中...”
好在,该软件包已于 1 月 3 日左右被报告给了 NPM 管理员,并且已被删除。
kodiak2k
warbeast2000 被发现后的不久,1 月 5 日又发现一个类似的软件包 kodiak2k,与上面代码类似都会获取本机 ssh 密钥,不同的是该软件似乎在攻击一个具体的名为 meow
的用户。
上次刚发现有人将 武林外传 上传至 NPM 仓库,当免费网盘使用,这次竟有人恶意利用 NPM、Github 窃取用户的 SSH 密钥,幸运的是这次发现的早,影响范围有限。warbeast2000 软件包的下载量略低于 400
次,而 kodiak2k 的下载量约为 950
次。
从侧面也反映出 NPM、Github 被滥用的行为正在扩大,不知不觉中也会影响到我们每个人。本次事件也应引起我们大家的注意,开发人员和开发组织在选择一些 NPM 包时也需要进行安全评估。
这种事件并非 NPM 独有,Python 的包管理 PyPI 也曾受到恶意包的困扰,参考 https://www.scmagazine.com/brief/info-crypto-stealing-python-packages-proliferate。
本文参考 https://www.reversinglabs.com/blog/gitgot-cybercriminals-using-github-to-store-stolen-data。