深海军蓝背景上的抽象技术插画:左侧,一个发光的琥珀色钥匙剪影由一根垂直细线悬吊,一根细横线从它向右延伸,接入一面向远处退去的高大磨砂玻璃板墙面。其中三块玻璃板从背后透出温暖的琥珀色光,其余保持钢蓝色。一道带小刻度线的细青色弧线从左下方向上攀升,横跨整面墙。画面中没有人物、标识或可读文字。OrcaRouter 标识位于右下角的白色条带中。
AI Safety Incidents

CrowdSec 因离职流程漏洞在九分钟内丢失了 170 个私有仓库

作者

Elias Hawthorne

发布日期

最新模型 · 20查看全部模型 →
基准测试:Artificial Analysis · 每日更新
返回全部文章

2026年5月22日,UTC 05:52:29 至 06:01:33 之间,有人通过位于加拿大多伦多的一个 IP 地址进行操作,使用了一名刚离开 CrowdSec 的开发者的 GitHub 账户,复制了这家法国安全公司约 170 个私有仓库。CrowdSec 在2026年9月18日发布的自家事件报告中公布了这一时间线——这也是 AI 事件档案为本记录指定的日期——此前,其源代码的一个存档于 9 月 16 日出现在 pwnforum 网络犯罪市场上。该账户仍然可用,因为公司有意保留了这名开发者的 GitHub 访问权限,以便其完成一些工作。其背后的笔记本电脑在十一天前已被 Mini Shai-Hulud 窃取凭据的蠕虫感染,该蠕虫由 TeamPCP 通过 TanStack 的 npm 包推送。 本条目取自 2026 年 9 月 18 日提交的记录,而完整的已记录事件集——每个条目都带有各自的严重性、置信度等级、争议标记和来源——收录于 Orca AI Incident Archive,在这里,这一条可与同年的其他供应链案例并排阅读。

这起盗窃并未局限于代码。CrowdSec 的报告还披露了 83 名用户的电子邮件地址,这些地址取自一份内部数据科学监控名单,且大多是 Gmail 账户;此外还披露了 2020 年的 51 名潜在投资者的姓名、电子邮件地址和投资背景。相对于约 15 万名用户,83 个地址只占很小一部分;但并非为零。首席执行官 Philippe Humeau 把个人道歉留给投资者:“泄露你们的姓名和电子邮件地址是我们将直接与你们以及主管机构讨论的问题,为此我个人表示歉意。”

九分钟实际耗费了什么

Dark navy HTML timeline card with a faint grid, kicked 'crowdsec · 22 may to 18 september 2026 · times as published' and headed 'The nine minutes, and the 117 days after'. Two columns of timestamped rows. Left, headed 'Upstream, then the copy': 11 May, 84 malicious versions across 42 TanStack npm packages ship the Mini Shai-Hulud credential harvester; 22 May 05:52:29, the copy window opens with a first fetch logged at 05:52:32.138 UTC; 22 May 06:01:33, the window closes with about 170 private repositories copied from an IP in Toronto, machine timezone UTC-4; 25 May, the former developer's account is removed from the GitHub organisation, three days after the copy. Right, headed 'Before disclosure, then discovery': 17 August, the exposed AWS SNS token is probed from 23.234.84.102 and reaches no further than a single topic; 16 September 17:45, an archive of CrowdSec source code is published on the pwnforum marketplace; 16 September 20:00, the Fuites Info team contacts CrowdSec and a crisis cell is stood up; 17 September, token rotation begins and GitHub support traces the token's lifecycle; 18 September, the full report discloses 83 user email addresses and the details of 51 potential investors from 2020. A highlighted band reads 'The account was left open on purpose so a departing developer could finish some work. It was revoked on 25 May, after the repositories were already gone.' A footer cites CrowdSec's analysis of 18 September 2026. The OrcaRouter logo sits in a white strip at the bottom right.

