开源软件供应链再次拉响红色警报。JFrog安全研究团队近期披露了一起针对开发者群体的高精度攻击事件——攻击者将恶意代码封装进名为 @openclaw-ai/openclawai 的npm包,对外伪装成合法的OpenClaw CLI安装工具。该威胁内部代号为 GhostLoader,本质上是一套功能完整的信息窃取器叠加远程控制木马(RAT)的复合体,能够在开发者毫无察觉的情况下完成凭证收割、数据外发与长期后门驻留。

npm supply chain attack

一、低可见度伪装:为什么常规审计很难发现它

这个恶意npm包在静态审查阶段几乎不会触发任何告警。它的 package.json 文件结构整洁,src/index.js 出口文件看起来完全正常,且没有引入任何可疑的额外依赖。对于习惯快速扫一眼依赖列表就继续开发的工程师来说,这包"长得"太安全了。

真正的杀招藏在 scripts 目录里。postinstall 钩子会在安装阶段静默执行全局安装,把 openclaw 命令写进系统 PATH。当开发者后续在终端输入 openclaw 时,触发的并不是正常的 CLI 工具,而是经过高强度混淆的 scripts/setup.js——第一阶段加载器。

更狡猾的是,运行后屏幕上会弹出一个带进度条、日志动画的"安装界面",仿真度极高。开发者以为自己在等待正常的软件初始化,实际上混淆代码正在后台外联 C2 服务器 trackpipe.dev,准备下载下一阶段载荷。

二、社会工程学升级:伪造系统弹窗骗取root密码

在载荷投递之前,GhostLoader 会先玩一把心理战它会弹出仿苹果钥匙串(Keychain)风格的系统提示框,声称需要"安全存储凭证"并要求输入系统密码。更离谱的是,这个弹窗调用了操作系统真实的认证接口做校验——macOS、Windows、Linux 全平台通吃。受害者输入密码后,程序不仅拿到了明文口令,还借"正常认证行为"的假象消解了用户的戒备心。

拿到密码的同时,setup.js 开始解码内置的 XOR 加密 URL 与活动 ID,向 hxxps://trackpipe[.]dev 发起请求,拉取一段经 AES-256-GCM 加密的第二阶段载荷。解密后的 JavaScript 被写入 /tmp/sys-opt-*.js 这类临时文件,在独立 Node 进程中执行,并通过环境变量传递刚刚窃取的密码与活动标签:

  • NODE_AUTH_TOKEN

  • NODE_CHANNEL=complexarchaeologist1

大约一分钟后,这个临时文件会自动销毁,极大增加了事后取证难度。

三、攻击链拆解:从一次npm install到长期后门

第二阶段载荷 GhostLoader 本体是一个长达 11700 行的 CommonJS 模块。它的首要任务是建立持久化机制,把自己伪装成"npm 遥测服务"潜伏下来:

表格

平台 持久化路径
macOS / Linux ~/.cache/.npm_telemetry/monitor.js
Windows %APPDATA%/.npm_telemetry/monitor.js

为了保活,它会向 .zshrc.bashrc.bash_profile 追加伪装成"NPM Telemetry Integration Service"的启动项;在 Linux 上写入 @reboot 定时任务;同时用 PID 锁保证单例运行,防止重复启动暴露行踪。

C2 通信采用 JSON 格式响应,包含 payload(Base64 加密载荷)与 k(十六进制解密密钥),解密算法仍为 AES-256-GCM。首次上线后,GhostLoader 会在 10 分钟内完成一轮高强度数据搜刮,并通过 Telegram Bot 向攻击者发送"新会话"告警,内容涵盖受害者的系统密码、主机名、IP国家与设备配置。

四、开发者成了"高价值目标":窃取清单触目惊心

与泛用型木马不同,GhostLoader 的攻击清单明显是为开发者量身定制的。除了常规的浏览器密码、Cookie 和支付信息,它还会专门搜刮以下核心资产:

基础设施凭证

  • SSH 私钥(~/.ssh/ 目录)

  • AWS、Azure、GCP 云平台 Access Key

  • Kubernetes kubeconfig

  • Docker 配置与仓库凭证

  • npm、Git 账号令牌

  • GitHub CLI 主机配置

加密货币资产

  • 主流钱包应用数据

  • 浏览器扩展助记词(BIP-39)

  • Solana 密钥

AI 智能体与项目数据

  • ZeroClaw、PicoClaw、OpenClaw 目录下的智能体配置

  • 环境变量中的 API 密钥(OpenAI、Stripe 等)

浏览器与系统深度数据

  • macOS 与 iCloud 钥匙串

  • Chromium、Firefox 存储的密码与 Cookie

  • 桌面、文档、下载目录中的敏感文件

对于受苹果数据保护(Data Protection)限制的 Safari 数据,如果当前权限不足,GhostLoader 还会通过 AppleScript 诱导用户为终端授予"完全磁盘访问权限",甚至贴心地提供"打开系统设置"的按钮。一旦得手,备忘录、iMessage、邮件、Safari 历史记录乃至苹果账号数据库全部沦陷。

