以色列安全公司潜伏npm投毒:伪装AI工具偷开发者身份数据

导语:一个自诩”保护网络安全”的以色列初创公司,在隐形模式下干起了APT的活——在npm仓库里投放7个恶意包,伪装成Anthropic、Vercel、LangChain等当红AI开发工具,约2万次下载。攻击者不偷密码不偷密钥,专门收集开发者身份数据。大概应了那句话:”真正的猎人,总以猎物形象出现。”


一、事件概述

背景

2026年6月下旬,OpenSourceMalware.com的研究人员发现了一批可疑的npm包。这些包以typosquatting(域名仿冒)手法,冒充主流AI开发工具:

恶意包名仿冒对象
anthropic-toolkitAnthropic SDK
ai-sdk-helpersVercel AI SDK
@langgraphjs/toolkitLangChain LangGraph.js
ollama-helpersOllama
openai-agents-helpersOpenAI
@aspect-security/argon2Aspect Security / argon2密码库

7个包,两天内集中发布,累计约20,000次下载。在被移除前,每一次安装都触发过一次信标。研究员明确指出:2万次是下限,实际中招机器只多不少。


二、技术手法

利用npm安装脚本作恶

这批恶意包的核心伎俩是滥用npm install-time脚本

当开发者执行npm install时,npm会先执行preinstallpostinstall脚本——此时包的代码还未被任何项目代码引用。这意味着恶意代码以开发者本人的权限运行在其机器上,如果是在CI/CD环境中运行,还可能暴露持有云凭证的构建账号。

恶意包内的TypeScript代码实际上从未被调用,它的存在纯粹是烟幕弹,用来应付代码审计。而真正的载荷藏在postinstall脚本里,审计代码的人看到的是无辜的TypeScript文件,运行代码的人却已被全套带走。

定向”不偷”:聪明的选择性

这批恶意脚本最值得注意的设计决策是它明确跳过凭证类数据

  • 不收集:密码、API Token、私钥
  • 不碰:git remote URL中嵌入的凭证
  • 专门收集:机器主机名、用户名、git邮箱、SSH邮箱、项目git reflog中至多15个队友邮箱、GitHub CLI身份、AWS/Google Cloud配置文件名和账户ID、企业DNS搜索域、私人项目元数据

研究人员的判断是:这是一种有意识的战术选择。凭证被盗后几小时内就会被轮换,而身份档案永不过期,在安全审计中看起来就像普通流量。

数据流向:Google Cloud Run端点(run.app域名)。由于该流量终止于Google边缘节点,且run.app在大多数企业出口白名单上,恶意流量几乎畅行无阻。


三、”网络安全公司”的投毒逻辑

从”产品种草”到长期布局

大多数npm供应链攻击使用一次性抛掷账号,这批包则不然。

研究人员追查到发布账号的所有者——一个真实存在的以色列网络安全公司创始人,该公司仍处于隐形模式,有公开网站和可识别的管理层。研究人员选择不公开公司名称和个人身份,但已将发现报告给npm及其他相关方。

这不是草台班子的临时起意:从时间线看,该攻击者早在两个月前就在@aspect-security/argon2包中试水了一版更粗糙的信标,随后在6月密集迭代改进,才推出这套精准的AI工具伪冒组合。

研究人员的最合理推断是:产品种草(Product Seeding)——一个隐形安全初创公司正在用最原始的方式,建立一份真实的开发者环境私人数据集。

请注意,这家公司是以色列的网络安全初创公司。讽刺程度MAX。

以色列安全公司创始人被指为npm投毒活动幕后主使

图片来源:International Cyber Digest


四、影响范围

  • 影响平台:npm(JavaScript生态)
  • 影响对象:使用上述仿冒包的AI开发者
  • 中招量级:约20,000次下载(下限)
  • 数据暴露:开发者身份档案、企业内网DNS域、云平台账户ID
  • 投递物:Google Cloud Run端点(已下线)
  • 恶意账号:已封禁,npm包已移除

五、处置建议

立即行动

  • 检查是否安装过上述任意一个恶意包,尤其在2026年6月下旬至7月初期间执行过npm install的机器
  • 在CI/CD构建日志中检索postinstall执行记录,排查异常网络行为
  • 排查Google Cloud Console中是否存在来自run.app端点的异常API调用

检测思路

监控npm install执行后是否有出站流量发往*.run.app域名;或检测postinstall脚本中是否出现对os.hostname()os.userInfo()child_process.execSync('git config --global user.email')的系统调用组合。

长期建议

  • 锁定npm安装脚本执行权限,在CI/CD中使用--ignore-scripts
  • 开发环境与生产CI环境网络隔离,避免构建账号持有高权限云凭证
  • 定期审计package-lock.json中的未知依赖

六、一点冷思考

事件最讽刺之处在于:一个以色列网络安全初创公司,处于”隐形模式”,做的事是往npm仓库里扔infostealer。

这大概是继”杀毒软件自带后门”之后,网络安全行业对自身商业道德的又一次创造性突破。

下次再看到哪家以色列”安全公司”发布APT报告、预警漏洞,或者向全球出售”高级持续性威胁防护解决方案”时,不妨先查查他们的npm历史。

毕竟,真正的APT,从来不写进产品手册里。


版权声明:本文由华盟网原创发布,保留所有权利。配图由华盟网授权使用。

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容