Vulnerability14 min readUpdated October 23, 2026

PHP2Shell: the flaws in PHP that put most websites at risk

Two flaws in PHP itself let attackers take over web servers without a password. The fixed PHP versions, the applications affected, and what to do now.

Illustration: a ring showing the CVSS score 9.8, with the title PHP2Shell

What to do now

  1. Update PHP to 8.5.12, 8.4.27, 8.3.36 or 8.2.35, or newer, depending on your branch.
  2. Restart Apache, PHP-FPM and every long-running PHP worker, so that the old version is no longer in memory.
  3. On PHP 8.1 or older, move to a supported branch: there is no official release for these versions.
  4. With a hosting plan, ask your host whether the update is installed, and compare your PHP version with the table on this page.
Year
2026
CVSS 3.1 score
9.8 critical
of websites with a known server language run on PHP
69.3 %
applications taken over by the finders, WordPress among them
11
Why it is on the list
  • Reach met

    PHP runs on 69.3 % of all websites whose server language is known (W3Techs, October 23, 2026).

  • Mass exploitation not met

    No attacks in the wild were known on October 23, 2026; CISA rated exploitation as “none”.

  • Damage not met

    No damage has been reported so far.

  • Extraordinary response met

    Fixed releases for four PHP branches at once, source patches for three branches that are no longer supported, and protection rules prepared with Google, AWS, Microsoft, Cloudflare, and others.

How a vulnerability gets on this list

The record
AffectedPHP, the language behind most websites
CVECVE-2026-109618, CVE-2026-109619
CVSS vectorCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Weakness (CWE)CWE-416, CWE-755, CWE-824, CWE-1325
Fixed inPHP 8.5.12, 8.4.27, 8.3.36 and 8.2.35 (October 21, 2026)
Found byCalif, Wiz Research and OpenAI, independently of each other
Timeline
12345
  1. 1Reported to the vendor
  2. 2Wiz Research reports further bugs, independently+13 days
  3. 3OpenAI reports further attack paths+38 days
  4. 4The CVE numbers leak online, with a wrong score of 10.0+70 days
  5. 5Fix available+71 days

On October 21, 2026, the PHP project fixed two flaws in the language itself. With a single crafted request, an attacker can take over a web server before any website code runs and without a password. PHP runs on 69.3 % of all websites whose server language is known, from small blogs to large online shops.

Whether a website is affected depends on the PHP version of its server, not on the version of WordPress, Joomla, or any other application. Your host’s control panel shows it, and so does the system information of most applications (see the table of applications below); on the server itself, the command php -v prints it.

Fixed PHP versions

Fixed releases by branch
BranchStatus
PHP 8.5fixed from 8.5.12
PHP 8.4fixed from 8.4.27
PHP 8.3fixed from 8.3.36
PHP 8.2fixed from 8.2.35
PHP 7.4, 8.0, 8.1affected; no official release, only source patches from the PHP team
PHP 5.4 – 7.3affected; no fix

PHP applications: what they need and where they show your PHP version

61 widely used applications that run on PHP. Each one is affected only through the PHP version of the server it runs on. 7 of them carry a warning sign: a version the vendor still maintains runs only on PHP without a fix, or the vendor has not yet shipped the fixed PHP.

