cPanel EasyApache 4 Security Update Guide

cPanel EasyApache 4 v25.91: PHP2Shell CVE Fixes, libcurl & Podman 503 Fix

An SRE blueprint to patch critical PHP and libcurl vulnerabilities, harden WAF rules, and stabilize cPanel infrastructure.

EasyApache 4 v25.91 introduced critical security fixes for two PHP vulnerabilities, CVE-2026-109618 and CVE-2026-109619, affecting EasyApache 4 PHP packages from ea-php74 through ea-php85. The release also updated ea-libcurl and ModSecurity components and addressed an ea-podman issue that could leave restored cPanel applications returning HTTP 503 errors after container port reassignment.

These updates are particularly important for multi-tenant hosting providers running multiple PHP versions, PHP-FPM pools, and containerized applications. Updating the website PHP packages alone is not sufficient: administrators must also verify cPanel's internal PHP environment, restart affected workers, and confirm that the patched packages are active.

This SRE guide explains how to audit, update, and verify the affected components while accounting for shared-hosting resource isolation and production availability.

1. PHP2Shell CVE-2026-109618 and CVE-2026-109619

Both PHP2Shell vulnerabilities carry a CVSS v4.0 score of 9.2 (Critical). Because the flaws reside in the core PHP engine's request handling, traditional CMS updates (like WordPress or Joomla) offer zero protection.

  • PHP Package Coverage: EasyApache 4 v25.91 patches ea-php74 through ea-php85. The fixes are backported to the older PHP 7.4, 8.0, and 8.1 package branches, while newer branches receive updated upstream PHP releases. Administrators should still plan migrations away from upstream-EOL PHP versions.
  • Legacy PHP (CloudLinux Exception): Standard cPanel EasyApache 4 packages listed in v25.91 cover ea-php74 through ea-php85. CloudLinux maintains a separate package matrix that includes older PHP branches (down to PHP 5.2). For PHP versions older than 7.4, administrators should verify the exact patched package with their vendor or ELS provider rather than assuming that standard cPanel EA4 coverage applies.

14 Vulnerabilities Fixed in libcurl (Including CVE-2026-92392)

EasyApache 4 v25.91 also updates ea-libcurl to address 14 security vulnerabilities, including CVE-2026-92392. This particular issue involves a use-after-free condition in HTTP/2 upload handling. The impact depends on how applications use the affected library. Disabling HTTP/2 or temporarily using HTTP/1.1 may reduce exposure in specific application paths, but neither approach replaces the patched package.

2. Updating ModSecurity and Reviewing WAF Rules

EasyApache 4 updates ea-modsec30 from 3.0.16 to 3.0.17, incorporating seven CVE fixes and one additional GHSA security fix.

Administrators should verify that the updated ModSecurity engine is active and that their OWASP Core Rule Set deployment is independently maintained and current.

Alert: Package Distinctions

ea-modsec30 and ea-apache24-mod_security2 are separate packages. Verify which ModSecurity engine your server actually uses and ensure that the relevant installed package is updated.

3. Fixing cPanel 503 Errors After Account Restore

The EA4-338 fix addresses a specific ea-podman restore scenario where reassigned container ports leave web application proxies pointing to outdated destinations. The updated package automatically re-points web application proxies at the end of a user-run restore, so accounts whose container ports were reassigned can return to serving traffic instead of returning HTTP 503 errors.

(Note: Other HTTP 503 errors may still result from PHP-FPM failures, Apache configuration issues, unavailable upstream services, or incorrect proxy settings).

4. Troubleshooting ea-podman with CloudLinux CageFS

If you run CloudLinux and face namespace initialization failures for caged users, CageFS is likely masking the rootless [email protected].

Warning: Security Consideration

These steps weaken some of the isolation boundaries provided by CageFS and LVE. CloudLinux warns that rootless containers may execute outside CageFS, access host files through bind mounts, and operate without the usual LVE resource controls. Apply these changes only after reviewing the multi-tenant security implications and accepting the associated risks.

To apply this specific workaround safely via SSH:

