近日,安全研究人员曝光了一起针对AI开发者群体的新型供应链攻击。在2026年3月20日,一个名为 gemini-ai-checker 的包被发布到npm公共仓库,其描述声称是一个“Google Gemini AI令牌校验工具”。这个包由账户 gemini-check 维护,表面看起来非常规范,包含了44个文件和 SECURITY.md 等文档,整个包体积约为271kB,意图营造出一种可信的假象。
然而,根据Cyber and Ramen团队以及微软威胁情报部门的深入分析,这个包实际上是一个精心设计的恶意程序,其核心目标是窃取开发者本地环境中的AI工具凭证、会话历史记录乃至源代码。
伪装手法与载荷下发机制
gemini-ai-checker 的README内容完全复制自一个名为 chai-await-async 的合法JavaScript测试库,与Google Gemini服务没有任何实际关联。这种明显的描述与功能不匹配本应引起开发者的警觉,但很多人在安装时可能并未仔细检查。
该包的恶意逻辑主要隐藏在两个文件中:
libconfig.js:将C2(命令与控制)服务器的配置信息(包括域名、认证令牌、路径等)拆分成多个独立的变量进行存储。这种“化整为零”的手法,可以有效规避基于完整字符串匹配的静态安全扫描。
libcaller.js:在包被安装时,会动态重组上述配置片段,并向 server-check-genimi.vercel.app(一个托管在Vercel平台上的域名)发起HTTP GET请求,最多会重试5次。
如果这个中转服务器在返回的HTTP 404响应体中包含一个 token 字段,那么其中编码的载荷就会被解码,并直接在内存中执行。攻击者在这里使用了一个技巧:他们没有用常见的 eval 函数,而是使用了 Function.constructor 来动态执行代码,这可以帮助他们绕过一些将 eval 直接标记为危险信号的静态分析工具。整个过程没有向磁盘写入任何文件,进一步降低了被传统终端安全软件检测到的风险。
载荷功能架构:OtterCookie后门变种
在内存中执行的JavaScript载荷,被确认为是 OtterCookie 后门程序的一个新变种。OtterCookie此前被归因于具有朝鲜背景的“Contagious Interview”攻击活动,微软在2026年3月的一份报告中指出,该恶意软件家族自2025年10月起就持续活跃。
这个载荷采用了四模块架构,每个模块都以独立的 Node.js 进程运行,并分别连接到一个C2主服务器 216.126.237.71 的不同端口:
- 模块0:基于Socket.IO建立了一个持久化的远程访问通道,为攻击者提供长期控制能力。
- 模块1:负责扫描浏览器的本地数据库,以及超过25种加密货币钱包(包括MetaMask、Exodus等)的本地存储文件。
- 模块2:遍历用户的主目录,除了收集常见的敏感文件(如
.ssh 密钥、.aws 配置、各种文档)之外,其扫描重点特别放在了AI开发工具的专用目录上,具体包括:
- Cursor(
.cursor 目录)
- Claude(
.claude 目录)
- Windsurf、PearAI、Gemini CLI、Eigent AI
这些目录中通常保存着API密钥、对话历史、会话令牌,甚至可能包含部分源代码片段。
- 模块3:这是一个剪贴板监控模块,它会每500毫秒检查一次剪贴板的内容。模块还设置了3000毫秒的启动延迟,可能是为了规避沙箱环境对程序启动初期行为的动态检测。
相关恶意包与当前状态
除了 gemini-ai-checker,同一威胁行为者还在 npm 上维护了 express-flowlimit 和 chai-extensions-extras 两个包。这三个恶意包共享同一套Vercel中转基础设施。截至分析报告发布时,这三个包的总下载量已超过500次。
gemini-ai-checker 在2026年4月1日前已被npm官方移除。但值得注意的是,express-flowlimit 与 chai-extensions-extras 在报告发布时仍可公开获取,并且下载记录仍在持续增加。
防范建议
对于开发团队和安全运营团队,可以采取以下措施来降低此类 供应链攻击 的风险:
- 网络层监控:在企业网络边界,监控或直接阻断对
*.vercel.app 域名,特别是对 server-check-genimi.vercel.app 的非必要出站连接。
- 进程行为检测:可以利用微软公开的KQL(Kusto查询语言)检测规则,来监控Node.js进程中异常的子进程派生行为及网络连接活动。
- 开发环境加固:将
.cursor、.claude 等AI工具配置目录,纳入与 .ssh、.aws 同等级别的敏感数据保护策略中,严格控制其访问权限。
- 安装前审查:开发者在安装npm包之前,应花点时间核对包名、描述和README内容是否一致。对于近期创建、描述模糊,或者与知名服务/包名称高度相似的包,应保持高度警惕。
- 社区协作:在npm平台上发现疑似仿冒或行为可疑的包时,建议通过官方渠道进行举报,协助社区尽早发现和阻断威胁的扩散。
资讯来源:本文内容基于Cyber and Ramen研究团队及微软威胁情报中心于2026年4月发布的关于“gemini-ai-checker”恶意npm包的技术分析报告整理。
对这类潜伏在开源生态中的 安全 威胁,保持警惕和良好的安全习惯至关重要。如果你想了解更多实战案例或与同行交流防护经验,欢迎来云栈社区的对应板块讨论。
|