7.6PB 训练数据里,躺着 22 万把还能用的密钥

安全公司 Truffle Security 完成了一次规模空前的扫描:把 Hugging Face 上所有公开数据集从头到尾过了一遍,总量 7.6 PB、1.869 亿个文件,横跨约 81.5 万个数据集仓库。结果是在 6003 个数据集中找到了 221303 把仍然有效、且互不重复的凭据

这里的”有效”不是指长得像密钥的字符串,而是经过 TruffleHog 逐一向对应服务发起认证、确认当下仍能登录的活密钥。该公司此前最大的一次网络级扫描规模约 400 TB,这一次差不多是那次的十九倍。

研究由 Truffle Security 联合创始人 Dylan Ayrey 团队完成。成果在公开前已同步给 Hugging Face,后者深度参与其中,首席技术官 Julien Chaumond 还直接向 TruffleHog 贡献了代码,为其增加了对 Hugging Face 新对象存储桶的原生扫描支持。

7.6 PB 是什么概念

一张 DVD 容量 4.7 GB,7.6 PB 大约相当于 160 万张光盘。把这些光盘叠成一摞,高度约 1.9 公里,接近 4.4 座帝国大厦垒在一起。

扫描过程需要把 Parquet、Arrow、JSONL、压缩包与各类二进制文件统统”摊平”成可检索的文本,再开启验证模式运行 TruffleHog。约 81.5 万个数据集仓库中,有 67 万个左右顺利完成扫描。

最危险的一类:能改别人装的软件

在所有发现里,威胁最直接的是那些能够篡改他人所运行软件的凭据。

训练数据中包含 349 个仍然有效的 GitHub 个人访问令牌,其中 223 个拥有完整仓库写权限、130 个可以改写持续集成流程、112 个具备组织管理员权限、110 个可以发布软件包。此外还有 318 个能够推送镜像的 Docker Hub 令牌。研究团队特别核查了 npm 与 PyPI,未发现有效令牌,因此没有把这两个生态计入。

一个具备仓库写权限的令牌,足以改动其所有者能推送的每一个代码库,而这些改动会随安装分发给所有下游用户。团队发现,其中一个有效令牌属于某个被广泛使用的模型上下文协议(MCP)注册表的创始人,其账号关联着该协议的官方组织,相关仓库合计拥有超过 17.8 万个星标,被主流 AI 编程工具直接依赖。其他案例还包括某大型科技公司工程师、某银行开发者以及某 AI 实验室研究员持有的高权限令牌。出于责任披露考虑,涉事人员与机构名称均未公开。

云账号、数据库与通讯系统

扫描还翻出了大量能够直接打开真实基础设施的密钥。研究团队声明,这些凭据仅用于验证有效性和只读元数据核查——统计数据库容量、Redis 内存计数、S3 存储桶大小指标,没有读取任何数据库记录、没有列举对象、没有下载文件,也没有做任何修改。

  • 云账号接管:8557 个有效的谷歌云服务账号密钥,分布在 3811 个项目中。其中 1926 个是具备数据库访问权的 Firebase 管理员密钥,一个带有明确的所有者角色,还有一个是 Kubernetes 集群管理员。项目元数据显示,部分密钥关联着医疗与支付类应用。
  • 云存储:3343 个 AWS 密钥通过了身份校验,907 个能够列举 S3 存储桶,透过元数据可见的桶共 8676 个。全部桶容量下限为 185 TB,其中经桶策略与公共访问阻断设置确认、明确禁止公开访问的部分达 51.7 TB,单个账号最大 66.9 TB。桶名中频繁出现”生产””备份””发票””客户””账单”等字样。
  • 在线数据库:8594 个仍可登录的数据库账号,按元数据统计涉及 3.5 TB 数据。多数目标看上去是教程和业余项目,MongoDB 集群容量中位数只有 2.8 MB;但长尾同样真实——89 个 MongoDB 集群与 5 个 Postgres 数据库超过 1 GB,最大的一个 MongoDB 集群仅按容量元数据就暴露了 617.7 GB。6802 个 MongoDB 凭据里有 6121 个仍能连通,其中还包括一台隶属美国某国防承包商的 SQL Server,以及若干与巴西联邦机构相关的 Postgres 数据库。
  • 身份冒用:5885 个有效的 Slack 令牌与 Mailgun 密钥。231 个 Slack 令牌中,99.6% 能够识别出所属工作区;5654 个 Mailgun 密钥中,2470 个绑定了自定义发信域名,案例涉及某财富 500 强科技公司的工作区,以及与知名科技和消费品牌相关或高度相似的发信域名。

聊天机器人成了新的泄露通道

一条特别值得注意的发现是:聊天记录本身已经成为独立的泄露路径。

某巴西借贷金融科技公司的一把有效 AWS 密钥之所以进入训练数据,原因仅仅是有人把包含该密钥的代码粘贴进了聊天机器人。这段对话被 LMSYS-Chat-1M 数据集收录,随后被复制了约 18 份。

更极端的例子是一把 Infura 密钥:同样是被粘贴进 ChatGPT 对话,被 WildChat 聊天记录数据集捕获,最终扩散到 1131 个公开数据集、10162 个文件位置。在源头撤销它,对其余 1130 份副本毫无作用。

一年至少 92 万美元的算力被人白嫖

训练数据里同样塞满了通往 AI 服务商本身的密钥:1210 个数据集中共有 11496 把有效密钥,覆盖 OpenAI、Azure OpenAI、Anthropic、Gemini、Groq 等平台。