ApplicationPHP it needsWhere it shows the PHP versionTakeover shown by the finders
Adminer administrationVersion 6.1: PHP 5.3 or newerA single PHP file that runs on whatever PHP the server has.no confirmed path–
Backdrop CMS CMSVersion 1.35: PHP 7.1 or newerReports > Status report, row “PHP”–
BookStack wikiVersion 26.09: PHP 8.2 or newerBookStack published its own warning on October 21, 2026. It notes that Ubuntu's fixed packages keep older version numbers. Vendor's noticeno confirmed path–
Cacti monitoringVersion 1.2.31: PHP 8.1 or newerCacti's own sources disagree: the README of 1.2.31 still names PHP 5.4.Utilities > Technical Support > Summary, row “PHP Version”–
Concrete CMS CMSVersion 9.5: PHP 7.3 to 8.5Dashboard > System & Settings > Environment > Environment Information–
Contao CMSVersion 6.0: PHP 8.4 or newerContao 5.3 accepts PHP 8.1, which gets no fixed release.no confirmed path–
Craft CMS CMSVersion 5: PHP 8.2 or newerCraft 4 accepts PHP 8.0.2 and newer.Utilities > PHP Info–
DokuWiki wikiVersion 2026-07-14: PHP 8.2 or newerOpen the check page while signed in as an administrator.?do=check–
Dolibarr ERP CRM CRMVersion 24.0: PHP 7.2 to 8.5 Dolibarr 18 LTS supports only PHP 7.1 to 8.1, which gets no fixed release.Home > Admin Tools > PHP, row “Version”–
Drupal CMSVersion 11.4: PHP 8.3 to 8.5Drupal 10.6 runs on PHP 8.1 to 8.4. Drupal 11.4.11 (October 21, 2026) also replaces an outdated PHP setting in the .htaccess file.Reports > Status report, row “PHP”yes, on version 11.4.3
EspoCRM CRMVersion 10.0: PHP 8.3 to 8.5Administration > System Requirements–
Flarum forumVersion 2.0: PHP 8.3 or newerFlarum 1.x accepts PHP 7.3 and newer.Admin > Dashboard, row “PHP”–
FreePBX networkVersion 17: PHP 8.2 or newerThe official installer sets up PHP 8.2 from Debian 12. The fix arrives as a Debian security update, whose version number need not read 8.2.35.no confirmed path–
FreshRSS otherVersion 1.30: PHP 8.1 or newerVersions 1.30.3 and 1.30.4 (October 21, 2026) move the Docker images to fixed PHP releases; pull the new image. Vendor's noticeAdministration > Check installation–
Froxlor hostingVersion 2.3: PHP 7.4 to 8.5Also manages PHP for the websites it hosts.no confirmed path–
Gambio online shopVersion 26.10: PHP 8.2 to 8.3PHP 8.2 gets security fixes only until December 31, 2026.no confirmed path–
GLPI help deskVersion 12.0: PHP 8.3 or newerGLPI 10, still updated, accepts PHP 7.4 and newer.no confirmed path–
Grav CMSVersion 2.2: PHP 8.3.11 or newerGrav 1.7 accepts PHP 7.3.6 and newer.no confirmed path–
Icinga Web monitoringVersion 2.14: PHP 8.2 or newerAbout, row “PHP Version”–
ILIAS learning platformVersion 11: PHP 8.3 to 8.4 (recommended: 8.4)ILIAS 9 runs only on PHP 8.1 and 8.2.no confirmed path–
ISPConfig 3 hostingVersion 3.3: uses the PHP packages of the Linux distributionAlso manages PHP for the websites it hosts. ISPConfig's warning of October 21, 2026 says attacks have already been seen; the PHP project has not said so. Vendor's noticeno confirmed path–
Joomla CMSVersion 6.2: PHP 8.3 or newer (recommended: 8.4)Joomla 5, still in use, accepts PHP 8.1, which gets no fixed release.System > Information > System Information, row “PHP Version”yes, on version 6.1.4
JTL-Shop online shopVersion 5.8: PHP 8.3 or newerno confirmed path–
Kanboard collaborationVersion 1.2: PHP 8.1 or newerVersion 1.2.56 (October 21, 2026) moves the official Docker image to PHP 8.5.12, which contains the fix. Vendor's noticeSettings > About, row “PHP version”–
Kirby CMSVersion 5: PHP 8.2 to 8.5 (recommended: 8.4)Panel > System, row “PHP”–
Laravel frameworkVersion 13: PHP 8.3 to 8.5A framework: applications built on it run on the server's PHP. Laravel 12 runs on PHP 8.2 to 8.5.no confirmed pathyes, on version 13.11
LibreNMS monitoringVersion 26.10: PHP 8.4 or newer (recommended: 8.5)/about, row “PHP”–
LimeSurvey Community Edition surveysVersion 7: PHP 8.1.29 to 8.5 LimeSurvey 5.x (PHP 7.2.5 to 8.0) and 3.x (up to PHP 7.4) run only on PHP versions that get no fixed release.Configuration > Settings > Global settings > Overview–
Magento Open Source / Adobe Commerce online shopVersion 2.4.9: PHP 8.3 to 8.5 (recommended: 8.5) Versions 2.4.4 and 2.4.5 still get security fixes but run only on PHP 8.1, which gets no fixed release; 2.4.6 runs on 8.1 or 8.2.no confirmed pathyes, on version 2.4.9
Matomo On-Premise web analyticsVersion 5.14: PHP 7.2.5 or newerMatomo's FAQ names PHP 8 for version 5; the code still accepts 7.2.5.Administration > Diagnostic > System Check–
Mautic CRMVersion 7: PHP 8.2 to 8.5Mautic 5.2 and 6.0 run on PHP 8.1 to 8.3.no confirmed path–
MediaWiki wikiVersion 1.46: PHP 8.3 to 8.5The page also shows how PHP runs: apache2handler means mod_php, where the risk is highest. MediaWiki 1.43 LTS accepts PHP 8.1.Special:Version, row “PHP”yes, on version 1.46.2
MODX Revolution CMSVersion 3.2: PHP 8.1 or newerReports > System Info, row “PHP Version”–
Moodle LMS learning platformVersion 5.3 LTS: PHP 8.3 to 8.4Moodle 4.5 LTS accepts PHP 8.1 and newer.Site administration > Server > PHP info–
MyBB forumVersion 1.8: PHP 5.2 or newerThe installer accepts PHP as old as 5.2.Admin CP > Home, row “PHP Version”–
Neos CMSVersion 9.2: PHP 8.4 to 8.5Neos 8.4 to 9.1 run on PHP 8.2 to 8.5.no confirmed path–
Nextcloud Server collaborationVersion 35: PHP 8.3 to 8.5 (recommended: 8.5)Nextcloud 33 runs on PHP 8.2 to 8.5.no confirmed pathyes, on version 35.0.1
OpenCart online shopVersion 4.1: PHP 8.0 or newerThe code of version 4.1 requires PHP 8.1 or newer.no confirmed path–
OPNsense (web interface) networkVersion 26.7.7: ships PHP 8.5.11; only the vendor can update it PHP is updated only through firmware updates (System > Firmware > Status). The newest PHP listed for 26.7 is 8.5.11, older than the fixed 8.5.12.no confirmed path–
osTicket help deskVersion 1.18: PHP 8.2 to 8.4 (recommended: 8.4)Admin Panel > Dashboard > Information, row “PHP Version”–
ownCloud Server (Classic) collaborationVersion 10.16: PHP 7.4 only ownCloud 10.16, still updated, supports only PHP 7.4, which reached its end of life in 2022 and gets no fixed release. ownCloud Classic 11 needs PHP 8.3 and brings it in its Docker images.no confirmed path–
OXID eShop online shopVersion 7.5: PHP 8.3 to 8.5no confirmed path–
pfSense (web interface) networkVersion CE 2.9.0: ships PHP 8.5.7; only the vendor can update it PHP is part of the firewall system, so only an update from Netgate brings the fix. CE 2.9.0 ships PHP 8.5.7, older than the fixed 8.5.12.no confirmed path–
phpBB forumVersion 3.3: PHP 7.2 to 8.3Administration Control Panel > General, row “PHP version”–
phpMyAdmin administrationVersion 5.2.3: PHP 7.2 to 8.3Officially supported only up to PHP 8.3. The older 4.9 branch runs only on PHP 7.4 or older, which gets no fixed release.Home page > Web server, row “PHP version”yes, on version 5.2.3
Piwigo otherVersion 16.4: PHP 8.2 or newerThe code still accepts PHP 7.4.no confirmed path–
PrestaShop online shopVersion 9.1: PHP 8.1 to 8.5 (recommended: 8.5) PrestaShop 8, still maintained, supports only PHP 7.2 to 8.1, which gets no fixed release: upgrade to version 9, or ask your host whether it has built in a backport.Advanced Parameters > Information–
ProcessWire CMSVersion 3.0: PHP 7.1 or newerno confirmed path–
Roundcube Webmail webmailVersion 1.7: PHP 8.1 to 8.5The 1.6 line accepts PHP 7.3 and newer.no confirmed pathyes, on version 1.7.4
Shopware 6 online shopVersion 6.7: PHP 8.2 or newer (recommended: 8.4)The code of versions 6.6 and 6.7 accepts PHP 8.2 to 8.5.no confirmed path–
Silverstripe CMS CMSVersion 6.2: PHP 8.3 to 8.5no confirmed path–
SnappyMail webmailVersion 2.38: PHP 7.4 or newerNo new release since October 2024.no confirmed path–
Statamic CMSVersion 6: PHP 8.3 or newerBuilt on Laravel.Control Panel > Utilities > PHP Info–
SuiteCRM CRMVersion 8.10: PHP 8.2 to 8.4SuiteCRM 8.9 runs on PHP 8.1 to 8.3, version 7.14 on 8.1 and 8.2.no confirmed path–
Sylius online shopVersion 2.3: PHP 8.3 or newerBuilt on Symfony. Sylius 1.14 accepts PHP 8.1, which gets no fixed release.no confirmed path–
Symfony frameworkVersion 8.1: PHP 8.4 or newerA framework. Symfony 6.4 LTS accepts PHP 8.1, which gets no fixed release.no confirmed pathyes, on version 8.1
TYPO3 CMSVersion 14 LTS: PHP 8.2 to 8.5TYPO3 13 LTS has the same range.Toolbar > System Information, row “PHP version”–
WHMCS hostingVersion 9.1: PHP 8.2 to 8.4 (recommended: 8.4)WHMCS 8.13 LTS runs on PHP 7.2 to 8.3, including versions that get no fixed release.no confirmed pathyes (no version named)
WooCommerce online shopVersion 11.2: PHP 7.4 to 8.4 (recommended: 8.3)8.4 is the highest version WooCommerce has tested. It runs inside WordPress and uses the PHP of the WordPress site.WooCommerce > Status > Server environment, row “PHP version”–
WordPress CMSVersion 7.1: PHP 7.4 to 8.5 (recommended: 8.3)Tools > Site Health > Info > Server, row “PHP version”yes, on version 7.1.2
Zabbix (web frontend) monitoringVersion 7.4: PHP 8.0 to 8.5Only the web frontend runs on PHP. Zabbix 6.0 LTS runs on PHP 7.2.5 to 8.3.no confirmed path–

