- Baileys WhatsApp Web API 的恶意 npm 分支版本 lotusbail 已被下载超过 56,000 次。
- 该软件包封装了合法的 WebSocket 客户端,以便在后台窃取令牌、会话密钥、消息、联系人和媒体。
- 攻击者会悄悄地将自己的设备与受害者的 WhatsApp 帐户配对,即使卸载了该软件包,也能保持访问权限。
- Koi Security 的研究人员敦促开发人员仔细检查 npm 依赖项并监控运行时行为,以发现供应链攻击。

看似无害 npm 包宣传为 WhatsApp Web API 助手 已被发现悄悄窃取毫不知情的开发者及其用户的聊天记录、联系人和访问凭证。该库以“ “莲花贝”该程序在官方 npm 注册表上持续可用数月,并在受到严格审查之前获得了超过 56,000 次下载。
根据多份独立报告和一项详细调查…… 锦鲤安全该软件包表面上表现得像一个普通的 WhatsApp 自动化工具包,但实际上它在后台运行。 拦截所有消息,收集帐户数据并建立持久后门 针对被盗用的 WhatsApp 账户。由于恶意行为与合法功能融为一体,许多项目可能在集成后并未察觉任何明显的异常。
伪造的 WhatsApp Web API 包是如何悄悄潜入 npm 的
这个恶意库大约在 2025 年 5 月出现在 npm 上,由一位名为 [用户名] 的用户上传。 “seiren_primrose” 并被描述为与 WhatsApp Web 交互的便捷 API。其底层原理是…… 这是热门开源项目 @whiskeysockets/baileys 的一个分支。,这是一个 TypeScript/JavaScript 库,提供基于 WebSocket 的 API,用于在 WhatsApp Web 之上构建机器人和自动化程序。
通过紧密模仿 Baileys 的公开界面和行为,威胁行为者确保了 开发人员只需进行极少的更改即可将该软件包集成到现有工作流程中。文档和命名都经过精心设计,使其看起来合法,从而降低了繁忙的团队质疑其来源的可能性,尤其考虑到 npm 使用量通常可以作为信任度的指标。
大约半年时间里,包裹积聚了 总安装量超过 56,000 次,每周下载量达数百次。在此期间,它仍然可以从官方注册表中搜索和安装,实际上使其成为任何通过 JavaScript 集成 WhatsApp 功能的应用程序的隐形供应链威胁。
研究人员强调,npm 的基本发布流程没有任何因素可以阻止此次上传: 任何用户都可以发布一个名称听起来很专业的软件包,复制知名项目的 API,并立即获得曝光度。 在生态系统中。攻击者正是利用了这一现实。
滥用 WebSocket 客户端捕获 WhatsApp 数据
攻击的核心在于 lotusbail 的运作方式 它封装了与 WhatsApp Web 协议通信的合法 WebSocket 客户端。该软件包并没有从头开始构建新的接口,而是在标准的 Baileys WebSocket 实现周围插入了一个自定义容器,使得每个入站和出站消息都必须先经过恶意软件。
Koi Security 的分析解释说,一旦开发者通过此库对 WhatsApp 进行身份验证, 该包装器会立即获取身份验证令牌和会话密钥。从那时起,通过该连接传输的每一条消息——无论是传入的还是传出的——都会透明地镜像到攻击者的基础设施上。
这种镜像功能不仅限于纯文本聊天。该软件包经过精心设计,可以…… 提取邮件历史记录、联系人列表和所有附件媒体文件包括照片、视频、音频片段和文档。实际上,它复制了用户的对话环境:他们与谁交谈、发送什么内容以及接收什么内容。
至关重要的是,这一切都没有破坏开发者预期的正常行为。官方功能似乎仍然运行正常,机器人继续响应,自动化程序照常运行,WhatsApp 会话也保持稳定。该恶意软件只是添加了一位研究人员所描述的功能: “第二个、看不见的接收者,可以接收一切”因此,仅凭粗略观察极难发现。
所有这些都是通过正常使用 API 触发的。受害者无需运行额外的命令或启用特殊标志; 身份验证和例行消息处理足以激活间谍功能。这也是该行动能够持续数月而不被发现的原因之一。
隐蔽后门访问:将攻击者的设备与目标设备配对
除了数据窃取之外,Lotusbail 还引入了一种更隐蔽的功能:它悄无声息地…… 攻击者控制的设备与受害者的 WhatsApp 帐户配对. 这利用了与合法用户将其他手机或台式机连接到其帐户时所依赖的相同的多设备配对工作流程。
在登录过程中,恶意软件会触发一个隐藏的配对例程。研究人员报告称,该代码 生成一个八字符的随机字符串,并将其输入到 WhatsApp 的设备关联机制中。通过恶意软件包中嵌入的硬编码配对流程劫持标准流程。
一旦配对完成,攻击者的设备实际上就成为了目标账户上的另一个授权客户端。从那时起, 威胁行为者可以像账户所有者一样读取和发送消息、查看联系人以及访问媒体。 而且他们无需再依赖原始的恶意软件包即可做到这一点。
这正是攻击能够持续存在的原因。即使是具有安全意识的开发人员也无法阻止这种情况的发生。 发现可疑的依赖项并将其从项目中移除。即使恶意 npm 代码已被删除,攻击者关联的设备仍保持活动状态,直到被明确从 WhatsApp 的受信任会话列表中移除。
专家强调,这一特点使得此次事件不仅仅是一起简单的包装级感染事件: 它将 npm 的一个失误演变成一次彻底的账户接管,而且这种接管在清理之后仍然存在。即使存在漏洞的软件已经更新,它仍可能继续使最终用户面临风险。
恶意软件究竟窃取了什么——以及它是如何隐藏这些窃取信息的。
来自 Koi Security 和其他研究人员的技术说明详细描述了所收集的数据。lotusbail 软件包被编程为…… 收集各种敏感的WhatsApp内容远远超出邮件正文的范畴。
目标物品包括 身份验证令牌、会话密钥和配对码 用于维护客户端与 WhatsApp 服务器之间的连接。攻击者掌握这些信息后,即使某些设备重启或软件重新安装,也能重新创建或维持会话。
该恶意软件还会提取 联系人和群组成员完整列表这使得攻击者能够绘制受害者的社交关系图,识别高价值目标或转向其他账户。结合消息内容,这使攻击者能够全面了解关系、业务流程和私人对话。
通过 WhatsApp 交换的文件同样面临风险。由于封装程序可以看到每个 WebSocket 帧,因此它可以…… 捕获照片、视频、语音笔记和文档的元数据和有效载荷 在客户端解密和渲染之前,这些数据会被预先准备好,以便传输到攻击者控制的服务器。
为了避免在网络层面上直接被检测到,该软件包使用 完全定制的RSA加密实现在离开受损环境之前,所有捕获的数据都会在本地进行加密,这意味着依赖深度包检测的入侵检测系统或网络监控器将只能看到不透明的加密数据块传输到远程端点。
此外,该恶意软件还包含 旨在挫败安全分析师的反调试防御措施报告描述了检测常见调试或分析场景的逻辑,并通过将代码推入无限循环来做出响应,从而有效地锁定进程,使动态检查变得更加困难。
即使卸载了 npm 包,风险依然存在。
这起事件中比较违反直觉的方面之一是: 从项目中移除恶意依赖项并不能自动保护受影响的 WhatsApp 帐户。通过配对过程创建的持久链接确保攻击者的访问权限在卸载后仍然存在。
安全团队强调,Lotusbail 利用了 WhatsApp 多设备模型的设计方式:一旦设备成功连接, 它会继续接收消息和帐户更新,直到所有者手动撤销为止。 在应用程序的设置中。没有与 npm 包的生命周期或宿主应用程序的生命周期关联的自动超时机制。
因此,即使是尽职尽责的开发者,如果识别并删除了该库,却没有同时指导用户,也可能使用户面临风险。 查看 WhatsApp 中已关联设备的列表列表中出现的任何陌生会话都应立即断开连接。
调查人员强调,这种细微差别改变了组织机构对补救措施的思考方式。仅仅……已经不够了。 从构建管道和服务器中清除恶意代码事件响应还必须扩展到代码交互的应用程序生态系统——在本例中,即与被入侵会话关联的 WhatsApp 帐户。
实际上,受影响的项目可能需要 通知用户并轮换 WhatsApp 凭据通过已知可靠的工具重新建立会话,并验证在生产或测试中使用的任何帐户上,是否没有任何攻击者控制的设备仍然获得授权。
谁发现了 Lotusbail,以及它是如何被调查的。
这场运动之所以曝光,要归功于…… Koi Security,由研究员 Tuval Admoni 领导该期刊发表了一篇深入分析该软件包行为的文章。研究人员还补充了一些评论。 伊丹·达迪克曼 这有助于澄清恶意软件的行为就像 WebSocket 客户端的透明包装器,一旦正常的身份验证和消息流开始,它就会激活。
阿德莫尼用直白的语言概括了这一威胁: 该软件包会窃取 WhatsApp 账号凭证,拦截所有消息,收集联系人信息,安装持久性后门,并在发送前对所有信息进行加密。 攻击者会将攻击目标锁定在受控服务器上。这种隐蔽性、广泛性和持久性的结合,使得这起事件从简单的骚扰升级为严重的供应链安全事件。
仅靠静态分析不足以发现风险。因为代码库暴露了与合法库相同的接口和基线行为, 基于声誉的信号,例如下载次数、星级评分或基本的代码检查,对于将其与真正的工具区分开来几乎没有帮助。尽管植入了恶意代码,该软件包仍然能够明目张胆地存在。
研究人员还指出: 恶意软件内置的反分析技术减缓了逆向工程的速度。这就需要更精细的仪器设备和沙箱测试来全面评估其性能。报告发布时,该行动已经进行了数月的运行。
该案例迅速加入了不断增长的基于 npm 的攻击案例列表,这些案例凸显了…… 开放的包裹注册表已成为供应链威胁的主要场所虽然平台可以通过撤下已知的恶意软件包来做出反应,但最初的检测责任通常仍然落在独立的安全团队和警惕的开发人员身上。
针对开发者的供应链恶意软件浪潮愈演愈烈
莲花贝的发现恰逢有关其内容的披露。 其他针对开发者生态系统的恶意软件这凸显出该事件是更大趋势的一部分,而不是一次性的异常事件。
与此同时,安全公司 ReversingLabs 的一项研究详细描述了一个集群 14 个冒充 Nethereum 和其他加密货币相关库的恶意 NuGet 包 在 .NET 世界中,与 WhatsApp 的 npm 案例非常相似,这些软件包旨在与从事区块链和数字资产开发的开发人员使用的合法工具融为一体。
根据这些发现,NuGet 包 将加密货币交易资金重定向到攻击者控制的钱包 或者,当转账金额超过 100 美元时,系统会悄悄提取私钥和助记词。诸如“binance.csharp”、“Bitcoin Core”、“bitapi.net”、“coinbase.api.net”、“googleads.api”、“nbitcoin.unified”、“nethereumnet”、“nethereumunified”、“nethereum.all”、“solananet”、“solnetall”、“solnetall.net”、“solnetplus”和“solnetunified”之类的软件包名称,旨在让人联想到一些知名的工具和服务。
为了建立信任,据报道,这些图书馆背后的运营者 虚报下载统计数据并频繁推送更新 模拟积极的维护和人气。这种社会工程手段与 Lotusbail 利用 npm 的知名度和 Baileys 项目的声誉来获得关注的方式如出一辙。
两个研究团队的专家都认同这一点: 针对开发者的供应链攻击并未减少,反而变得更加复杂。攻击者已经学会了精准地攻击工程师每天依赖的工具,无论是用于消息集成、金融操作还是通用基础设施。
为什么传统防御措施难以应对 npm 供应链威胁
Lotusbail 还指出了许多当前用于保护软件管道的防御措施的局限性。传统的防御方法,例如 静态代码扫描、基本代码检查、简单签名检查和信誉指标 它们通常能够发现明显的危险信号,但很容易忽略嵌入在看似合法的软件包中的微妙恶意逻辑。
因为该库忠实地实现了预期的 WhatsApp Web API 接口, 自动化工具可能看到的仅仅是一个已知良好代码库的略微修改过的分支。即使是人工抽查也可能无法立即发现危险,尤其是当有害代码与合法的网络和加密例程交织在一起时。
基于声誉的系统在这方面也好不到哪里去。许多组织在潜意识里将…… 下载量高,更新频繁,且安全可靠。然而,在这种情况下,这些信号要么是随着时间的推移自然积累的,要么可能是攻击者人为增强的。当任何人都可以发布一个外观相似但描述逼真的软件包时,受欢迎程度并不能保证其完整性。
反调试层进一步增加了动态分析的复杂性。一旦一个软件包能够检测到它 在启用检测功能或连接到调试器的情况下运行,然后触发无限循环或崩溃自动化沙箱难以获取完整的行为特征。这反过来又会减慢签名生成和公开披露的速度。
这些挑战表明需要…… 在生产环境中进行更强大、更注重行为的监控即使静态检查最初批准了数据包,可疑的网络流量、意外的加密模式或异常的数据访问也可能被标记出来。
开发者和组织现在可以做什么
调查莲花湾事件的安全专家强调, 开发者应该将第三方软件包视为不可信代码,即使它们来自像 npm 这样的大型注册表。采取切实可行的措施有助于减少未来遭受类似威胁的风险。
首先,鼓励各队 验证关键依赖项的来源这包括查看官方文档或存储库以获取推荐的软件包名称,验证发布者身份,并尽可能优先选择由知名组织或知名维护者维护的库。
其次,专家建议 在敏感集成周围添加运行时监控和异常检测 例如消息传递 API、支付模块或加密工具。异常的出站连接、意外的加密活动或与文档记录不符的数据流都可能是依赖项遭到破坏的早期迹象。
第三,组织应保持 对所有正在使用的第三方软件包进行清点,并跟踪其随时间的变化在进行重大升级之前,锁定版本、审查变更日志和执行安全评估可以帮助在问题代码进入生产环境之前将其发现。
最后,如果 WhatsApp 集成依赖于恶意 npm 库,则事件响应不应仅限于代码清理。应引导受影响的用户…… 打开 WhatsApp 设置,检查已关联的设备,并删除任何未知会话。如果没有这一步骤,攻击者的配对设备可能仍然能够完全访问对话和内容。
莲花贝事件有力地提醒我们: 仅仅因为某个软件包看起来很眼熟、下载量成千上万或者模仿了某个热门项目就信任它,已经远远不够了。随着攻击者越来越多地将目标对准开发者生态系统,仔细审查依赖项和密切观察运行时行为已成为确保 WhatsApp 帐户及其相关应用程序真正安全的关键部分。