2026 年 10 月安全事件汇总
AI 参与说明(Agent:Cursor):本文由 Cursor 根据 2026 年 10 月的公开披露改写,覆盖 Railway 初步报告、CISA 与 PHP Foundation 对 PHP2Shell 的说明、Cloudflare 关于 eMudhra 与 Workers AI attention KV cache 的两篇博文,以及 Devin Security 2.0 的产品公告。模型
grok-4.7-high-fast,提供方 xAI,执行入口 Cursor Cloud。reasoning effort 未作为独立字段取得运行记录。文中的版本号与影响范围以这些页面在 2026-10-27 的表述为准,执行前请再核对厂商当时的公告。
2026 年 10 月中下旬,邮箱里会同时出现好几类告警:PaaS 平台被入侵、语言运行时要紧急打补丁、证书信任链出了问题、推理服务补了一则租户隔离说明,还有一家安全产品在同一周发布新版本。有的平台还会把其中三项打进同一封行业通报。读邮件时很容易把它们收成「一场协同攻击」。
更准确的数法是 四条并行线,加一条防御产品:
- Railway:平台侧系统被入侵,一部分工作区里加密存放的环境变量可能被解密。
- PHP2Shell:PHP 解释器本身的关键漏洞,对外提供 Web 请求的有漏洞版本可以未认证远程执行代码。
- eMudhra:八张中间证书的私钥不可靠,仍信任它们的 TLS 客户端(包括旧版
cloudflared)有被伪造证书做中间人的风险。同周的 Node.js 安全发布里,有一块是更新自带的 CA 信任库。 - Workers AI 上的 attention KV cache:模型
@cf/zai-org/glm-5.3在 SGLang 里跨请求复用了别的租户留下的 GPU 页。这是推理缓存,Workers KV 存储不在这次暴露里。
另外一条站在防御一侧:Devin Security 2.0(2026-10-26)。它是扫描、排序和提交修复的产品发布。公告开篇锚定的是 2026-10-21 的 PHP 与 Node.js 远程代码执行披露,其中包括 PHP2Shell。沿用「Railway、PHP2Shell、eMudhra 三颗子弹」的数法,它不是第四颗攻击子弹。把 attention KV cache 算进来之后,事故线是四条,Devin Security 2.0 仍然是防御产品化,不是又一条要轮换密钥的入侵。
真正接在同一条技术链上的,是 eMudhra 和仍信任那些中间证书的客户端。Workers AI 那篇与 eMudhra 同属 Cloudflare 品牌下的披露,入口一个是推理内存,一个是证书私钥,根因不同。
判断时可以先记住这一句:
共享状态 + AI 加速利用 = 共同经济动机;四条并行线 + 一条防御产品化。公开材料里没有证据表明 Railway、PHP2Shell、eMudhra 与 Workers AI 的 attention KV cache 暴露出自同一攻击者。同一周披露,不是同一场战役。
本文不代任何人轮换密钥、升级客户端或给仓库开扫描。文末清单要在自己的账户和机器上做。
先对上这几个名字
| 英文术语 | 中文名称 | 简要解释 |
|---|---|---|
| attention KV cache | 注意力键值缓存 | 模型生成下一个 token 时复用已经算过的 Key 和 Value;这里占的是 GPU 上的页 |
| Workers KV | Workers KV | Cloudflare 的持久化键值存储,用来放配置、标志和可重建的读模型 |
| Workers AI | Workers AI | Cloudflare 上按模型名调用的推理服务 |
| SGLang | SGLang | 这次跑 @cf/zai-org/glm-5.3 的开源推理引擎 |
| PHP2Shell | PHP2Shell | 2026-10-21 公开的 PHP 解释器漏洞通称,对应 CVE-2026-109618 与 CVE-2026-109619 |
| eMudhra | eMudhra | 证书机构;这次是它的八张中间证书私钥不可靠 |
| cloudflared | cloudflared | Cloudflare Tunnel 的客户端 |
| Devin Security | Devin Security | Cognition 的安全扫描与修复产品;2.0 是 2026-10-26 的版本发布 |
后文固定使用这些英文名称。注意力键值缓存只在这张表里作对照,正文里的 KV cache 都指 attention KV cache,不指 Workers KV。
先排日历,再决定要不要并成一张工单
下表用各篇公开文字里的日期。Cloudflare 与 Railway 的细粒度时间是 UTC,换到 Asia/Shanghai 要加 8 小时;只有日期、没有钟点的,按对方写的日历日理解。
| 时间 | 公开记录里发生了什么 |
|---|---|
| 2026-08-27 至 09-09 | @cf/zai-org/glm-5.3 上线即带有 attention KV cache 串租。9 月 8 日研究者报告,9 月 9 日下线、修补并恢复。公开说明留到 10 月 26 日 |
| 2026-10-19 约 17:00 UTC | Cloudflare 得知 eMudhra 八张中间证书的私钥问题,并开始处理自己的信任库。博文发布于 10 月 20 日 |
| 2026-10-20 13:58 UTC 至 10-22 03:32 UTC | Railway 记录的攻击窗口。10 月 20 日 19:53 UTC 他们把异常活动认定为持续攻击。10 月 22 日 03:32 UTC 确认攻击者已不再能访问内部系统 |
| 2026-10-21 | PHP 发布 PHP2Shell 修复。Node.js 同日发布 22.23.4、24.22.1、26.12.1,其中包含 eMudhra 的 CA 更新,也包含另外的运行时漏洞修复 |
| 2026-10-21 晚(UTC) | Railway 公布安全说明并通知用户轮换。初步报告日期是 10 月 22 日 |
| 2026-10-24 前后 | 有的平台把 eMudhra、Node.js 与 PHP2Shell 打进同一封行业通报。打包发送只说明邮件策略 |
| 2026-10-26 | 三件不同性质的事叠在同一天:Cloudflare 与研究者、SGLang 协调公开 attention KV cache 的修复经过;CISA 把两枚 PHP CVE 加入已知被利用漏洞目录;Devin Security 2.0 上线 |
10 月 26 日看起来「又爆了三条」,拆开是:一件 8 月底到 9 月初已经修好的推理隔离事故选择在这一天公开,一件是把 10 月 21 日的 PHP 漏洞登记进目录,一件是防御产品的发布日。日历相关,技术上仍是三件事。
同一时期,很多仓库还在处理框架、桌面壳和 SDK 的例行 CVE。那些补丁和上面四条线没有公开材料里的因果关系,不要写进同一张危机叙事。
四条线分别是什么
flowchart TD
Cal["2026-10 中下旬的公开日历"]
Cal --> R["Railway"]
Cal --> P["PHP2Shell"]
Cal --> E["eMudhra"]
Cal --> K["Workers AI attention KV cache"]
Cal --> D["Devin Security 2.0"]
E --> C["cloudflared"]
E --> N["Node.js ca-cert"]
P -.->|"公告用来举例"| D
图里只有 eMudhra 拉出了下游客户端。其余箭头表示「出现在同一段日历里」。Devin Security 2.0 的虚线是文案上的锚点,不是攻击路径。
Railway:平台上的环境变量可能被解开
Railway 在 10 月 22 日的初步报告里写:攻击者进入了一部分内部系统。已有部署在处置期间保持在线,新的构建和部署被主动停下,以免扩大入口。攻击窗口从 2026-10-20 13:58 UTC 到 2026-10-22 03:32 UTC。报告写明调查仍在进行,后续还会有更新。10 月 26 日附在同一页的说明称,对既有用户这次事件已经结束,新注册暂时关闭。
动机按平台自己的说法,是获取 AI 提供商的 API key,用来做模型蒸馏或滥用。攻击者没有登录客户的 Railway 账户;被碰到的是平台内部系统,以及其中一部分工作区里加密存放的环境变量。报告给出的规模是:至多 1.85% 的 workspace(大约 10 万)有环境变量可能被解密。因为信封加密的查询对不上具体是哪几条变量,他们通知上游厂商时的吊销范围比这 1.85% 更宽。被厂商通知「密钥已吊销」不等于已经被证明中招。
公开建议比「只处理点名邮件」更宽:在此之前把敏感变量放在 Railway 上的用户,应撤销并重新配置这些变量;10 月 21 日之前注册的客户被单独点名为建议轮换对象。报告还建议去掉数据库的公网入口,并查看 GitHub 与镜像仓库的审计日志。邮件如果写你的 workspace 不在直接受影响或较高风险的集合里,这只说明你不在他们主动外联的那一档。上面那条面向全体存放过密钥的用户的建议仍然有效。
同类 PaaS 若在同一窗口帮你保管过 API key、数据库口令或镜像仓库凭证,按该平台自己的公告处理,不要用 Railway 的百分比去推断其他平台的影响范围。初步报告,状态页。
PHP2Shell:解释器在应用代码之前就能被打到
CVE-2026-109618 与 CVE-2026-109619 出在 PHP 解释器,不在某个应用框架。CISA 的告警把影响写成未认证远程代码执行,要求升到 PHP 8.5.12、8.4.27、8.3.36 或 8.2.35。8.1 及更早版本上游不再发修复;不能立刻升级的,CISA 要求先把对外的 PHP 系统下线。2026-10-26,这两枚 CVE 进入 CISA 的已知被利用漏洞目录。目录更新是处置状态变化,不是另一枚新洞。
PHP Foundation 的说明把两条路径分开。CVE-2026-109618:请求正好撞上 memory_limit 时,内部数据可能只初始化了一半,随后的清理把无效数据当成有效数据,造成内存破坏;在 Apache mod_php 的默认配置上,未认证请求可以在应用代码运行之前触发,并已演示远程代码执行。CVE-2026-109619:致命错误发生在错误的时点时,内部状态仍指向上一请求的内存,同一个 worker 上的后续请求可能使用这块已经释放的状态。受影响的是对外提供 Web 请求的 PHP,包括 PHP-FPM、mod_php、php-cgi、FrankenPHP 和 LiteSpeed;PHP 认为 mod_php 风险最高。
第三方通报还提到,利用过程可能从进程内存里读出口令与 token。官方告警已经足够支持「有漏洞版本就升级」。没有对外 PHP 的栈,盘点之后记「不适用」即可,不必为了跟邮件同步而假装紧急。PHP 常常包在别人的软件、设备或基础镜像里,盘点时要看镜像和设备,不只看自己写的业务仓库。CISA 告警,PHP Foundation。
eMudhra:坏的是信任链,旧客户端还在信
2026-10-19 约 17:00 UTC,Cloudflare 得知八张 eMudhra 中间证书的私钥已经不可靠。这些证书此前被浏览器、操作系统和 Cloudflare 自己信任。私钥弱到攻击者可以为任意域名造一张看起来合法的证书,对仍信任它们的客户端做 HTTPS 中间人,改写或窃听流量。Cloudflare 写明,这是证书认证的问题,不是 TLS 加密算法被破解。他们对自身服务的复查没有发现针对这些服务的活跃利用,同时要求客户更新自己负责的那一段信任配置。
cloudflared 的公开动作是升到 2026.10.2。容器要换上修复后的镜像再部署,只重启旧容器不会换掉镜像里的信任库。GitHub Releases 上,2026.10.3 的 tag 时间是 2026-10-21。有人转述 Tunnel 客户通知时,把 macOS 上非 Homebrew 安装的下限写成 2026.10.3;博客正文没有这条分叉,写的是 2026.10.2。升级之后用 cloudflared --version 看实际二进制。证书报错出现时,Cloudflare 明确说不要靠关闭校验来消掉它,noTLSVerify 一类开关会把这次更新想恢复的认证拿掉。
同一篇博文给 WARP / 1.1.1.1 客户端的是另一组版本号。Tunnel 的 2026.10.2 不要抄到 WARP 上,反过来也不行。源站如果使用 Full (strict) 或 Strict,并且证书链到这些已不再被信任的中间证书,要单独检查源站配置。Cloudflare Containers(含 Sandboxes)要检查镜像里自带的信任库;只开了 HTTPS 出口拦截、验证已经改由 Cloudflare 做的容器,博文称已经在保护范围内。eMudhra 说明。
Node.js 在 2026-10-21 的安全发布把这件事收进了自带的 CA。官方公告的依赖更新里有一行就是 ca-cert (eMudhra Intermediate CA Compromise),对应版本是 22.23.4、24.22.1 和 26.12.1。已停止维护的版本线没有这包补丁。
同一次 Node.js 发布还修了别的漏洞。26.12.1 的发行说明里,CVE-2026-111497 是随 Node.js 分发的 Brotli 解码器问题,严重程度为 High,可导致远程代码执行;另外还有 TLS、DNS 等修复。所以「去升 Node」同时覆盖两条线:信任库对应 eMudhra,Brotli 和其他 CVE 对应运行时本身。行业通报把它们和 PHP2Shell 放在一封邮件里,是因为发布日挨着,不是因为 Brotli 解码器和中间证书共用一个缺陷。
flowchart TD
Rel["Node.js 2026-10-21 安全发布"]
Rel --> CA["ca-cert 更新"]
Rel --> RT["运行时 CVE\n含 Brotli"]
CA --> E["eMudhra 中间证书"]
E --> CF["cloudflared 2026.10.2"]
RT --> Wave["与 PHP2Shell 同属运行时修复"]
P["PHP2Shell"] --> Wave
升 cloudflared、对齐 Node.js 的受支持版本、更新容器基础镜像里的 CA,可以看成 eMudhra 这一条线上的不同客户端。Brotli 那条要单独看自己的程序会不会解不可信的压缩数据,不要为了「已经升过 Node」就把它划掉,也不要为了 Brotli 再去怀疑 Tunnel。
Workers AI 的 attention KV cache:名字里的 KV 不是存储产品
2026-10-26,Cloudflare 与研究者、SGLang 维护者协调公开了一篇补救说明。暴露窗口是模型上线的 2026-08-27 到恢复服务的 2026-09-09。模型名是 @cf/zai-org/glm-5.3(Z.ai 的 GLM,面向 agentic coding)。其他 Workers AI 模型不在这次范围内。一共 155 条响应受到污染,全部是长于 681,280 token 的 prompt。Cloudflare 称,去掉自身测试和研究者之后,这些请求的时间和数量符合普通的长上下文使用,没有看到蓄意利用。
The post is about attention KV cache pages inside SGLang, on one Workers AI model. A prompt that did not fit the prefill pool was marked rejected, replaced with a one-token placeholder, and still handed to the decode node. Decode then attended over pages that still held an earlier tenant’s prompt and partial generation. Workers KV, the durable key-value store, is a different product and was not the system described in that post.
两件事叠在一起。对外上下文长度是 1,048,576 token,prefill GPU 上的 KV pool 只有 681,280 token。Cloudflare 上线前知道这个差额,预期引擎会对放不下的 prompt 返回错误;长上下文测试只看到了成功的 HTTP 状态,没有核对输出是否还是这次请求自己的内容。在单机 SGLang 上,超长请求会走完占位 prompt 并向客户端返回错误。他们使用的是 disaggregated prefill/decode:prefill 把 cache 经 RDMA 交给 decode。拒绝状态没有挡住 handoff,decode 按原先的长度去读已经保留的页,其中只有一页是这次占位 prompt 写下的,其余仍是上一租户的数据。客户端拿到的是 HTTP 200。
flowchart TD
A["prompt 长于 prefill KV pool"] --> B["调度器标记 reject\n换成 1 token 占位"]
B --> C["disaggregated 模式仍 handoff"]
C --> D["decode 按原长度读取保留页"]
D --> E["未由本次写入的页仍是上一租户的数据"]
修复做了两层。prefill 的 pool 放大到大约 204 万 token,合法请求不再走进拒绝路径;引擎在 admission 之前把带拒绝标记的请求退掉,避免占位 prompt 继续 handoff。上游建议运行 disaggregated SGLang 的人升到 v0.5.22 或更新版本。调用 Workers AI API 的人不需要自己升级 SGLang,Cloudflare 已在 9 月 9 日把这个模型恢复为修补后的配置。
对调用方,回顾范围只有一条:在 2026-08-27 至 09-09(按博文的日历)是否向 @cf/zai-org/glm-5.3 发过长于 681,280 token 的 prompt。没有,则这次暴露与你无关。有,则假定那几次 prompt 和回复里的密钥或 token 可能出现在别人的响应中,按数据敏感程度决定要不要轮换;公开数字是 155 条响应,不是 155 个账户,博文没有公布客户名单,不能从「没收到点名邮件」推出自己不在其中。
常规 Workers 脚本、Workers KV 命名空间、D1、R2 不因为这篇博文需要迁移。把业务数据从 Workers KV 搬走,解决不了一次已经结束的推理页复用,也会让无关系统进入变更窗口。本站的 Workers KV 说明 讲的是那一个存储产品。补救说明。
Devin Security 2.0:防御产品接上了 10 月 21 日的运行时披露
Devin Security 2.0, published on October 26, 2026, is a defensive workflow: frontier-model scanning, prioritization against a threat model, and remediation that opens pull requests. The announcement uses the October 21 PHP and Node.js remote-code-execution disclosures, including PHP2Shell, as its picture of the threat landscape. It does not describe a compromise of Cognition, and it is not a fourth incident to rotate credentials for.
博文里的扫描过程是:按仓库的威胁模型标出路由、鉴权边界和危险 API,分批并行调查,聚合之后去掉重复、把能串成路径的发现接起来,再把较高优先级的发现放进沙箱里对运行中的应用做验证。已有的 Snyk、Wiz、漏洞赏金和公告可以灌进来重排。修的时候可以开 PR,也可以在补丁合并前先改 WAF 或安全组。这些是产品能力说明,不是「你的仓库已经被扫出致命问题」的检测结果。
和行业事件的绑定写在开头。它复述 PHP2Shell 的一处底层迹象在 2024 年已经出现,当时没有可演示的远程代码执行路径,修复让位于更清楚的问题;又引述 Wiz:前沿模型帮助研究者在数小时内做出并能改写到多个应用上的利用。curl 维护者 Daniel Stenberg 的话被用来说明报告量本身:2026 年到 10 月 22 日已有 356 份安全报告,2025 年全年是 181 份。这些句子的作用是论证「利用窗口变短、报告变多,所以需要一条从发现到修复的流水线」。
因此有两种读法。可读成:行业在把积压 CVE 的处置产品化,10 月 21 日的 PHP 与 Node.js 是它选用的例子。不可读成:Devin 或 Cognition 的供应链在 10 月 26 日被攻破,或者出现了必须立刻轮换的新密钥事件。有额度时,可以用它或别的现代 SAST 再看一遍 PHP 与 Node.js 的依赖和镜像;它不代替 Railway 上的环境变量轮换、cloudflared 升级,或 PHP 版本盘点。Devin Security 2.0,Cognition 的产品说明。
哪些看起来相关,其实只是挨在一起
| 对比 | 实际关系 | 分开做的动作 |
|---|---|---|
| Railway 与 PHP2Shell | 都可能通向「别人的密钥」,入口不同:一边是平台解开加密的环境变量,一边是解释器内存和请求状态。公开报告没有把两边串成一次攻击 | 平台上的密钥轮换;有 PHP 才打 PHP 的补丁 |
| Railway 与 eMudhra | 时间接近,都会扩大密钥暴露面。Railway 的报告没有说攻击者使用了伪造的 eMudhra 证书 | 轮换环境变量;升级 Tunnel 和 CA |
eMudhra、cloudflared、Node.js 的 ca-cert | 同一信任链上的多产品响应 | 升 cloudflared,对齐 Node.js 受支持版本和镜像里的 CA |
| Node.js 10 月 21 日发布里的运行时 CVE 与 ca-cert | 同一个安装包,两类修复。Brotli 等问题不来自中间证书 | 升级一次,验收时按「信任库」和「会不会解不可信压缩数据」各看一眼 |
| attention KV cache 与 eMudhra | 都由 Cloudflare 在相近的日子对外说明。一个是 8–9 月已修的推理页隔离,一个是 10 月的证书私钥。没有共用的漏洞链 | 升 Tunnel 不需要迁移 Workers KV |
| attention KV cache 与 Workers KV | 英文都叫 KV。前者是 SGLang 里的 attention 页,后者是持久化键值存储 | 业务 KV 保持原用法;只回顾 GLM-5.3 的超长 prompt |
| attention KV cache 与 Railway | 都是共享状态的隔离失败,公开时间也接近。一边是 GPU 页,一边是平台保险箱。没有同一攻击者的归因 | 两条待办都留着,不互相替代 |
| attention KV cache 与 PHP2Shell | 一个暴露窗口在 8–9 月,一个在 10 月 21 日公开。舆论上都碰到「模型加快了安全研究」,漏洞本身不相连 | 不要合成一张 CVE 单 |
| Devin Security 2.0 与 PHP2Shell | 产品文案直接用 10 月 21 日的 PHP 与 Node.js 远程代码执行做开头。Devin 不是这次的攻击 | 可选扫描;不把它写成第四次入侵 |
| Devin Security 2.0 与 Railway、eMudhra、attention KV cache | 10 月 26 日前后的发布日历叠在一起 | 不写成连环供应链案 |
| 合并邮件里的 eMudhra、Node.js、PHP2Shell | 通讯层绑在一起,方便一次读完 | 按根因拆开处理 |
密钥和上下文最后都可能落到别人手里,入口仍然是四扇不同的门:平台保险箱被撬开,语言运行时在应用代码之前被打到,TLS 客户端相信了不该信的中间证书,共享的推理页没有在租户之间划清。
为什么会有「暗流」的感觉
这种感觉有四层证据,强度不一样。
第一层是利用窗口被压短,可以直接引用公开公告。Devin Security 2.0 的公告写:PHP2Shell 的一处底层迹象在 2024 年已经识别,缺少可演示的远程代码执行路径时,修复被搁置;前沿模型把「从迹象到可用利用」的时间缩短到小时级。curl 的报告量在同一篇公告里被用来说明另一头:防御侧收到的高质量报告也在变多。暗流若要有一个技术内核,更接近 利用窗口变短,而不是出现了一个把 Railway、PHP、证书机构和推理集群一起拿下的组织。
第二层是一种反复出现的事故形状,还不足以证明同源。PaaS 上集中保管的环境变量、GPU 上为了吞吐而复用的 attention KV cache、全球共用的证书信任列表,都是把状态交给一块共享设施。簿记或信任一旦错了,下一个租户或下一跳客户端就会看到不该看到的东西。形状相似,是因为大家都在共享状态上省成本,不是因为同一个人本周依次打穿了它们。
第三层是猎物的价格。Railway 写攻击者在找 AI 提供商的 API key。GLM-5.3 的串租直接把别的租户的长 prompt 和部分生成带进响应。长上下文和模型密钥变得值钱之后,隔离失败的预期损失上升,厂商和攻击者都会把注意力放过来。这解释了「为什么这类事故值得写」,不解释「是不是同一双手」。
第四层是披露和产品日历。eMudhra、Railway、PHP、Node.js 的说明挤在 10 月 19 日到 22 日,10 月 26 日又叠上协调公开、KEV 登记和 Devin Security 2.0。运维侧感觉到的暗流,有相当一部分是同一周的协调披露和发布日。
下面几条是读邮件时容易走偏的地方。
| 容易得出的判断 | 公开材料支持的判断 |
|---|---|
| Cloudflare 又有 KV 问题,所以 Tunnel 和 eMudhra 还没完,或者是同一战役 | attention KV cache 的暴露在 9 月 9 日已经修补,10 月 26 日才公开。它和 eMudhra 的中间证书没有共用漏洞链 |
| 「KV」是指业务用的 Workers 命名空间泄了 | 这篇博文的 KV 是 LLM 的 attention KV cache。常规 Workers KV 用法默认不在影响范围内 |
| Devin 突然做安全扫描,说明 Devin 自己的供应链出事了 | 这是 2026-10-26 的产品发布,开头用的是 10 月 21 日的 PHP 与 Node.js |
| 五件事后面是同一个攻击者 | 没有公开归因把 Railway、PHP2Shell、eMudhra 和这次推理页暴露绑到同一个行动者 |
| 同一天公开就是同一事件 | 10 月 26 日同时是协调披露日、KEV 登记日和产品发布日 |
把这四层放回那句推荐表述里:共享状态加上 AI 加快利用,构成共同的经济动机;外面看到的是四条并行线,再加一条防御产品化。没有证据表明这是同一个攻击者。
读者可以勾选的清单
每条都是你自己的账户、镜像或仓库上的动作。做完在自己的记录里写结果即可。
- 轮换 PaaS 上的环境变量。列出把 API key、数据库口令和镜像仓库凭证放在 Railway 或其他受影响 PaaS 上的服务。按该平台公告轮换,并在密钥的上游吊销旧值。接着看 GitHub、镜像仓库和 AI 提供商的审计日志里有没有异常用量。邮件没把你标成较高风险,仍然按「存放过敏感变量」处理一轮。若某个上游因为这次事件关掉了集成,对一下关闭前后有没有异常的环境变量写入。
- 升级 cloudflared。公开博文的下限是 2026.10.2;容器拉取修复镜像再部署。macOS 非 Homebrew 安装若渠道给出 2026.10.3 或更新的包,用那个更新的包,并用
cloudflared --version确认跑的是新二进制。不要用noTLSVerify或关闭证书校验来压掉升级后的报错。WARP 使用博文里单独的版本表。 - 对齐会发起 TLS 的运行时和镜像。受支持的 Node.js 升到 2026-10-21 安全发布(22.23.4、24.22.1、26.12.1)或该线之后的版本。这一次升级同时更新了 eMudhra 的信任库,并带上 Brotli 等运行时修复。容器基础镜像和自带 CA 的其他语言运行时按各自公告处理。源站证书若链到已不受信任的 eMudhra 中间证书,在 Full (strict) / Strict 模式下单独检查。
- 盘点 PHP。找出仍在对外服务的 PHP,包括包在设备、面板和基础镜像里的。有则升到 8.5.12、8.4.27、8.3.36 或 8.2.35;8.1 及更早版本上游没有修复,不能立刻升级就先下线。没有则在记录里写「不适用」。
- 查有没有调用过 GLM-5.3 的超长上下文。模型名是
@cf/zai-org/glm-5.3。窗口是 2026-08-27 至 09-09,阈值是 prompt 长于 681,280 token。未调用,记「不适用」。调用过,把那几次会话里出现的密钥和 token 按敏感程度轮换。常规 Workers 部署和 Workers KV 默认不受这篇博文影响,不要为此做全量 KV 迁移。 - (可选)跑一轮现代 SAST 或 Devin Security。优先看 PHP 与 Node.js 的版本、基础镜像和不可信输入的解码路径。这是卫生措施,用来消化 10 月 21 日那类运行时公告,不代表又出现了一条针对你的供应链。
合并邮件按上面的根因拆开勾。四条攻击或事故线和一条防御产品,勾完应是五类结果,而不是一张「本周安全事件已处理」的总单。
关联阅读
- Cloudflare Workers KV:架构、一致性、API 与选型边界:本文说的 attention KV cache 不是这个存储产品。业务数据仍按这篇的一致性与选型边界使用。
- Railway preliminary report:平台入侵、环境变量与轮换建议。
- Cloudflare:eMudhra:八张中间证书,以及
cloudflared与信任库要做的事。 - Cloudflare:GLM-5.3 attention KV cache:SGLang 上的跨请求串租与 9 月 9 日的修复。
- Devin Security 2.0:10 月 26 日的防御产品,开头锚定 10 月 21 日的 PHP 与 Node.js。
参考资料
资料整理日为 2026-10-27。
- Railway preliminary report,标题 Preliminary Report: Oct 21st Security Incident。攻击窗口、1.85% workspace、AI API key 动机、轮换建议,以及 10 月 26 日「既有用户侧已结束」的附记。
- Railway status。
- CISA:Critical vulnerabilities in PHP。未认证远程代码执行、修复版本,以及 2026-10-26 加入 KEV。
- PHP Foundation:Today’s PHP Security Release。两条 RCE 路径与
mod_php上的未认证触发。 - Node.js security releases, October 21, 2026。含
ca-cert (eMudhra Intermediate CA Compromise),版本 22.23.4、24.22.1、26.12.1。 - Node.js 26.12.1。发行说明中的 CVE-2026-111497(Brotli)及其他运行时修复。
- Cloudflare:8 eMudhra certificates are compromised。
cloudflared2026.10.2、容器重新部署、不要关闭证书校验。 - cloudflared releases。2026.10.3 tag 的发布时间,用来核对「博客下限」和「后续 tag」不是同一个数字。
- Cloudflare:Cross-request KV cache exposure in GLM-5.3。155 条响应、681,280 与 1,048,576 token、9 月 9 日恢复、SGLang v0.5.22。
- Devin Security 2.0。2026-10-26 产品公告,PHP2Shell / Node.js 的叙事、Wiz 与 curl 报告量的引述。
- Cognition:Devin Security。