From the applications' own documentation and source code, checked on October 23, 2026. Only applications whose code base is confirmed to be PHP are listed. If a provider runs the application for you, the provider updates PHP.

How the attack works

When a request needs more memory than PHP allows, PHP stops it at once and jumps out of the code that was running. The finders discovered that this can happen at the worst possible moment: halfway through building a list of uploaded files, or while data from the request is still in use. What is left behind is half-built data that PHP later treats as complete.

An attacker can trigger this from outside with an upload request built to run out of memory at exactly that point, without logging in and before the website’s own code even starts. The second flaw goes further: leftover data from one request survives into the next request handled by the same worker process, which then reuses memory that was already freed. Together, the two flaws let an attacker read the server’s memory and run commands with the rights of the web server.

  1. Attackersends a crafted upload request
  2. PHPruns out of memory halfway through
  3. Half-built datastays behind in memory
  4. Next requestruns the attacker's commands
The attack in four steps: it works before any application code runs, so it does not matter which application the website uses.

According to the PHP project, every PHP installation that serves web pages is at risk: as an Apache module, through PHP-FPM, php-cgi, FrankenPHP, or LiteSpeed. The risk is highest with the Apache module, where the attack works before any application code runs; with PHP-FPM, the finders needed a route through the application.

Which applications are affected

