点击蓝字 关注我们
01
后门植入
在安装恶意软件包时,package.json文件中定义的安装之后的钩子会触发preinstall.js脚本,然后脚本使用名为“spawn:”的方法来启动另一个名为index.js的文件。
在 NPM 中,开发者可以使用 "post-install" 钩子来定义在安装包之后执行的自定义操作。这些操作可以包括配置、构建、复制文件、运行测试或任何其他与软件包安装后必须执行的任务。这样的钩子可以在软件包的 package.json 文件中的 "scripts" 部分中定义,通常是在 "postinstall" 属性下。例如:
在上述示例中,当使用 NPM 安装 "my-package" 时,安装完成后将执行 "echo 'Package installed successfully!'" 这个自定义的 post-install 操作。
这些钩子可以帮助开发者自动化与软件包安装相关的任务,从而简化开发和部署过程。不同的包管理工具和项目可能具有不同的钩子名称和配置方式,因此具体的用法可能会有所不同。
02
反弹shell
当index.js作为独立进程运行时,即使主安装过程完成后,它仍然会继续保持独立运行。index.js脚本收集当前操作系统用户名和工作目录,然后将此信息通过HTTP GET请求发送到预定的服务器。
03
打包源代码
然后,恶意代码会浏览受感染机器上的目录,并针对特定目录进行攻击,例如.env、.gitlab和.github,以及具有.asp、.js和.php扩展名的文件。然后,代码会压缩发现的目录,避免不可读的目录或现有的.zip文件,然后尝试将压缩文件上传到预定义的FTP服务器。(打包源代码)。
游民点评
npm投毒属于供应链攻击,与之相似的有pip投毒、vscode扩展投毒。这类攻击对没有安全意识的普通开发人员的攻击是致命的,好不容易得来的代码和工作转瞬间烟消云散。
在国内阿里云也发现过不少类似的攻击,他们给出了如下的建议:
npm是一个相对开放的系统,上面有数百万的安装包,恶意包的审查仅仅靠官方安全审核人员这本身是一个极大的挑战。
而大多数的使用者对官方源相对信任,在官方源遭受攻击时,极易造成大面积的安全风险。
对于官方源本身,我们建议加强安全方面的审查和投入,另一方面对于用户而言,也需要对各种供应链源进行甄别,避免自身核心财产和数据遭受损失。
同时阿里云对于病毒样本的处理映照着本文的处理方式即共享病毒样本,溯源恶意ip,同时最后溯源到的github页面却没有恶意代码更加凸显出攻击者的隐蔽性。
// 编译者/作者 朔峰
新晋安全服务工程师,专注于攻防技术、数据安全、安全产品方向;同时也关注新媒体、区块链,最新相关技术。文章是和朋友安安合作翻译的,请大家多多关照。
原文始发于微信公众号(赛博游民营):Checkmarx警告:又一未知的攻击群体在通过NPM包进行软件供应链攻击
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论