不久前,一个外观精致、功能完整的 npm 软件包被安全团队抓了个现行。它在开发者眼前扮演着“OpenAI 代码工具远程界面”的角色,却悄悄掏空了每一个信任它的用户的认证令牌。这个包名叫 codexui-android,从界面到文档都没有露出任何恶意痕迹,甚至积累起真实用户群——每周下载量达到 2.7 万次,配套的 GitHub 仓库也在持续更新。而在这些光鲜外衣之下,盗取凭据的代码从一开始就埋在了发布包里。

Aikido 在与 Cyber Security News 共享的报告里点出,这个包所有已发布版本都包含一段隐藏逻辑,一旦工具启动就会立即触发,无需用户任何交互。恶意代码抢在应用程序之前运行,从启动那一刻起就拥有了对存储的身份验证文件的全部访问权限。最迷惑人的一点是,这段偷窃代码从未提交到 GitHub 仓库,只存在于分发出去的 npm 包里。任何人去查阅源码仓库都看不到可疑痕迹,因为盗窃逻辑完全藏在已构建好的发布包内部。

打开网易新闻 查看精彩图片

窃取动作直接瞄准存放在用户 Codex 主目录下的 auth.json 文件。抓取到的内容会用密钥 “anyclaw2026” 进行异或加密,再经过 base64 编码,然后静默发送到攻击者控制的服务器。这条外传通道的端点名为 sentry.anyclaw[.]store/startlog,刻意模仿正常的 Sentry 错误报告连接,即便在日常网络监控中也极容易被当成普通遥测流量放行。攻击者显然仔细设计过伪装——正常运作的 Sentry 错误上报本就是该包的一部分合法功能,夹在其中的窃取连接几乎可以彻底隐身。

更要命的是这次盗窃的彻底程度。这个包一次性卷走访问令牌、刷新令牌、身份令牌以及账户 ID 四类信息。由于刷新令牌根本没有过期时间,攻击者一旦获取,就可以悄无声息地持续冒充受害者,长期不受影响地调用相关服务。在发布包的核心文件 chunk-PUR7OUAG.js 中,恶意逻辑被写在模块加载阶段,不需要任何显式调用或条件判断就能自行触发。源代码映射中甚至留下一条注释,声称令牌“总是”会被发送,完全独立于产品的其他功能。这绝不是意外,而是一起精心策划的长期隐蔽行动。

攻击者还把这个策略延伸到移动端。同一位作者在 Google Play 上架了一款名为 “OpenClaw Codex Claude AI Agent” 的安卓应用,明显企图将同样的窃取机制带到更广泛的设备上。虽然目前公开信息尚未完整披露该安卓应用的具体恶意行为,但仅凭同一开发者、相同的产品伪装风格与重叠的命名方式,就足以说明这次供应环节攻击从一开始就不只盯着 npm 生态。

这起事件最让开发者后背发凉的地方,在于攻击所需的“信任”完全由受害者主动交出。为了偷到令牌,攻击者花了实打实的精力做出一个可信、有用的项目,然后让它理所当然地出现在工程师们的日常工具链里。当生成式 AI 工具全面铺开,越来越多开发者习惯伸手去拿现成的生产力捷径时,这类把“合法项目”本身当作攻击向量的手法,恐怕只是一个开篇。