Fresh container.
Every launch.

Every staging site runs inside its own rootless Docker container with network egress filtered at the host. A malicious plugin cannot reach your production database, your payment gateway, or any other tenant on our platform. We verify this with continuous penetration tests.

Rootless containers seccomp + AppArmor Egress allow-list
Isolation profile Locked
Runtimecontainerd 1.7
User namespaceRootless, uid 10000+
seccompCustom allowlist
AppArmordocker-default-wp
CapabilitiesNone (0)
/proc, /sysMasked
Memory limitHard · 4 GB
PID limit256
EgressAllow-list only
Lifetime (free)7 days

A compromised plugin goes nowhere.

If a plugin inside staging tries to exec(), file_get_contents("/etc/passwd"), or phone home to evil.ru — the syscall is blocked, the packet is dropped, and the event appears in your activity log within 400 ms.

Layer 0 · Plugin
evil-seo-pro v2.1
Tries: shell_exec()
Tries: fopen("/etc/shadow")
Tries: curl evil.ru
Layer 1 · Container
seccomp / AppArmor
× execve blocked
× open(/etc) denied
✓ curl allowed (next layer)
Layer 2 · Network
Egress firewall
× evil.ru · DROP
× 185.220.101.* · DROP
→ logged + alerted
Production: untouched
Your live site. Other tenants. Your billing data. All fine.

Three layers.
Each one sufficient on its own.

01 · Kernel

seccomp-bpf allowlist

The container can make exactly 63 syscalls. Everything else (ptrace, module_load, kexec, etc.) returns EPERM.

allowed: read, write, open,
close, stat, fstat, lseek,
mmap, mprotect, munmap...
02 · Filesystem

Read-only rootfs

Only /var/www/html, /tmp, and the MySQL datadir are writable. Everything else is mounted read-only.

/ ro
/usr ro
/etc ro
/var/www/html rw
03 · Network

Egress allow-list

Default-deny. We allow api.wordpress.org, downloads.wordpress.org, and a handful of known-good plugin update servers. Everything else blocked.

ALLOW api.wordpress.org
ALLOW plugins.svn.wp.org
DENY 0.0.0.0/0

From infection to quarantine: 412 ms.

An anonymized walk-through of a real supply-chain compromise a customer caught in staging. Plugin was CVE-2024-3721 · ultimate-member 2.8.3.

T+0 ms
Plugin activated in staging
Customer imported production DB including a user account with pre-poisoned usermeta row.
T+87 ms
Privilege escalation attempt
Plugin attempts wp_capabilities = {"administrator": true} against unauthorized uid.
T+142 ms
Egress request: 185.220.101.47:443
Connecting to known C2 server. Firewall: DROP iptables rule L3-egress-tor.
T+293 ms
Behavioral score: 94/100 · HIGH
eBPF probe aggregates: 3 blocked syscalls + 1 blocked egress + usermeta write. Alert queued.
T+412 ms
Container quarantined · activity log delivered
Container paused. Customer email + Slack alert sent. Pre-incident snapshot retained for forensics.
Production site never received the update. Customer reverted in staging. Plugin author notified. Disclosure 41 days later.

Test the scary plugin anyway.

Worst case it burns down a container we were going to delete in 7 days.

Start free Encryption & compliance →