# Define target user variables (Replace with actual values)
USERNAME="cpaneluser"
USER_UID="1001"

# 1. Update ea-podman first
dnf update ea-podman

# 2. Unmask the user service persistently
touch /opt/cloudlinux/flags/enabled-flags.d/disable-systemd-user-mask.flag

# 3. Reinstall hooks
cagefsctl --hook-install

# 4. Verify unmasking (Output should be 'static', not 'masked')
systemctl is-enabled [email protected]

# 5. Enable unprivileged user namespaces
echo "user.max_user_namespaces = 15076" > /etc/sysctl.d/99-ea-podman.conf
sysctl --system

# 6. Enable lingering and stop existing user service
loginctl enable-linger "$USERNAME"
systemctl stop "user@${USER_UID}.service"

Important: CloudLinux Rollback Procedure

To fully restore default CageFS security isolation, you must uninstall the affected containers before resetting the systemd states. Run the following commands as root:

# 1. Uninstall affected containers using the documented procedure
# (Repeat for each deployed container)
ea-podman uninstall CONTAINER_NAME --verify

# 2. Restore the default systemd user-service masking
rm -f /opt/cloudlinux/flags/enabled-flags.d/disable-systemd-user-mask.flag
cagefsctl --hook-install

# 3. Restore the user namespace limit
rm -f /etc/sysctl.d/99-ea-podman.conf
sysctl -w user.max_user_namespaces=0

# 4. Disable lingering and stop the user's service
loginctl disable-linger "$USERNAME"
systemctl stop "user@${USER_UID}.service"

# 5. Verify the rollback
sysctl user.max_user_namespaces
systemctl is-enabled [email protected]
loginctl show-user "$USERNAME" -p Linger