GitHub 交还给 CrowdSec 的 Git 记录始于 UTC 05:52:32.138,当时对该公司其中一个仓库执行了一次 fetch,活动于 06:01:33 停止。该档案中约 170 个私有仓库的数字来自这些 Git 数据。Humeau 在其文章中称此次暴露“仅限于 CrowdSecurity 的源代码,包括 130 多个公开仓库和许多私有仓库”。DevOps.com 在 9 月 24 日报道该事件时,将公开和私有仓库的合计数量定为约 300 个仓库——这一数字大于 CrowdSec 自己给出的私有仓库数量,也是该公司报告中没有说明的数字。

这些内容是一家快速发展的 SaaS 公司的常见组成部分:Web 控制台的源代码、部署与自动化脚本,以及其分析功能背后的数据科学脚本和模型。CrowdSec 所指出的最敏感的一项,是决定哪些 IP 地址进入其屏蔽列表的“共识算法”。该算法的架构此前已经公开,但其多样性和检测阈值并未公开,而现在这些都已为人所知。Humeau 认为,这些阈值是不断变化的目标,而且操纵共识仍然需要一支庞大且昂贵的服务器集群;该公司表示,它可以调整这些阈值,并正在留意不一致之处。

凭证是本来可能糟糕得多的部分。“我们当时非常接近干净状态,”Humeau 写道。转储中唯一可用的机密是一个 AWS Simple Notification Service 令牌,其权限范围仅限于向单个主题发布消息。有人在 2026年8月17日 从 IP 23.234.84.102 对其进行了测试,针对 dev 和 env 两个主题调用了 GetCallerIdentity 和 ListTopics,但没有取得进一步进展。代码中的大多数其他令牌和机密在泄露前已被撤销或轮换。CrowdSec 表示,其基础设施和数据库未被访问,开源项目、其私有源代码或其构建流水线中没有任何代码被更改。

Dark navy HTML card headed 'What left the building', kicked 'the exposure, as crowdsec counted it'. Five tiles across the top. 170, private repositories copied in the nine-minute window per the Git activity GitHub returned, noted 22 May 2026 05:52 to 06:01 UTC. 130+, public repositories the CEO says were also in the leak alongside many private ones, with a note that DevOps.com puts the combined figure at about 300. 83, user email addresses mostly Gmail drawn from a data-science monitoring list, out of roughly 150,000 users. 51, potential investors from 2020 with names, addresses and investment context, described as the group the CEO apologised to personally. 1, usable credential in the dump, an AWS SNS token scoped to one topic, probed 17 August from 23.234.84.102. Four smaller tiles below read: console source, the SaaS web console not open-sourced and not intended to be; data-science scripts and models, of little use without the data that trains them; automation scripts, deployment, QA and Slack bots that the company calls no-risk; consensus thresholds, the diversity and detection limits that were not public before. A highlighted band reads 'No infrastructure, no databases, no code changes, CrowdSec's finding. The data-science scripts and models and the blocklist consensus thresholds went with the source.' A footer cites CrowdSec on 18 September 2026, Dark Reading on 22 September and DevOps.com on 24 September. The OrcaRouter logo sits in a white strip at the bottom right.

为什么账户仍然可以正常使用

这次离职流程的失误很小,也很具体。到这名开发者离开时,CrowdSec 已经撤销了他的其他访问权限;Humeau 写道,GitHub 账号之所以被保留,是因为“我们与这名开发者好聚好散,他想完成一些工作。”该账号从 GitHub 组织中被移除,时间是5月25日,此时距仓库被复制已过去三天。

CrowdSec 当时无法发现这起盗用事件,原因值得准确说明。该 OAuth 令牌没有出现在该组织的审计日志或任何现任成员的审计日志中,而且等到有人去查找时,它已不复存在:它被创建、使用并过期,没有留下公司能够读取的任何痕迹。正如 CrowdSec 自己所指出的,对于未使用企业版计划的组织,GitHub 仅保留滚动七天窗口内的 Git 活动。突破来自 GitHub 支持团队,他们追踪了该令牌的完整生命周期,并提供了复制前后两小时窗口内的 Git 活动。公司正是借此找到了一个已离职员工的账户。回溯到 TanStack 的关联也来自同一次排查。