Every application that runs on an affected PHP version is exposed, because the flaw sits underneath it. The finders took over servers running these eleven applications in their tests:

ApplicationVersion tested
WordPress7.1.2
Drupal11.4.3
Joomla6.1.4
MediaWiki1.46.2
Roundcube1.7.4
Magento2.4.9
phpMyAdmin5.2.3
Nextcloud35.0.1
Laravel13.11
Symfony8.1
WHMCSnot stated

The list of applications under the check above shows more PHP applications, the PHP versions they need, and where they show the PHP version of your server.

Three scores for the same flaw

The PHP project rates both flaws 9.2 on version 4.0 of the CVSS scale. The US National Vulnerability Database gives 9.8 on version 3.1, the scale this series uses for every case. A score of 10.0, which spread online the day before the release, was wrong, the PHP Foundation says.

Severity scores for PHP2Shell
PHP project (CVSS 4.0)9.2
NVD (CVSS 3.1)9.8
Leak of October 20 (wrong)10

The PHP project rates the attack as harder to carry out than the NVD does, which lowers its score.

A release under pressure

The flaws were reported to PHP from August 2026, by Calif, Wiz Research, and OpenAI, independently of each other. The PHP Foundation says a core developer had seen first signs of the same root cause in 2024, when exploitation was not yet proven. The release was planned for October 22; the last day before it went differently.

