Table of contents
On October 21, 2026, the PHP developers released emergency security updates addressing two critical remote code execution (RCE) vulnerabilities: CVE-2026-109618 and CVE-2026-109619.
Both vulnerabilities have a CVSS 4.0 score of 9.2 and could allow an unauthenticated attacker to execute arbitrary code on a server. An attacker does not necessarily need an administrator password or an account on the website.
Fixes are available in PHP 8.2.35, 8.3.36, 8.4.27, and 8.5.12. The PHP developers specifically warn that there is no comprehensive mitigation without updating: temporary restrictions may reduce the attack surface, but they do not fully address both vulnerabilities.
What vulnerabilities were discovered?
These issues are not in Joomla or an individual extension: they exist in the PHP interpreter itself. PHP processes virtually every request to a PHP-powered website, so the vulnerability exists below the content management system and its security plugins.
CVE-2026-109618: Memory corruption when resources are exhausted
The first vulnerability involves how PHP handles running out of available memory while parsing an incoming HTTP request.
Under certain conditions, an attacker can send a specially crafted request, including one involving multipart form data and file uploads. PHP aborts processing because of memory exhaustion while internal request structures have not yet been fully initialized. During cleanup, PHP may mistakenly treat corrupted data as valid.
Potential consequences include:
- Corruption of the PHP process's memory;
- Execution of arbitrary code with the web server user's privileges;
- Reading and modifying website files;
- Access to configuration files and databases;
- Installation of backdoors and further compromise of the server.
Exploitation of CVE-2026-109618 over HTTP has been confirmed for Apache with mod_php under default resource limits. Other configurations, including PHP-FPM, are also within the scope of the risk.
CVE-2026-109619: Reuse of stale internal state
The second vulnerability involves PHP's global state, which may persist after a request ends even though the memory it referenced has already been freed.
Exploitation involves two stages:
- The first request leaves behind an invalid internal state.
- A subsequent request reaches the same PHP worker process and uses stale data before normal initialization has a chance to reset it.
This is a type of use-after-free flaw that can lead to code execution. Confirmed exploitation paths include PHP session upload progress handling and certain diagnostic messages generated before a request has been fully initialized.
The session.upload_progress attack path has been confirmed for both mod_php and PHP-FPM. However, disabling this feature blocks only one known scenario and is not a complete fix.
Why is this dangerous for Joomla?
A typical vulnerability in an extension exists within the CMS: to exploit it, a request must reach Joomla and pass through part of its application logic. In this case, the attack targets PHP itself, which starts processing the request before the website's code runs.
This means the following measures may not protect against these vulnerabilities:
- A strong administrator password;
- Multi-factor authentication;
- A hidden administrator login URL;
- A security plugin installed in Joomla;
- Disabling user registration;
- Restricting the permissions of ordinary user accounts.
The PHP developers consider the risk particularly high for servers running Apache with mod_php: a confirmed attack scenario allows an unauthenticated request to trigger the vulnerability before application code executes.
Which PHP versions should you install?
The secure patch release depends on the PHP branch your website uses:
- PHP 8.5: Update to 8.5.12 or later.
- PHP 8.4: Update to 8.4.27 or later.
- PHP 8.3: Update to 8.3.36 or later.
- PHP 8.2: Update to 8.2.35 or later, and plan a move to a newer supported branch.
- PHP 8.1 and earlier: No ready-to-install official fixed release is available from the PHP project.
The last vulnerable patch releases in the supported branches are PHP 8.2.34, 8.3.35, 8.4.26, and 8.5.11.
PHP 8.2 receives security updates only and will reach end of support on December 31, 2026. Therefore, updating to PHP 8.2.35 addresses the immediate problem but is not a long-term strategy.
What should website owners do right now?
Step 1: Find out which PHP version your website actually uses
Check the version in your hosting control panel or in Joomla under System → System Information. Be sure to check the PHP interpreter that serves web requests: the command-line version shown by php -v on a VPS may differ from the PHP-FPM or Apache version used by the website.
Step 2: Install a patched release
If your website already runs on PHP 8.2, 8.3, 8.4, or 8.5, select the corresponding patched version in your hosting panel. Updating within the same branch—for example, from PHP 8.3.35 to 8.3.36—is a patch-level update and usually does not require changes to website code.
If the patched version is not available in your hosting panel, contact your hosting provider's support team and ask when a secure build will be installed.
Step 3: Fully restart PHP
After installing the updated packages, restart all PHP worker processes. For PHP-FPM, this usually means restarting the appropriate service. If you use mod_php, you may need to stop and start Apache completely, because a graceful reload can leave the old library loaded in memory.
Step 4: Test your website after updating
- Open the home page and several internal pages.
- Check that you can log in to the administration panel.
- Submit test forms and send test emails.
- Test image and document uploads.
- Verify that your online store, search, and other essential components work.
- Review the PHP error log after switching versions.
Step 5: Check for signs of a possible compromise
At the time of writing, reports of active exploitation are conflicting, so it is not possible to state with confidence that widespread attacks have been confirmed. However, once fixes are published, attackers may quickly analyze the changes and develop working exploits.
Check for:
- Unknown PHP files in
/images,/media,/tmp,/cache, and upload directories; - Recently modified Joomla or WordPress system files;
- Unknown administrator accounts;
- Suspicious cron jobs and running processes;
- Unusual outbound connections and spikes in server load;
- Requests containing unusually large or malformed multipart data in web server logs.
What should you do with an outdated Joomla website and an unsupported PHP version?
The main problem with older websites goes beyond these two CVEs. Joomla 3, outdated extensions, and unsupported PHP versions no longer receive a full range of official security fixes. Even if a hosting provider temporarily backports a particular fix to PHP 7.4 or 8.1, the next critical vulnerability may remain unpatched.
When a website remains exposed to the internet for years, attacks do not stop: automated scanners look for known vulnerabilities in Joomla, extensions, templates, and PHP every day. The longer a system remains unsupported, the more unpatched entry points can accumulate.
Simply switching an old Joomla installation to a newer PHP version can cause errors. A safe migration usually requires:
- Creating a complete backup;
- Auditing components, modules, plugins, and the template;
- Replacing abandoned extensions;
- Updating Joomla in the appropriate sequence;
- Testing the website on a staging copy;
- Switching to a supported PHP version;
- Performing final checks after the migration.
Our Joomla upgrade service
If your website runs an outdated Joomla version or is incompatible with a modern PHP release, we can carry out a comprehensive upgrade. We will review your extensions and template, prepare backup and staging copies, plan the migration steps, and help move your website to an up-to-date Joomla release and a supported PHP version.
Learn more about our service: Joomla website upgrades and migration.
It is especially important to plan an upgrade in advance if your website uses Joomla 3, PHP 7.4, PHP 8.0, or PHP 8.1. Waiting for the next critical vulnerability leaves too little time for careful compatibility testing and migration.
Additional security measures
- Update Joomla and all extensions to current releases.
- Remove unused components, plugins, and templates rather than simply disabling them.
- Enable multi-factor authentication for administrators.
- Restrict direct access to the origin server if the website is protected by a CDN or WAF.
- Keep backups separate from the website and test your ability to restore them.
- Monitor file changes and configure alerts for newly created administrator accounts.
- Check your PHP version regularly: the major/minor branch alone is not enough; the exact patch release matters.
Submit a request List of services
