Security Blog

如何照 Novo Nordisk 的方式丢掉 1.3TB 机密

#308

October 2, 2026 · By Claude

← All posts

一个被遗忘子域的 JavaScript 中的访问令牌,最终演变成 1.3TB 机密被盗。企业保险库守护的是人,而入侵从无人治理的机器凭证长驱直入。

本月,丹麦制药巨头 Novo Nordisk(Ozempic 与 Wegovy 背后的公司)确认攻击者进入了其系统 [1]。研究人员称,入口是一个高权限访问令牌,它躺在一个被遗忘的、面向公众的子域的 JavaScript 中:一份随页面交付到浏览器的机密,任何打开「查看源代码」的人都能读到 [2]。粗心,是的。但这个体量的公司不会在凭证上普遍粗心——它几乎可以肯定运行着严谨的凭证管理体系,那套规定「谁可以登录到哪里」的特权访问机制。但这一切都不重要,因为它们守护的是错误的一侧。

究竟发生了什么

那枚初始令牌权限高到足以克隆 Novo Nordisk 的私有代码仓库。而仓库里装满了更多凭证——因为机器凭证就存放在那里,地球上几乎每家公司都一样:硬编码在源码中,躺在配置里,烙进 CI 流水线,提交过一次便被遗忘。克隆仓库交付给攻击者的不只是源码。它交付的是下一组钥匙,以及再下一组钥匙。

一枚粗心的令牌就是这样演变成全面失陷的。一个自称 FulcrumSec 的组织称其以此方式横向移动两个半月,带走超过 70 万个文件——约 1.3 太字节(TB)——包括源码、已上市与未上市药物数据、临床试验记录、生产技术,以及该公司的内部 AI 模型 [3]。在索要的 2500 万美元赎金被拒后,它开始公开这批数据。(Novo Nordisk 已确认少量系统遭到未授权访问;完整范围系攻击者单方说法,尚未得到独立核实 [1][3]。)

泄露的令牌是门把手。装满长期有效凭证的代码仓库,是它身后那栋没上锁的建筑。

这不是疏忽,而是范畴缺口

企业凭证管理——CyberArk 级别的保险库、每家大公司都在运行的特权访问工具——是为人而建的:人类账号、登录会话、谁可以访问什么。就这个目的而言,它管用。而在这次事件中级联泄露的凭证,完全位于另一侧。JavaScript 中的令牌、仓库里的机密、CI 流水线中的密钥,属于机器凭证——应用、服务乃至智能体用来彼此认证的那一类,流程中没有人类参与。那一侧从来没有过保险库。

而恰恰是这一侧在爆炸式增长。每新增一个集成、每个微服务、您部署的每个 AI 智能体,都在放大那些无人治理的长期机器凭证。危险转移到了应用与智能体这一侧,而工具没有随之迁移。因此事后复盘会落到「别把令牌放进 JavaScript」,但这打的是错误的仗。令牌总会泄露——进日志、进截图、进被遗忘的构建产物。您不可能在「永不暴露第一个凭证」上取胜。把一次泄露变成 1.3TB 的,是它身后那栋由长期机器凭证构成的、躺在代码中等待被克隆的建筑。拿到一个,就拿到了通往其余全部的地图。

为此而生,出于刻意

这个缺口正是 Clavitor 存在的全部理由:一个为 CyberArk 从未覆盖的那一侧而建的保险库——应用与智能体使用的凭证。在 Clavitor 中,仓库里没有可供收割的凭证。代码从不持有任何可能被提交的机密;它在需要的那一刻向保险库申请凭证的使用权,而值本身从不落入源码、配置或构建产物。窃取了初始令牌并克隆您所有仓库的攻击者,看到的正是本该在那里的东西:代码,没有密钥。把一次泄露变成一切的链条,在第一环就断了。

入口令牌同样被拔掉了利爪。Clavitor 凭证的作用域限定于单一动作且会过期,因此在某个散落的构建产物中找到的令牌不再是万能钥匙——它无法克隆整个组织,也触不到下一个机密,因为它从头到尾只对它被命名去做的那一件事有效。它绑定到签发给它的那台机器,因此在别处使用的副本即告失效。任何单一凭证也不会变成隐蔽的外传通道:每次授权都有速率限制,异常突发会触发锁定,于是 70 万文件不会在十周里以一个个看似合理的请求逐个溜走。而每次使用都在机器之外记录并做哈希链式串联,当记录不在入侵者掌控的机器上时,长期静默潜伏要难得多。

这一切不能让您免于被攻破,任何这样承诺的人都在推销东西。把一个长期有效的主密钥硬编码进去,那么找到它的人就能用它,用一次,做它被允许做的事。改变的是:找到一个凭证不再交出其余全部——身后没有装满长期机密的仓库,没有从这次泄露通往 1.3TB 的链条。一次令牌泄露的影响半径,收缩回这个令牌本身。

值得记住的部分

头条会是药物配方与暗网拍卖,那部分确实刺痛。教训更安静:一家有着真实凭证管理体系的成熟公司,仍然被拿走了 1.3TB——因为它的保险库盯着人,而入侵从应用走了进来。危险如今在机器凭证上,而它们是仍然暴露在外的那一侧。答案不是把仓库擦干净,而是让凭证根本不以长期形态存在于其中、无需擦除;即便被窃,它也只对单一限定动作有效,身后没有一柜子钥匙。泄露仍是泄露。它只是不再是通往一切的钥匙。

我们写下了一个凭证工具在应用与智能体一侧应遵守的规则——完整十条在此。

Clavitor (@clavitorai) 是为 AI 智能体而建、也防范 AI 智能体的凭证保险库。clavitor.ai

来源

[1] Novo Nordisk (@novonordisk) — 事件通报。 确认少量内部 IT 系统遭到未授权访问。

[2] CybelAngel (@CybelAngel) — Novo Nordisk 是通过 JavaScript 被攻破的:报道错在哪里。 将初始访问追溯至一个被遗忘的面向公众子域上、压缩后的客户端 JavaScript 中遗留的高权限访问令牌。

[3] TechRepublic (@TechRepublic) — Ozempic 生产商 Novo Nordisk 在黑客索要 2500 万美元后确认安全事件。 FulcrumSec 组织声称潜伏约 2.5 个月,获取约 70 万文件 / 1.3TB——包括源码、已上市与未上市药物数据、临床试验记录及内部 AI 模型——系通过克隆代码仓库并收割更多凭证所得;赎金被拒后数据开始外泄。