October 20 and 21, 2026 (UTC)
1234
  1. 1The two CVE numbers circulate on forums and social media, with a wrong score and release time
  2. 2PHP publishes its pre-announcement early and moves the release forward by one day+0 days
  3. 3A container vendor publishes images with the fix more than six hours early, breaking the embargo+1 day
  4. 4The fixed releases 8.5.12, 8.4.27, 8.3.36, and 8.2.35 come out at 14:00+1 day

On the evening of October 20, one of the finders also published a video of the attack by mistake; it was deleted but copied widely. The finders’ joint page php2shell.com shows the demonstrations on WordPress, Drupal, and Joomla.

On October 23, 2026, no attacks in the wild were known, and the US agency CISA rated exploitation as “none”. The finders have published how the attack works, so the update should not wait.

Found with AI, flooded by AI

PHP2Shell also shows how AI is changing the search for vulnerabilities. The PHP Foundation brought PHP into Patch the Planet, a program by OpenAI in which security firms help open-source projects find and fix flaws; as part of it, Calif began auditing PHP on July 30, 2026. Wiz says it found its first bug with its own tool, Wiz Atlas, and the AI models Gemini 4 Argon and GPT-5.6 Sol. Earlier in 2026, the PHP Foundation had already had PHP scanned with Anthropic’s model Claude Mythos, together with the Alpha-Omega project.

The other side: the PHP security team now receives far more reports than before. Since July 1, 2026, it has published 15 CVEs and worked through more than 100 reports that turned out to be invalid, duplicates, or not reproducible. AI helps the team sort the reports, the PHP Foundation says, but a person makes every decision and works on every patch.

Reports to the PHP security team since July 1, 2026
Published as CVEs15
Invalid, duplicates or not reproducible (more than)100

Source: PHP Foundation, October 21, 2026.

If you cannot update today

The PHP project and the finders name settings that make an attack harder until the update is installed. They warn that these settings do not cover every variant of the attack.

  1. Switch off upload progress tracking: set session.upload_progress.enabled to off.
  2. Lower the request limits: reduce post_max_size and max_input_nesting_level to what your site needs.
  3. Hide error details: set display_errors to off; on PHP 8.5, also switch off fatal_error_backtraces.
  4. Restart workers more often: a lower pm.max_requests in PHP-FPM shortens how long leftover data can survive.

Some advisories also suggest setting memory_limit to -1, which removes the out-of-memory trigger. Without a memory limit, a single request can use up all of the server’s memory, so only do this together with a limit at the operating-system level, and update as soon as you can.

Sources

  1. PHP project: security releases of October 21, 2026 php.net
  2. PHP Foundation: today's PHP security release thephp.foundation
  3. Calif: PHP2Shell research and timeline calif.io
  4. Wiz Research: PHP2Shell wiz.io
  5. The finders' joint page, with demonstration videos php2shell.com
  6. PHP security advisory for CVE-2026-109618 github.com
  7. PHP security advisory for CVE-2026-109619 github.com
  8. NVD: CVE-2026-109618 nvd.nist.gov
  9. CVE record CVE-2026-109619, with CISA's assessment cve.org
  10. W3Techs: usage statistics of PHP w3techs.com
  11. OpenAI: Patch the Planet, the program under which Calif audited PHP openai.com