虚拟补丁 · 自托管基础设施

给这个星期都升不了级的系统打个热补丁,不重启,不中断业务。

在安全厂商之前,给你防护规则。

升级意味着停机、重启、排变更窗口,而变更窗口在两周之后。hotpatch 盯住 GitLab、Jenkins、 JumpServer、Terraform 这类自托管基础设施,新的高危出来时,为你已经在跑的 WAF 写出规则—— 业务一秒不停。等窗口到了装上官方补丁,规则自己退役。

// 不是 WAF · 不是 EDR · 不是内核 livepatcher · 官方补丁仍是关闭项
01 · 产出

产出什么

不是一条"之后再翻译"的通用特征,而是目标引擎的原生表达式。下面这条匹配的是 Next.js 中间件绕过所依赖的请求头,不是它碰巧打到的那个路径。

CVE-2025-29927 /cloudflare_waf /zone:你自己的 OBSERVE
# 屏蔽候选 —— 免认证即可触发的认证绕过。
# 以观察态签发。晋升到拦截是另一个决定,由人来做。
(http.request.uri.path contains "/api/"
 and http.request.method eq "POST"
 and any(http.request.headers["x-middleware-subrequest"][*] ne ""))
匹配请求头而不是路径,就是屏蔽和故障的分界。只匹配路径的规则会把打到同一个端点的所有正常 POST 一起挡掉 —— 而大多数手写的虚拟补丁做的正是这件事。
02 · 选择

盯住什么

光按严重度筛是错的闸门。把整个 CVE 流过滤到 critical,每天还剩约 31 条 —— 但最近一周里其中 88% 是某一家厂商对一款企业 UNIX 的批量披露,那东西 WAF 够不着、EDR 也没有 agent。所以闸门是软件本身:自托管、有 HTTP 控制台、倒了就是大事。

GitLab · 源码
Jenkins · CI/CD
Gitea · 源码
Nexus · 制品库
SonarQube · CI/CD
Terraform · 编排
KubeSphere · 编排
Rancher · 编排
Argo CD · 编排
Harbor · 镜像仓库
JumpServer · 运维通道
Zabbix · 运维
Grafana · 观测
Kibana · 观测
MinIO · 存储
Nacos · 配置
Confluence · 协作
782清单内产品 365 天新发布的 CVE
319其中评级为高危或严重
745带网络攻击向量 —— WAF 所在的那一面
~2 条/天过闸门。一个人读得完
03 · 阶段

第一天没有任何东西会拦截

直接上拦截的规则,就是在等第一个长得像利用的正常请求来制造故障。每个阶段都要挣到下一个,而且每一步都可以退回去。

阶段 1

观察

在边缘对真实流量做影子评估。不丢任何流量,所以误报是以数据的形式出现,而不是以事故的形式。

阶段 2

金丝雀

收窄到一部分流量。近似样本语料必须干净 —— 命中了正常请求的规则不会往前走。

阶段 3

拦截

过了窗口,由人决定,编译进你的 WAF。回执里存着变更前的镜像,一次调用就能放回去。

04 · 边界

哪里不做

一条悄悄什么都没挡住的虚拟补丁比没有更糟,因为有人会因此不再追真正的修复。下面这些只给工单和写明的理由,不给表达式。

内核释放后使用

WAF 根本看不到它。诚实的产出是一张 livepatch 合作方工单 —— Canonical、KernelCare、Ksplice —— 或者就是走变更窗口。

边界设备

VPN 集中器或防火墙本身就是边界。它前面没有属于你的东西可以承载规则。

存储型 XSS、CSRF、缺失授权

恶意请求和正常请求长得一样。宽到能抓住它的规则,也宽到会把应用打坏。

上游已经覆盖的

这正是"在安全厂商之前"那句话的另一半。托管规则集覆盖主流框架的头条 CVE,而且几小时内免费下发——那一格我们不抢,会直接说明并给出他们那条的链接。我们跑在前面的是他们不做的那批:JumpServer、KubeSphere、Nacos、Gitea 这类自托管软件,没有哪家 WAF 厂商为它们出托管规则。

05 · 每日账本

每一天都记下来,安静的那些也记。

没有东西可屏蔽的日子照样发布:读了多少条、为什么一条都没过闸门。一年下来,那份记录比任何单条规则都值钱,也是竞争对手一个周末抄不走的那部分。

406读取的披露
31评级为严重
2命中观察清单
1今日可屏蔽

// 数据源:NVD · OSV · GitHub Advisories · 厂商公告