近期,npm 注册表中出现 10 款模仿合法软件项目的恶意包,它们会下载一款信息窃取组件,从 Windows、Linux 和 macOS 系统中收集敏感数据。
这些恶意包于 7 月 4 日被上传至 npm 平台,因采用多层混淆技术躲过标准静态分析机制,长期未被发现。据网络安全公司 Socket 的研究人员透露,这 10 款恶意包的下载量已接近 1 万次,能够窃取系统密钥环、浏览器及身份验证服务中的凭证信息。
截至本文撰写时,尽管 Socket 已向 npm 平台报告相关情况,但以下恶意包仍可获取:
1. typescriptjs
2. deezcord.js
3. dizcordjs
4. dezcord.js
5. etherdjs
6. ethesjs
7. ethetsjs
8. nodemonjs
9. react-router-dom.js
10. zustand.js
Socket 研究人员表示,这些恶意包通过虚假验证码验证伪装成合法程序,进而下载一款以 PyInstaller 打包的 24MB 信息窃取器。
攻击者为诱骗用户下载,采用了 " 拼写劫持 "(typosquatting)手段——利用多款知名软件的名称拼写错误或变体命名恶意包。涉及的合法软件包括 TypeScript(JavaScript 的类型化超集)、discord.js(Discord 机器人开发库)、ethers.js(以太坊 JavaScript 开发库)、nodemon(Node 应用自动重启工具)、react-router-dom(React 浏览器路由工具)及 zustand(轻量 React 状态管理工具)。
开发者在 npm 平台搜索这些合法包时,可能因拼写失误或直接选择搜索结果中的恶意包而中招。恶意包安装后,会自动触发 "postinstall" 脚本,生成一个与主机检测到的操作系统匹配的新终端。该脚本在可见的安装日志之外执行 "app.js" 文件,并立即清空窗口以规避检测。
"app.js" 文件是恶意软件加载器,采用四层混淆技术:自解码 eval 包装器、动态生成密钥的 XOR 解密、URL 编码载荷以及深度控制流混淆。
脚本会通过 ASCII 码在终端显示虚假验证码,为安装过程制造合法假象。

虚假的 ASCII 验证码步骤
随后,它会将受害者的地理位置和系统指纹信息发送至攻击者的命令与控制(C2)服务器。获取这些信息后,恶意软件会从外部来源下载并自动启动特定于平台的二进制文件,该文件是一款以 PyInstaller 打包的 24MB 可执行程序。
这款信息窃取器的攻击目标包括各类系统密钥环(如 Windows 凭据管理器、macOS 钥匙串、Linux SecretService、libsecret 及 KWallet),以及基于 Chromium 内核的浏览器和 Firefox 浏览器中存储的数据(包括用户配置文件、保存的密码和会话 Cookie)。
此外,它还会在常见目录中搜索 SSH 密钥,并尝试查找和窃取 OAuth 令牌、JWT 令牌及其他 API 令牌。
被盗取的信息会被打包成压缩文件,先临时存储在 /var/tmp 或 /usr/tmp 目录,随后被窃取至攻击者的服务器(IP 地址:195 [ . ] 133 [ . ] 79 [ . ] 43)。
建议曾下载过上述任何一款恶意包的开发者立即清理感染文件,并轮换所有访问令牌和密码,因为这些凭证极有可能已被泄露。
从 npm 或其他开源索引获取包时,建议仔细核对名称是否存在拼写错误,并确保所有包均来自可靠的发布者和官方仓库。


登录后才可以发布评论哦
打开小程序可以发布评论哦