公众对该事件的根本原因分析:
日期: 2026年5月13日 |持续时间: 19:08 – 20:14 UTC(1小时6分钟)
概括
2026年5月13日19:08至20:14(UTC),Gcore的部分CDN服务出现全球性中断。全球CDN边缘节点无法处理请求,部分客户端资源返回HTTP 502错误。此次中断影响了gcore.com网站、客户门户、公共API接口以及部分基础设施上的CDN交付。
影响
根本原因
这是一起由多个缺陷叠加造成的故障——CDN配置管道中三个独立的漏洞叠加在一起,导致一次配置更改演变成全球边缘故障。如果这三个缺陷中任何一个不存在,都可以避免此次中断。
API 输入验证漏洞:一个内部源路由字段,最初设计为仅供管理员配置,在 2023 年的 API 重写中失去了访问限制,随后在公开 API 文档中发布(2026 年 3 月),但未明确规定其允许的值。这导致非标准值可以通过 API 提交并被接受。
配置生成逻辑错误:当 CDN 配置管道处理具有非标准值的资源时,规则级配置生成中的一个错误静默地删除了所有源服务器,从而生成了一个上游列表为空的配置。
边缘节点初始化崩溃:当 CDN 边缘节点收到上游列表为空的配置时,边缘端脚本在初始化阶段崩溃。由于配置文件是全局的(节点上的所有资源共享),这一个格式错误的条目导致整个节点初始化失败——所有流量都返回 HTTP 502 错误,而不仅仅是受影响的资源。此次崩溃会传播到受影响基础设施上的所有边缘节点。
时间线(UTC)
时间 | 事件 |
|---|
19:08 | 包含已推送至全球边缘节点的畸形资源的 CDN 配置 |
19:08–19:14 | 边缘节点开始在全球范围内返回 HTTP 502 错误。 |
19:15 | P1事件已宣布 |
19:24 | 公开状态页面事件已发布 |
19:42 | 缓解措施启动:关键服务通过备用边缘基础设施路由 |
19:53 | 客户门户已迁移至备用基础设施 |
20:01 | 迁移的其他资源 |
20:14 | 修复已完成,已通过 API 禁用故障资源;边缘节点已恢复 |
22:05 | API 级验证修复已合并 |
23:06 | API修复程序已部署到生产环境 |
解决
服务已于世界协调时 20:14 恢复,方法是禁用包含错误配置的资源。自世界协调时 19:42 起,工程师们已通过将关键控制平面服务(API、门户)路由到备用边缘基础设施来减轻影响。
纠正措施
# | 行动 | 地位 |
|---|
1 | API 级输入验证:拒绝源路由字段的不允许值 | 已部署 |
2 | 修复配置生成逻辑,使其能够正确处理继承的源组,从而消除静默丢弃源的错误。 | 进行中 |
3 | 强化边缘初始化,使其在上游配置为空时能够优雅降级(规则级别 502),而不是导致整个节点崩溃。 | 进行中 |
4 | 针对类似访问控制回归的 2023 年重写版本中的审计相关 API 字段 | 进行中 |
5 | 审查并更新 API 文档,以明确规定所有源配置字段的允许值。 | 进行中 |
对于此次故障造成的不便,我们深表歉意。我们将致力于完成剩余的修复工作,并实施额外的安全措施,以防止未来类似的配置管道故障造成全球性影响。