攻击者成功向官方扩展仓库发布了恶意版本 nrwl.angular-console (Nx Console)。
根据 Nx 官方安全公告:
Visual Studio Marketplace:
OpenVSX 扩展仓库:
随后维护者发布了确认安全的版本 18.100.0。
官方表示受影响用户“非常少”,但并非为零。
扩展安装后表面看起来正常,但在开发者打开任何工作区时会执行隐藏逻辑。
安全研究人员发现该扩展会从 Nx GitHub 仓库基础设施中的隐藏位置下载一个 约 498KB 的混淆载荷并执行。
这个载荷是一个多阶段的凭证窃取程序,专门针对开发者环境设计。
恶意程序会扫描本地文件和环境变量,寻找常见开发环境中的高价值凭证,包括:
op 会话开启,还可能读取 1Password CLI 数据收集到的数据会通过多种渠道外传,包括:
这些方式可以快速将凭证从受害机器中窃取出去。
除了窃取凭证,恶意代码还试图在系统中建立长期访问能力。
Nx 安全公告列出了以下持久化痕迹:
~/.local/share/kitty/cat.py~/Library/LaunchAgents/com.user.kitty-monitor.plist/var/tmp/.gh_update_state/tmp/kitty-* 临时文件此外还可能出现:
cat.py__DAEMONIZED=1 的进程不同系统的持久化方式不同:
即使删除扩展本身,这些机制仍可能让攻击者继续访问系统。
这次攻击并不是孤立事件。
在 2025 年 8 月,Nx 生态曾发生一次严重的 npm 供应链攻击:攻击者发布恶意版本的 nx 及相关插件,在安装时扫描本地系统并收集凭证,然后上传到攻击者控制的 GitHub 仓库。
2026 年的扩展事件再次说明两个趋势:
在此次事件中,Nx 团队表示攻击者是通过被泄露的 GitHub 发布凭证发布恶意扩展,从而绕过正常发布流程。
如果开发者在以下时间段安装或自动更新到 Nx Console 18.95.0,就可能受到影响:
涉及环境包括:
如果在该时间段安装过该版本,应假设该工作站中的凭证可能已被泄露。
开发者应检查系统是否出现以下迹象:
~/.local/share/kitty/cat.py~/Library/LaunchAgents/com.user.kitty-monitor.plist/var/tmp/.gh_update_state/tmp/kitty-* 临时文件cat.py Python 进程__DAEMONIZED=1 环境变量的进程 如果发现这些迹象,应立即视为系统已被入侵。
如果存在潜在暴露风险,建议立即执行以下步骤:
cat.py 或带 __DAEMONIZED=1 的进程)。launchctl unload ~/Library/LaunchAgents/com.user.kitty-monitor.plist
如果确认机器已被入侵,最安全的做法通常是重新安装或重建工作站环境,并从干净设备重新生成所有凭证。
这起事件再次提醒:软件供应链不仅包含代码库,还包括开发工具本身。
IDE 插件、构建工具、包管理器如今都拥有访问源代码、云凭证和 CI 系统的权限,因此成为攻击者极具吸引力的目标。
即便攻击窗口只有几十分钟,也足以让攻击者窃取大量敏感凭证。
对组织而言,这意味着:
这些措施正逐渐成为现代软件安全体系中的必需部分。