研究团队没有使用过其中任何一把,因此无法得知真实余额,但可以给出一个下限。新开通计费的 OpenAI 账号默认月度额度为 100 美元,Anthropic 入门档同为 100 美元。扫描发现 742 把有效的 OpenAI 密钥和 26 把 Anthropic 密钥——即便每把都只按最低档跑满,也意味着每月 76800 美元、一年约 92 万美元的推理费用,账单落在毫不知情的密钥所有者头上。

这只是地板价。OpenAI 的额度档位依次为 100、500、1000、5000 美元,最高档 5 万美元每月;Anthropic 最高构建档上限为每月 20 万美元。研究团队发现了 160 把组织所有的 OpenAI 密钥和 34 把机器服务账号密钥,而这类凭据恰恰挂在资金充足的高档位账号上,并且几乎从不轮换。单是一把顶级密钥跑满额度,一个月的账单就超过整次 7.6 PB 扫描的成本。

以上还不包括 1429 把 Gemini 密钥、667 把 DeepSeek 密钥、162 把完全没有免费额度的 xAI Grok 密钥,以及 174 个企业版 Azure OpenAI 部署——其中数个被写进了艾伦人工智能研究所的 Dolma 3 语料。

一次泄露,无限复制

真正让问题失控的是扩散机制。多数密钥最初泄露在别处——某个代码仓库、某个网页、某段聊天记录,随后被吸进 The Stack、Common Crawl 这类上游语料,再随着每一个衍生版本一路流向下游。

数据显示,44% 的有效密钥出现在不止一个数据集中,19380 把出现在十个以上。The Stack 及其各种分支合计携带 51571 把不同的有效密钥,Dolma 系列则携带 28110 把。在那些扩散到十个以上数据集的密钥中,99.3% 都经由这几个上游抓取语料中转。两份近乎相同的 stack-edu 重新上传版本之间,19977 把密钥全部重合。

按数据集统计,有效密钥数量排在前列的包括:马里兰大学的 huginn-dataset(对应模型 Huginn-0125)55876 把、BigCode 血统的 Stack_Tokenized(对应 StarCoder)25217 把、东京科学大学的 swallow-code-v2(对应 Swallow)22484 把、艾伦人工智能研究所的 dolma3_mix-6T(对应 OLMo 3 32B)21278 把、Hugging Face 血统的 stack-edu(对应 SmolLM2)20035 把。这些语料在平台上的累计下载量从数万次到上百万次不等。

至于 ChatGPT、Claude、Gemini、Llama 这类不公开训练数据的模型里有什么,研究团队表示无从判断。

训练数据是最难撤销的泄露

Hugging Face 自身并非毫无防护:平台会对每一次公开仓库推送运行 TruffleHog 扫描,并在确认发现密钥时立即邮件通知作者,该提醒默认开启;企业版组织的 Hugging Face 令牌一旦被推送到公开仓库或存储桶,会被当场自动吊销。

但扫描恰恰量化了这道防线的缺口。训练数据中仍有 787 把有效的 Hugging Face 令牌,其中 237 把具备写权限、70 把是组织管理员。在可追溯来源的 763 把中,约 700 把是从他人语料中被抓取而来,63 把属于所有者自己不慎泄露到自家命名空间。案例包括某 AI 基础设施创业公司的产品负责人把账号级写令牌留在了公司自研的文本转 SQL 评测数据集里,另一位开发者把一个同时具备组织管理、仓库写入、流程改写、软件包发布与仓库删除权限的 GitHub 令牌提交进了一份语音数据集。

Ayrey 强调,代码仓库里的密钥还能靠强制推送从历史中抹掉,训练数据集则没有撤销键。一旦密钥进入已发布语料,它就已经被复制进各种衍生数据集、下载到成千上万台机器上,并被折叠进模型权重。数据集之所以有价值,正是因为它们永久、可版本化、可反复混用——而这恰好让其中的泄露无法清理。

唯一有效的补救仍然是轮换密钥。撤销之后,数据集里的那串字符就变回一段无害的文本;在此之前,每一次数据复用都会让它继续生效。

研究团队也承认披露本身是个难题:给 221303 个所有者逐一发邮件并不现实,其中大多数人根本不知道训练数据集是什么,更不知道自己身在其中。因此团队选择从服务商一侧入手,通知受影响客户最多的厂商进行批量吊销;最高危的发现——包括那把可访问 393 GB 个人身份信息、覆盖研究团队估算约占全球人口 3.7% 的密钥——已提前通知相关方,并等待关键方确认接收后才发布。文中未公开任何人员、公司或数据集名称,也未披露文件路径与密钥内容。

需要提醒的是,由于数据集名称与路径被有意隐去,外部研究者无法独立复现文中的总量数字,这些结果目前仍属该公司自行报告的口径。Truffle Security 本身也是这一领域的商业玩家:2021 年获得由 a16z 领投的 1400 万美元 A 轮融资,2025 年 11 月 6 日宣布完成由英特尔资本与 a16z 共同领投的 2500 万美元 B 轮融资。

该公司此前还有过类似发现:在 400 TB 的 Common Crawl 语料中查出 11908 把有效密钥,而这份语料正是包括 DeepSeek 在内的众多模型的训练数据来源之一。

来源:Truffle Security 官方博客,作者 Dylan Ayrey


发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注