npm 假 Telegram 包对 Linux 发起 SSH 后门攻击——利用劫星技术欺骗开发者的新威胁

2025 年 4 月 19 日,供应链安全公司 Socket 在 npm 注册表中发现了三个模仿流行的 Telegram 机器人库的恶意软件包。这些软件包包含 SSH 后门和数据泄露功能。

有问题的包如下

  • node-telegram-utils(132 次下载)
  • node-telegram-bots-api(82 个下载)
  • node-telegram-util(73 个下载)

这些软件包旨在模仿流行的 Node.js Telegram Bot API“node-telegram-bot-api”,该 API 每周下载量超过 100,000 次。

这些恶意软件包利用了一种称为“劫星”的技术。这种技术通过链接与合法库关联的 GitHub 存储库,使开源包看起来比实际更受欢迎。

根据 Socket 的分析,这些软件包被明确设计为在 Linux 系统上工作,攻击者可以通过在“~/.ssh/authorized_keys”文件中添加两个 SSH 密钥来实现对主机的持久远程访问。

该脚本旨在连接到系统的用户名和“ipinfo[.]io/ip”以收集外部IP地址。它还与外部服务器(“solana.validator[.]blog”)通信以确认感染。

即使该软件包被删除,注入的 SSH 密钥仍然保留,允许攻击者继续进行远程访问。

Socket 还发现了另一个恶意软件包@naderabdi/merchant-advcash。该软件包旨在以 Volet(以前称为 Advcash)集成的名义向远程服务器启动反向 shell。

从:Rogue npm 封装模仿 Telegram Bot API 在 Linux 系统上植入 SSH 后门

【编辑部评论】

新发现的恶意npm包给开源生态系统的安全敲响了严重的警钟。多家安全公司证实,这些包裹很可能是协调供应链攻击活动的一部分,而不仅仅是偶然的威胁。

特别值得注意的是一种称为“劫星”的技术。根据 Checkmarx 的研究,这项技术可以跨多个包注册中心(包括 PyPi 和 npm)来利用,并且源于一个基本问题:没有机制来验证包和 GitHub 存储库之间的关系。这使得恶意软件包开发人员可以将流行的存储库链接到他们的软件包并掩盖其真实性。

在 Datadog 安全实验室报告的攻击活动中,除了与 Telegram 机器人相关的恶意包之外,还确认了多个恶意包,包括“grammy-utils”、“grammyjs-sdk”和“telegramclient-sdk”。它们都使用类似的方法来添加 SSH 密钥并允许攻击者进行远程访问。

这些攻击之所以特别危险,是因为它们的持续性。即使卸载该软件包,任何已添加的 SSH 密钥仍然保留,从而允许攻击者继续访问系统。它具有“持久性恶意软件”的特征,使得检测和处理损害变得困难。

此外,尽管在这种情况下,node-telegram-utils 等软件包的下载数量相对较少,但正如安全研究人员指出的那样,仅一个关键系统的泄露就可能导致大规模损坏。特别是,如果开发环境受到损害,它可以打开进入生产环境的途径。

另外值得注意的是另一个恶意软件包 @naderabdi/merchant-advcash 中发现的复杂规避技术。该软件包仅在支付交易成功时启动反向 shell 来执行条件执行,从而避免静态分析的检测。这是攻击技术演变的一个重要例子。

开发人员必须采取多种措施来应对此类威胁。首先,要从多个角度检查包裹的真伪。不仅要考虑下载数量,还要考虑代码的质量、提交历史记录、贡献者的可信度等等。定期审核依赖关系并创建基于最小权限原则的开发环境也是有效的。

在企业层面,建议实施供应链安全工具。 Socket、Checkmarx 和 Snyk 等工具专门用于检测恶意软件包和漏洞,并有助于防范此类攻击。

整个开源社区迫切需要在包注册中心和存储库托管服务之间建立验证机制。特别是,为了防止“明星劫持”等技术,验证包和 GitHub 存储库之间关系的机制至关重要。

最后,像这样的攻击不仅带来了技术问题,而且对开源生态系统的可信度构成了根本挑战。整个社区需要思考如何平衡便利性和安全性。

【术语解释】

npm(节点包管理器):
JavaScript 包管理系统。一个允许开发人员轻松共享和重用程序部分(包)的系统。目前,它是“npm 不是缩写词”的缩写。

供应链攻击:
针对软件开发供应渠道的攻击。一种将恶意代码注入合法分发渠道的方法。

SSH后门:
允许攻击者通过利用 Secure Shell (SSH) 身份验证系统获得对系统的未经授权的访问的后门。

劫星:
一种通过链接到合法 GitHub 存储库来使恶意包看起来受信任的方法。

反向外壳:
一种启动从目标计算机到攻击者计算机的连接并授予命令执行权限的技术。由于它的连接方向与普通远程连接相反,因此它可以绕过防火墙等安全措施。

〜/.ssh/authorized_keys:
在 Linux 系统上,存储允许通过 SSH 进行远程连接的公钥的文件。如果攻击者的密钥添加到此文件中,他们无需密码即可闯入。

[参考链接]

插座(外部)
一家专注于供应链安全的公司。提供开源漏洞检测工具

潜行(外部)
一家提供下一代漏洞管理工具的公司。为开发者提供的安全平台

查克马克思(外部)
一家提供应用安全测试解决方案的公司

新项目管理(外部)
JavaScript 包注册表。注册包裹超过 200 万个

[编者后记]

你通常如何选择 npm 包?您是否仅根据下载数量做出决定?作为开发人员,我们所有人都可能面临这样的复杂攻击。您想看一下您在项目中使用的软件包吗?作为一个团队制定安全检查规则也可能是有效的。大家会考虑采取什么对策?请在社交媒体上告诉我们您的意见。

[相关文章]

在 innovaTopia 上阅读更多网络安全新闻