(Note: Ensure user.max_user_namespaces returns to your system's expected default state; it may not be exactly 0 if configured elsewhere).

5. Updating EasyApache PHP and cPanel Internal PHP

cPanel operates two independent PHP environments that must be patched separately. Run the update workflow appropriate to your server's configured settings.

Minimum Fixed Builds for cPanel Internal PHP:
The cPanel components (WHM, Roundcube) are patched in the following minimum builds:

  • Build 138: 138.0.18
  • Build 136: 136.0.50
  • Build 134: 134.0.66
  • Build 110: 110.0.153

Command-Line Update Procedure:

# 1. Refresh repository metadata (CentOS/RHEL/CloudLinux)
yum clean all && yum makecache

# 2. To update EasyApache 4 and cPanel-managed system packages:
/scripts/update-packages

# 3. To update cPanel's internal PHP explicitly:
/scripts/autorepair update_cpanel_php8

# 4. To execute the full cPanel & WHM core update workflow (which also invokes package updates):
/scripts/upcp

# 5. Restart services to load patched binaries into active workers
/scripts/restartsrv_httpd
/scripts/restartsrv_apache_php_fpm

(LiteSpeed users must use the supported LiteSpeed restart or graceful-restart procedure for their installed configuration. Confirm that the procedure safely cycles the relevant PHP workers and that old processes are no longer serving requests).

6. Package-Level Verification and Runtime Validation

Running php -v is insufficient. Because cPanel and OS vendors backport security fixes to legacy branches, the version string will often not change.

To verify installed CLI packages, query the RPM changelog:

for v in 74 80 81 82 83 84 85; do
    pkg="ea-php${v}-php-cli"
    if rpm -q "$pkg" >/dev/null 2>&1; then
        echo "===== PHP ${v} ====="
        rpm -q --changelog "$pkg" | \
            grep -E -m 5 'CVE-2026-109618|CVE-2026-109619' \
            || echo "No matching CVE entry found - investigate package version and vendor changelog."
    fi
done

On supported cPanel operating systems, use the package manager and vendor-provided changelog format to verify the installed package. Do not assume that RPM-based verification commands apply to every distribution.

Important: Runtime Validation Checklist

This RPM check only confirms that the CLI package is installed. To ensure full mitigation, administrators must complete the following:

  • Verify the installed CLI package changelog for each enabled PHP branch.
  • Verify the corresponding PHP-FPM package versions and vendor changelogs.
  • Confirm the domain's assigned PHP version in MultiPHP Manager.
  • Restart the relevant PHP-FPM services or application workers.
  • Test a representative domain and inspect PHP-FPM and web-server logs.

7. Temporary PHP2Shell Mitigation Strategies

If a maintenance window cannot be scheduled immediately, you must implement temporary mitigations. [Warning] These steps reduce exposure to specific attack paths but do not make an installation safe; patching is the only complete remediation.

  • For CVE-2026-109619 (Stale State): Set session.upload_progress.enabled = 0 before request parsing. Do not use .user.ini or ini_set(). Enforce it globally in the main php.ini, PHP-FPM pool configurations, or Apache server configuration. For PHP 8.5, also add fatal_error_backtraces = 0. These directives address specific vulnerable execution paths and should be treated as temporary, defense-in-depth mitigations. Their effectiveness depends on the PHP version and request-handling configuration.
  • For CVE-2026-109618 (Out-of-Memory): The upstream PHP advisory recommends setting memory_limit = -1 as a temporary mitigation against the controllable PHP-level memory-limit failure path. However, applying unlimited PHP memory globally in a multi-tenant hosting environment requires careful operational review. Administrators should assess application-level resource consumption and use CloudLinux LVE, cgroups, or container memory limits to maintain resource isolation. These controls provide availability protection but do not fix the underlying vulnerability. Restrict post_max_size according to application requirements and keep upload_max_filesize below post_max_size. These upload limits are supplementary exposure-reduction controls; they do not replace the upstream PHP mitigation or security package update.
  • RLIMIT Warning: Do not use RLIMIT_AS or RLIMIT_DATA as substitutes for the PHP mitigation. Operating-system or container memory limits provide resource containment, not a fix for the underlying PHP vulnerability.
Bare-Metal Security

Run Multi-Tenant Applications
on Hardened Dedicated Servers.

Achieve total hardware isolation, unthrottled performance, and enterprise DDoS protection.

Deploy Dedicated Servers

cPanel Security and EasyApache 4 FAQ

How do I safely fix CVE vulnerabilities in cPanel for legacy websites?

EasyApache 4 addresses this via backporting. The release backports the PHP2Shell fixes to legacy branches (ea-php74, ea-php80, and ea-php81). This means the underlying security flaw is patched, but the PHP version number remains unchanged, ensuring that legacy application code relying on older syntax does not break during the security update.

What is CVE patching in the context of cPanel internal PHP?

cPanel operates two separate PHP environments. EasyApache 4 updates patch the PHP rendering your websites. CVE patching for cPanel's internal PHP (which runs the WHM interface and webmail) requires a separate cPanel system update. Both environments must be independently patched and verified to secure the server completely.

Is it safe to use .user.ini for PHP2Shell mitigation in cPanel?

No. The PHP2Shell vulnerability triggers during the initial request parsing phase. Because .user.ini files are evaluated per-request after initialization begins, placing session.upload_progress.enabled = 0 inside a .user.ini file will not protect the server. You must apply this directive globally in the primary php.ini or PHP-FPM pool configurations.

Ready to Launch with Unmatched Power?

Ready to Launch with Unmatched Power? Deploy blazing-fast 1–100Gbps unmetered servers, high-performance GPU rigs, or game-optimized hosting custom-built for speed, reliability, and scale. Whether it’s colocation, compute-intensive tasks, or latency-critical applications, ServerMO delivers. Order now and get online in minutes, fully secured, fully optimized.

Red and white text reads '24x7' above bold purple 'SERVICES' on a white background, all set against a black backdrop. Energetic and modern feel.

Power. Performance. Precision.

99.99% Uptime Guarantee
24/7 Expert Support
Blazing-Fast NVMe SSD

Christmas Mega Sale!

Unwrap the ultimate power! Get massive holiday discounts on all Dedicated Servers. Offer ends soon grab yours before the snow melts!

London UK (15% OFF)
Tokyo Japan (10% OFF)
00Days
00Hrs
00Min
00Sec
Explore Grand Offers