泄露的归档文件本身就带有证据。其.github/.git/config内部记录了一个源 URL,形式为 oauth2:gho_xxxxxxxxx@github.com,将该凭据识别为 GitHub OAuth 令牌,并与 TeamPCP 记录在案的方法一致。CrowdSec 表示,它检查了开发者机器上是否存在恶意软件包,并在自己的仓库中未发现任何被植入后门的 TanStack 版本——它称这一结果尚无定论,而非能够证明其清白。

是谁做的,以及归因有多确凿

CrowdSec 将此次下载归因于“BreachForum 的创始人之一兼成员 diencracked”,并给出该成员的地址为 diencracked@cock.li,其运营来自多伦多 IP,机器的时区设为 UTC-4。该公司在同一句话中也附加了自己的保留说明:“至少 Git 数据显示如此。”Dark Reading 9 月 22 日的报道也作出了相同的归因,指向 BreachForum 创始人和 diencracked 这一用户名。

这轮上游攻击活动的记录比其背后的身份更完整。TanStack 的软件包于 2026 年 5 月 11 日被植入后门,当时发布了横跨 42 个软件包的 84 个恶意版本;The Hacker News 将此次入侵记录为 CVE-2026-45321,并援引 TanStack 自己的公告来说明该窃取凭据的载荷。CrowdSec 的时间线指出,5 月 22 日,即代码仓库副本出现的同一天,TeamPCP——被 CrowdSec 追踪为 UNC6780——声称对入侵属于 Mistral AI 的代码仓库负责。

什么是已确立的,什么不是

Dark navy HTML card headed 'Established, asserted, and simply absent', kicked 'crowdsec · what the record supports', subtitled 'The archive grades this record confidence A, disputed false, real harm true. That grade covers the event; it does not extend to every claim made about it.' Three columns. 'Established', green: about 170 private repositories copied on 22 May 2026 in a nine-minute window from GitHub's own Git activity records; the account belonged to a departed developer and was revoked 25 May, three days later; 83 user email addresses and the details of 51 potential investors from 2020 appeared in the published archive; no infrastructure or database access and no code altered, per CrowdSec's audit. 'Asserted, not proven', amber: that the laptop was infected through TanStack, since CrowdSec's dev machines came back clean and its repository scan was inconclusive; which poisoned package arrived and when, which CrowdSec says it did not establish; that the downloaders were a BreachForum founder and the member diencracked, offered as what the Git data shows. 'Missing from the record', grey: GitHub's own findings, since support traced the token but no GitHub statement appears in the report; any arrest, charge or court record tying a named person to the copy; any independent forensic examination of CrowdSec's systems. A highlighted band reads 'The strongest evidence in the case is a Git fetch log inside a two-hour window GitHub handed over on request. The weakest is an attribution hedged in the same sentence that makes it.' A footer cites CrowdSec on 18 September, The Hacker News on 19 September and Dark Reading on 22 September. The OrcaRouter logo sits in a white strip at the bottom right.

已确认:2026年5月22日,在一个九分钟的时间窗口内,发生了约170个私有代码库被复制的事件,使用的是已离职开发者仍然有效的 GitHub 账号——这一过程序列是根据 GitHub 自身的 Git 活动记录重建的,而非推断得出。公司自身的说法还确认了:83个用户电子邮箱地址和51位潜在投资者的详细信息遭到泄露、5月25日的权限撤销、被探测的 SNS 令牌,以及未有任何代码被更改、也未触及任何基础设施或数据库这一结论。

尚未确定:究竟是哪个被投毒的软件包到达了这台笔记本电脑,以及是在什么时候。CrowdSec 明确表示,这两点它都未能查明。该公司的代码仓库扫描没有得出结论,其开发者机器检查结果也是干净的——这与公司自己所说已被攻陷的那台笔记本电脑形成了尴尬的矛盾。这一空白是被承认了,而不是被填补了。

未公布:GitHub 在调查中的说法。CrowdSec 表示,GitHub 支持团队证实了 TanStack 来源,但 The Hacker News 指出,该公司的报告未包含 GitHub 自身的任何调查结果,且 GitHub 尚未公布其对令牌生命周期的自身说明。

