CDN供应链攻击:从API密钥到恶意脚本

CDN供应链攻击:从API密钥到恶意脚本

以第三方插件、发布账号和CDN API凭证为主线,拆解供应链攻击如何篡改分发内容,并给出令牌治理、产物签名、SRI和发布审计方案。文章还提供按环境和动作拆分CDN API令牌、优先使用短期凭证并自动轮换、构建产物签名并在发布前后校验等检查方法,并说明验证指标、常见误区与事件处置顺序,适合安全、运维和开发团队用于上线评审

网站首页没有漏洞,源站也没有异常登录,但用户浏览器加载的JavaScript被替换了。调查最终指向一个拥有发布权限的第三方插件账号:攻击者没有突破CDN节点,而是沿着合法供应链把恶意内容送进了缓存。

供应链事件最容易被误写成耸动数字。本文不采用无法由厂商公告或漏洞库核验的“影响120万网站”说法,而是聚焦可以验证的攻击路径:第三方组件、CI/CD凭证、对象存储和CDN控制API。企业真正需要的是可执行控制,不是未经证实的案例规模。

攻击者为什么盯上发布链路

直接攻击每个网站成本很高,而拿到一个插件更新账号、构建服务器或CDN令牌,就可能一次影响大量下游。更关键的是,恶意文件由合法域名、TLS证书和缓存节点分发,浏览器与传统边界设备很难区分。

常见入口包括依赖包维护者账号、WordPress插件后台、Git仓库令牌、CI环境变量、对象存储密钥和CDN全局API。长期有效、权限过大且无人审计的凭证尤其危险。

CDN供应链攻击:CDN供应链攻击路径
CDN供应链攻击路径

一条典型供应链攻击如何展开

攻击者先通过钓鱼、漏洞或密码复用进入第三方系统,再寻找能够修改构建产物或CDN配置的凭证。随后替换JavaScript、更新包或下载地址,触发缓存刷新,使恶意内容迅速传播。最终目标可能是窃取会话、创建管理员、植入后门或导向钓鱼页。

为了延长潜伏时间,恶意代码常按地区、时间、来源或账号选择性执行。抽样测试可能看不到异常,因此需要对发布产物做持续哈希和行为监测。

API密钥管理要从“能用”改成“可控”

令牌应按系统、环境和动作拆分。发布系统只需要刷新指定目录,就不应拥有修改DNS、证书和全部域名的权限。优先使用短期凭证和工作负载身份,避免在代码仓库或配置文件保存永久密钥。

所有高风险API调用应记录操作者、来源、对象、前后值和审批信息。异常地区登录、非发布时段的大范围刷新、权限提升和新令牌创建要即时告警。人员离职或供应商退出时自动回收权限。

如何保证分发内容没有被替换

构建产物在可信环境生成哈希和签名,发布前后分别校验。关键静态资源可使用Subresource Integrity,让浏览器验证第三方脚本哈希。更新包和客户端下载应提供签名,并由客户端拒绝无法验证的版本。

对象存储开启版本控制与不可变策略,避免单一账号覆盖历史文件。CDN刷新应引用确定版本的对象,而不是始终指向可被替换的latest路径。

CDN供应链攻击:供应链关键暴露面
供应链关键暴露面

发生事件后的处置顺序

先冻结发布和高风险API,保留审计日志,再确认被篡改文件、缓存范围和执行条件。随后撤销令牌、恢复可信版本并刷新缓存。不要在证据保存前删除所有日志,也不要只修复被替换文件而保留泄露凭证。

若恶意脚本可能窃取会话,应推动用户会话失效、轮换相关密钥并通知受影响方。复盘需要追溯最初入口和控制缺口,更新供应商准入与权限模型。

供应商接入前要问的五个问题

引入插件或发布服务前,应确认它如何保护维护者账号、构建环境是否隔离、更新包是否签名、漏洞如何通知、服务终止后如何删除令牌。若供应商无法说明发布审计和事件响应,企业就需要降低其权限并增加独立校验。

合同条款也要能落到工程控制:约定的通知时限应对应告警联系人,数据删除应对应可验证记录,最小权限应对应具体API范围。供应链风险不能完全外包,使用方始终要保留验证产物和快速撤销信任的能力。

CDN供应链攻击:CDN密钥治理清单
CDN密钥治理清单

落地检查清单

  • 按环境和动作拆分CDN API令牌
  • 优先使用短期凭证并自动轮换
  • 构建产物签名并在发布前后校验
  • 关键第三方脚本启用SRI
  • 对象存储开启版本控制与不可变保护
  • 高风险发布行为进入统一审计

结语

供应链安全的核心,是任何一次合法发布都可以回答“谁构建、谁批准、内容是否一致、权限为何需要”。CDN传播速度越快,发布链路的可验证性就越重要。

参考来源

延伸阅读