Cybersecurity
Critical PHP Core RCE: Triage and Mitigation for CVE-2026-109618 and CVE-2026-109619
2026-10-26 · İsmail İşler
- Cybersecurity
- CVE-2026-109618
- PHP
- Sysadmin
- cPanel
- DevOps
Critical unauthenticated PHP Core RCE flaws (CVE-2026-109618 and CVE-2026-109619) disclosed. Patch verification and remediation guide for cPanel/EasyApache.
On October 21, 2026, the PHP development team pushed out emergency out-of-band updates addressing two critical vulnerabilities: CVE-2026-109618 and CVE-2026-109619.
This is not a theoretical bug. It is an unauthenticated Remote Code Execution (RCE) affecting nearly the entire PHP version landscape—from legacy PHP 5.0 up to current 8.5 releases. If you run cPanel, WHM, EasyApache, or bare LAMP stacks, your servers are in the crosshairs until patched.
Threat Profile & Root Cause
The vulnerability sits inside PHP's core request processing pipeline. Because PHP serves as the native interpreter for millions of monolithic apps and WordPress sites, an arbitrary code execution bug at runtime bypasses conventional application-level web application firewalls (WAFs).
Once an attacker fires a working payload: * They immediately gain an interactive shell under the web server daemon user (`nobody`, `www-data`, or `apache`). In shared environments with loose kernel isolation, chaining this with a local privilege escalation (LPE) vector yields root in minutes. Database exfiltration, persistent backdoor deployment, and lateral network pivoting follow immediately.
cPanel/WHM and EasyApache4 have pushed emergency patched builds to their upstream mirrors.
Quick Server Audit
Before digging through individual package repos, run this one-liner over SSH to inventory every active PHP binary currently registered on your host:
rpm -qa | grep -E '^ea-php[0-9]{2}-php-[0-9]' | sortVulnerable vs. Patched Targets (EasyApache4 / cPanel)
Audit your installed server packages immediately against the safe baseline below:
PHP 7.4: Vulnerable
<= 7.4.33-18➔ Safe Patched:ea-php74-7.4.33-19PHP 8.0: Vulnerable
<= 8.0.30-11➔ Safe Patched:ea-php80-8.0.30-12PHP 8.1: Vulnerable
<= 8.1.34-4➔ Safe Patched:ea-php81-8.1.34-5PHP 8.2: Vulnerable
<= 8.2.34➔ Safe Patched:ea-php82-8.2.35PHP 8.3: Vulnerable
<= 8.3.35➔ Safe Patched:ea-php83-8.3.36PHP 8.4: Vulnerable
<= 8.4.26➔ Safe Patched:ea-php84-8.4.27PHP 8.5: Vulnerable
<= 8.5.11➔ Safe Patched:ea-php85-8.5.12
Immediate Remediation Steps
1. cPanel / EasyApache4 (CentOS / AlmaLinux / Rocky Linux)
Do not wait on automated overnight cron cycles. Run this directly over SSH:
Invalidate stale repo caches and fetch fresh metadata
yum clean all && yum makecacheRun system-level package upgrades
/scripts/rpmupConfirm package integrity (Example: PHP 8.2)
rpm -qa | grep ea-php82Look for release 8.2.35 or newer. Once verified, restart your daemon workers to purge stale threads from memory:
/scripts/restartsrv_apache/scripts/restartsrv_apache_php_fpm2. Standalone Ubuntu / Debian (Native & Ondřej Surý PPA)
For bare LAMP/LEMP nodes without a web control panel:
Refresh repository indices
sudo apt-get updateUpgrade running PHP runtimes
sudo apt-get --only-upgrade install php*-fpm php*-cliRestart active pools and web server daemons
sudo systemctl restart php*-fpm && sudo systemctl restart nginxPost-Patch Verification: Were You Already Compromised?
Patching the binary blocks subsequent attacks, but it does not kill backdoors planted prior to mitigation. Execute these rapid triage checks across the host:
Inspect for interactive shells under web daemon privileges:
ps aux | grep -E '(nobody|www-data|apache)' | grep -E '(bash|sh|python|perl|nc)'Check webroots for recently created or modified PHP files/backdoors:
find /home/*/public_html -type f -name "*.php" -mtime -2 -lsCheck ephemeral scratch storage for unlinked executables:
find /tmp /var/tmp /dev/shm -type f -mtime -2 -exec ls -la {} +Verify persistence inside daemon cron registries:
crontab -u nobody -l && crontab -u www-data -l Architectural Takeaways: Killing the Blast Radius
Exposing monolithic interpreters directly to the internet will always carry zero-day risks. The defense is process isolation:
Strict Containerization: Run runtime services inside read-only, non-root Docker containers stripped of basic network binaries (curl, wget, nc). Even if someone lands a shell, they are trapped in an ephemeral box.
Decoupled Architecture: Move presentation layers to edge platforms (Next.js/Node) and keep APIs private behind zero-trust tunnels (e.g., Cloudflare Tunnel). An unauthenticated public request should never directly touch host system memory.