Virtual patch · self-hosted infrastructure

Hotpatch the system you cannot upgrade this week. No reboot, no downtime.

Your protection rule, before the vendor ships one.

Upgrading means downtime, a reboot, and a change window that is a fortnight away. hotpatch watches GitLab, Jenkins, JumpServer, Terraform and the rest of your self-hosted infrastructure, and when a new critical lands it writes the rule into the WAF you already run — nothing restarts and nothing stops. The vendor patch goes on at the window, and the rule retires itself.

// not a WAF · not an EDR · not a kernel livepatcher · the vendor patch is still the close
01 · Output

What it emits

Not a generic signature to be translated later — the native expression for the engine that will run it. This one matches the header the Next.js middleware bypass rides on, not the path it happens to hit.

CVE-2025-29927 /cloudflare_waf /zone: your own OBSERVE
# Shield candidate — authentication bypass, reachable without credentials.
# Emitted in observe. Promotion to block is a separate, human decision.
(http.request.uri.path contains "/api/"
 and http.request.method eq "POST"
 and any(http.request.headers["x-middleware-subrequest"][*] ne ""))
Matching the request header rather than the path is the difference between a shield and an outage. A path-only rule blocks every legitimate POST to the same endpoint — which is what most hand-written virtual patches actually do.
02 · Selection

What it watches

Severity alone is the wrong gate. Filter the whole CVE feed to critical and roughly 31 a day survive — but in a recent week 88% of those were one vendor's batch disclosure for an enterprise UNIX that no WAF and no EDR agent can reach. So the gate is the software itself: self-hosted, HTTP console, catastrophic when it falls.

GitLab · source
Jenkins · CI/CD
Gitea · source
Nexus · artifacts
SonarQube · CI/CD
Terraform · orchestration
KubeSphere · orchestration
Rancher · orchestration
Argo CD · orchestration
Harbor · registry
JumpServer · ops access
Zabbix · ops
Grafana · observability
Kibana · observability
MinIO · storage
Nacos · config
Confluence · collaboration
782CVEs published across this list in 365 days
319rated high or critical
745carry a network vector — the surface a WAF sits on
~2/dayclear the bar. One person can read that
03 · Stages

Nothing blocks on the first day

A rule that goes straight to block is an outage waiting for the first legitimate request that looks like the exploit. Each stage has to earn the next one, and every step is reversible.

Stage 1

Observe

Shadow-evaluated at the edge against live traffic. Nothing is dropped, so a false positive arrives as a data point rather than as an incident.

Stage 2

Canary

Narrowed to a slice. The near-miss corpus has to come back clean — a rule that matches a legitimate request does not move forward.

Stage 3

Block

Compiled into your WAF, by a person, after the window. The receipt keeps the pre-image, so one call puts it back.

04 · Boundaries

Where it refuses

A virtual patch that quietly does nothing is worse than none, because someone stops chasing the real fix. These get a ticket and a stated reason, never an expression.

Kernel use-after-free

A WAF never sees it. The honest output is a livepatch partner ticket — Canonical, KernelCare, Ksplice — or the change window.

Edge appliances

The VPN concentrator or the firewall is itself the edge. There is nothing of yours in front of it to carry a rule.

Stored XSS, CSRF, missing authorization

The malicious request is shaped like a legitimate one. Any rule wide enough to catch it is wide enough to break the application.

What the vendors already cover

This is the other half of the claim above. Managed rulesets cover the headline CVEs in mainstream frameworks, free and within hours — we do not race them there, we say so and link theirs. Where we are genuinely first is the software they do not ship rules for at all: JumpServer, KubeSphere, Nacos, Gitea and the rest of the self-hosted estate.

05 · The daily ledger

Every day is written down, including the quiet ones.

A day with nothing to shield still publishes what was read and why nothing cleared the bar. Over a year that record is worth more than any single rule, and it is the part a competitor cannot copy in a weekend.

406disclosures read
31rated critical
2on the watchlist
1shieldable today

// sources: NVD · OSV · GitHub Advisories · vendor advisories