session hijacking

遇到无法直接通过 SQLite 提取的 Cookie 时,这套木马还会启动无头 Chromium,利用 Chrome DevTools Protocol(CDP)通过 --remote-debugging-port 程序化导出全部会话状态。换句话说,攻击者不需要知道你的密码,就能直接接管你已登录的账号。

所有窃取到的数据会被打包成 [国家码]用户名_持久ID.tar.gz,通过多重渠道外发:小文件走 Telegram Bot API,大文件上传 GoFile.io核心数据同步回传 trackpipe.dev。攻击者的 Telegram 会收到一份格式化的 GhostLoader 报告,汇总密码、支付信息、自动填充条目、钱包、助记词、SSH 密钥、权限状态、持久化方式与 AI 智能体信息,一目了然。

五、不止偷数据:GhostLoader的RAT远程控制模式

完成首轮搜刮后,GhostLoader 并不会离场。后续每次启动,它会切换为持久化 RAT 模式,向 C2 面板注册上线并获取 Telegram 配置,进入长期监控状态:

  • 剪贴板实时监控:每 3 秒扫描一次剪贴板,专门抓取加密货币私钥、AWS 密钥OpenAI / Stripe API 密钥以及助记词。

  • 指令轮询:约每 25 秒(带随机抖动)向 C2 请求一次指令,支持执行系统命令、更新载荷、重新采集数据、任意目录文件外发、启动/停止 SOCKS5 代理。

  • 浏览器会话克隆:收到 CLONE_START 指令后,复制完整浏览器配置并启动带远程调试的无头 Chromium,将 CDP WebSocket 端口转发回 C2。攻击者可以直接在浏览器里操作受害者的已登录会话,绕开所有密码验证。

为了对抗安全分析,GhostLoader 还内置了多重规避手段:独立进程运行并伪装进程名、自动清理临时载荷、外发后清空窃取目录、支持 NUKE 自毁指令一键清除启动项与定时任务。这种"用完即焚"的设计让应急响应团队很难在现场提取到完整样本。

JFrog security research

六、企业如何防御与事后处置

JFrog 已将 @openclaw-ai/openclawai 纳入 Xray 与 Curation 的拦截名单,使用其软件供应链安全产品的企业可在安装阶段自动阻断该包。对于尚未部署此类工具的团队,建议从以下几个层面加固防线:

事前预防

  • 仅通过官方渠道安装 OpenClaw 等开发工具,警惕名称相似或带额外后缀的包名。

  • 在 CI/CD 流水线中集成 SCA(软件成分分析)工具,对 postinstall 脚本、全局安装行为与可疑网络请求实施强制审查。

  • 对请求系统密码、安装阶段下载远程加密载荷的 npm 包保持零容忍。

事后清理(如已安装)

  • 检查并清理 Shell 配置文件(.zshrc.bashrc.bash_profile)中名为"NPM Telemetry Integration Service"的启动项。

  • 删除 ~/.cache/.npm_telemetry/%APPDATA%/.npm_telemetry/ 目录,终止 monitor.js 相关进程。

  • 检查系统定时任务(crontab -l)中标记为"Node.js Telemetry Collection"的条目并删除。

  • 卸载恶意包后,强烈建议全盘重装系统。GhostLoader 的持久化机制与自毁逻辑复杂,手工清理极易遗漏。

  • 轮换所有可能暴露的凭证:SSH 密钥、云平台 Access Key、Git 令牌、API 密钥、钱包助记词。

七、入侵指标(IOC)速查表

表格

指标类型 具体内容
恶意包名 @openclaw-ai/openclawai
包类型 NPM
涉及版本 1.5.151.5.14
XRAY-ID XRAY-949975
C2 域名 hxxps[://]trackpipe[.]dev
引导路径 /t/bootstrap?t=fafc0e77-9c1b-4fe1-bf7e-d24d2570e50e
活动 ID complexarchaeologist1
安装目录 ~/.cache/.npm_telemetry/
执行文件 monitor.js
临时文件 /tmp/sys-opt-*.js
Shell 注释 # NPM Telemetry Integration Service
Cron 注释 # Node.js Telemetry Collection
加密算法 AES-256-GCM(16 字节 IV + 16 字节 Tag)
IP 查询接口 hxxps[://]ipinfo[.]io/json
备用上传 GoFile.io API
数据外发通道 Telegram Bot API、C2 面板
环境变量 NODE_AUTH_TOKENNODE_CHANNELNPM_CONFIG_TAGGHOST_RECOLLECTGHOST_TG_CONFIG

credential theft attack

这起事件再次印证了一个残酷现实:攻击者正在把开源包管理器当成精准狙击开发者的武器平台。GhostLoader 之所以危险,不仅在于技术层面的混淆与加密,更在于它深度利用了开发者对工具链的天然信任。一次看似平常的 npm install,背后可能是一次完整的内网渗透起点。对于手握核心基础设施凭证的工程师来说,保持对供应链安全的警觉,早已不是可选项,而是必修课。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