佐证:Dark Reading、The Hacker News 和 DevOps.com 都在一周内报道了该事件,而这三家均基于 CrowdSec 的报告和 TanStack 的公告,而非对 CrowdSec 系统的独立取证审查。Dark Reading 补充了外部从业者的评论,包括 Suzu Labs 的 Denis Calderone,他将吊销疏漏称为“第一天就该做的事”。一份日期为 9 月 20 日的云安全联盟研究说明重复了这一顺序,但该文件自带免责声明,称其是在 AI 协助下生成的,且尚未经过 CSA 官方审查——在将其计为第二项独立发现之前,这一点值得了解。归档将记录置信度评为 A,争议为假,实际危害为真。

第一项陈述,以及更正

CrowdSec 于 9 月 17 日首次公开声明称:“没有客户数据、登录名/密码、姓名、组织或其他任何内容泄露,CrowdSec 不存储 PII 或客户日志;影响仅限于 CrowdSec。”它还提出了一种技术假设:某个内部组件被植入了后门,以窃取能够读取私有代码的 API 密钥。

一天后更完整的报告用已离职员工的说法取代了该假设,并披露了83个地址和51名投资者。Hacker News 将此描述为对早先说法的更正。CrowdSec 自己的表述则更窄:这83个地址来自数据科学监控清单,而非客户记录,投资者详细信息则可追溯至2020年。两种描述可以同时成立——这些地址不是客户账户,但它们仍然是一份发布在犯罪论坛上的数据转储中的个人数据。该公司表示将通知受影响的用户和投资者,并向当局报告此次泄露。

后来发生了什么变化?

• 在档案中发现的凭据和令牌已于9月16日夜间至17日期间完成轮换,其余轮换工作于次日早晨完成。

• 端点检测与响应现已部署在接触 CrowdSec 代码库或基础设施的人员的工作站和笔记本电脑上;该公司指明该产品为 Aikido Security。Humeau 承认本应更早部署,也承认一名前员工的机器不太可能运行过它。

• 泄露中暴露的共识算法阈值正在调整,并对整个黑名单网络中的统计偏差实施更严格的监控。

• 公司已为自己设定目标,要将同样的响应——包括库存、轮换、取证和披露——从48小时压缩到24小时以内。

• 据公司方面表述,受影响用户和投资者正被直接联系,泄漏事件也正在向有关部门报告。

为什么这条记录会被收录在 AI 事件档案中

这里对 AI 的参与是基础设施层面的,值得准确说明这意味着什么。CrowdSec 的叙述中没有任何内容描述 AI 系统在入侵期间做出决策;行为者是一个或多个人,他们使用了一个被盗令牌。这起事件之所以成为 AI 行业事件,在于其波及范围。TanStack 的库构建了大量现代软件的界面,用于收集该令牌的蠕虫被设计为一次性获取云、SSH 和模型提供商凭证,而从 CrowdSec 复制出的材料包括数据科学脚本和模型,而不仅是应用代码。

同一场攻击活动也直接波及了 AI 公司。CrowdSec 的时间线记录显示,TeamPCP 于 5 月 22 日声称攻陷了 Mistral AI 的代码仓库;The Hacker News 则报道称,两名 OpenAI 员工的设备受到影响,有限的一组内部代码仓库遭到未经授权的访问。该档案将 CrowdSec 一案记录为 5 月 TanStack 事件的第二个下游受害者,排在那些 OpenAI 员工设备之后。

副本与它被发现之间的这段距离,才是应当被传播出去的部分。这些仓库是在5月22日被取走的;CrowdSec 直到9月16日才得知这次泄露,当时 Fuites Info 团队就 pwnforum 上的帖子联系了该公司——此时已过去117天,而且并非通过其自身监控发现。让这种延迟成为可能的机制并不离奇:一个超出其用途三天后仍存在的账户、一个在公司可读取的日志中未留下任何痕迹的令牌,以及未安装端点检测的开发者笔记本电脑。一家销售威胁检测的公司 CrowdSec,这三者全都有。