On May 21, 2026, security researchers at Nebula Security (NebSec) disclosed nginx-poolslip — an unpatched remote code execution zero-day affecting NGINX 1.31.0, the latest stable release. This is not the same flaw as CVE-2026-42945 (Rift) patched eight days earlier. Poolslip bypasses that patch entirely and targets a separate code path in NGINX’s memory pool allocator.
If you run NGINX in your homelab — as a reverse proxy, API gateway, or load balancer — this advisory is for you. As of May 22, 2026, there is no official patch. This guide will help you determine your exposure, understand the risk, and apply practical mitigations until a fix lands.
What Is nginx-poolslip?
nginx-poolslip is a remote code execution vulnerability in NGINX’s internal
memory pool (ngx_pool_t) handling. The flaw allows an attacker to corrupt
the cleanup handler linked list inside a request-scoped memory pool. When
NGINX destroys the pool at the end of the request lifecycle, it executes the
corrupted function pointer — giving the attacker control of execution flow.
Key facts:
| Detail | Value |
|---|---|
| Disclosed | May 21, 2026 by Nebula Security |
| Affected version | NGINX 1.31.0 (and NGINX Plus with same C codebase) |
| CVSS (estimated) | 9.0+ (RCE, no auth required, no patch) |
| CVE assigned | Not yet — pending F5 triage |
| Patch available | No — 30-day disclosure window runs |
| ASLR bypass | Confirmed — exploit includes memory disclosure primitive |
The vulnerability exploits dynamic variable parsing in set, map, geo,
and upstream configuration directives — a path the Rift patch did not
cover.
Are You Affected?
If you run NGINX in your homelab, your risk depends on:
- Which NGINX version you are running
- Whether your instance is internet-facing
- Which configuration directives you use
Check Your NGINX Version
If NGINX is installed directly on the host:
|
|
If running in Docker:
|
|
Check your Docker image tags:
|
|
Vulnerable images: Any NGINX image tagged 1.31.0, latest, or alpine
pulled after the 1.31.0 release date (approximately mid-May 2026).
Safe images: NGINX 1.30.x, 1.26.x, or any pinned version below 1.31.0. Default images pinned to 1.27.x (like Nginx Proxy Manager) are not affected unless you manually upgraded the base image to 1.31.0.
Check if You Use Affected Directives
If using set, map, geo, or upstream blocks in your NGINX config,
you are in the attack surface. Check your config:
|
|
Why This Matters for Homelabs
Most homelabs run NGINX as a reverse proxy. The vulnerability is especially concerning because:
Reverse proxies are exposed. If you publish services via NGINX with a public DNS record or port forward, an attacker can reach your NGINX listener without any authentication.
No patch exists. Unlike a typical CVE where you can run apt upgrade
and move on, poolslip has no fix. You must rely on mitigations.
Configuration-based trigger. The vulnerability triggers through common
rewrite and variable expansion paths. If you use NGINX with Traefik-like
dynamic configs, or hand-crafted set/map rules for routing, you are
more exposed.
Docker deployments that pull latest. A surprising number of homelab
compose files use image: nginx:latest. If Docker pulled the 1.31.0
image in the past week, you are running a vulnerable binary.
Practical Mitigations
Until F5 releases a patch, use these strategies to reduce risk.
1. Pin Your NGINX Docker Image to 1.26.x or 1.30.x
The simplest mitigation: downgrade to a known-safe version.
|
|
Then recreate the container:
|
|
2. Check and Update Nginx Proxy Manager
If you use Nginx Proxy Manager, check which base image it ships:
|
|
NPM typically pins to NGINX 1.27.x, which is not affected. If you are on a recent NPM build that updated to 1.31.0, roll back to a prior tag.
3. Limit Exposure with Firewall Rules
If you cannot downgrade immediately, restrict access:
MikroTik (RouterOS) — allow only trusted source IPs:
/ip firewall filter add chain=input protocol=tcp dst-port=80,443 \
src-address-list=trusted-hosts action=accept place-before=1
/ip firewall filter add chain=input protocol=tcp dst-port=80,443 \
action=drop
Linux / nftables — rate limit and restrict:
|
|
4. Deploy a WAF Layer
Add a Web Application Firewall in front of NGINX. CrowdSec’s AppSec component can act as a WAF and block exploit attempts:
|
|
Configure NGINX to forward traffic through the WAF proxy for inspection before reaching the vulnerable parser.
5. Enable ASLR (Already On, But Verify)
ASLR is standard on modern Linux but verify it is active:
|
|
If it returns anything other than 2, enable it:
|
|
Note: ASLR is not a complete mitigation — poolslip includes a memory disclosure primitive that leaks ASLR layout. But it adds a layer of complexity for the attacker.
6. Audit Your NGINX Configuration
Remove or minimize use of set, map, geo, and upstream with
dynamic variable expansion:
|
|
7. Consider a Temporary Proxy Swap
If your homelab cannot tolerate any NGINX risk, swap to an alternative reverse proxy temporarily:
- Caddy — Simple, HTTPS by default, no memory pool attack surface
- Traefik — Dynamic config, popular in Docker homelabs
- HAProxy — Battle-tested, different codebase, excellent performance
Migration doesn’t have to be permanent. Run Caddy or Traefik as a temporary front-end while NGINX waits for the patch.
Patch Readiness Plan
When F5 releases the fix, you need to act fast:
- Subscribe to the F5 security advisory feed
- Monitor the NebSec disclosure timeline — full details drop 30 days post-patch
- Pin to the patched version immediately — use
nginx:1.31.1or similar - Test on a non-production container first
|
|
Summary
| Action | Priority | Effort |
|---|---|---|
| Check your NGINX version | 🔴 High | 1 min |
| Pin Docker image to safe version | 🔴 High | 5 min |
| Limit exposure with firewall rules | 🟡 Medium | 10 min |
Audit set/map/geo directives |
🟡 Medium | 15 min |
| Deploy WAF layer | 🟢 Low | 30 min |
| Subscribe to F5 advisories | 🟢 Low | 2 min |
The nginx-poolslip zero-day is serious but manageable for homelabs. Downgrading to a safe version or pinning your Docker image is the single most effective action you can take today. Add firewall restrictions and subscribe to the advisory feed so you know the moment a patch drops.
Check your NGINX version now, pin to a safe release, and stay alert for the F5 patch. Your homelab will be fine.