Not php.net · Not NVD · Not CISA

PHP Vulnerability Tracker

Unofficial briefing on PHP security vulnerabilities

English简体中文日本語DeutschFrançaisNederlandsEspañol

Security alert

PHP2Shell: upgrade PHP. That is the only complete fix.

CVE-2026-109618 and CVE-2026-109619 are critical, unauthenticated remote-code-execution bugs in PHP itself. The PHP project shipped fixes on 21 October 2026 for the supported 8.2–8.5 branches. Restart PHP after you upgrade. A firewall is not a substitute.

Remediation steps

AI agent guide

Is my product or site affected? Check with an AI agent

Many sites do not run “PHP” directly: it arrives inside XAMPP, a hosting panel, a NAS, a Docker image or a vendor appliance. These read-only prompts make an AI agent find every PHP runtime, compare it with the fixed releases and produce a verdict table, without changing anything.

Last updated

What the prompts make the agent do

  1. Inventory system PHP, bundled stacks (XAMPP, MAMP, Laragon), hosting panels, containers, NAS and appliances.
  2. Record version, install source and exposure for each.
  3. Map vendor-managed items to the affected-products pages.
  4. Output a verdict table: Fixed / Vulnerable / Unknown / Vendor-managed.

Use an agent safely

Copy-paste prompts

Prompts are in English so every agent follows them reliably; the last line asks the agent to report in your language. Facts come from this site’s pages.

Read-only inventory of every PHP runtime on a machine
Audit this machine for PHP2Shell exposure. This is a READ-ONLY audit.

Context: PHP2Shell is CVE-2026-109618 and CVE-2026-109619, two critical unauthenticated remote-code-execution bugs in the PHP runtime (advisory published 21 October 2026). Fixed upstream releases: PHP 8.2.35, 8.3.36, 8.4.27, 8.5.12 (or later on the same branch). PHP 8.1 and earlier get no upstream fix. Linux distributions may ship backported fixes under an older version string, so check the distro's security tracker / package changelog for CVE-2026-109618 and CVE-2026-109619, not only "php -v".

Rules for you (the agent):
- Read-only: do not install, upgrade, delete, restart or change any file or service. Do not use sudo unless I approve a specific read-only command.
- Do not write, download or run exploit code, and do not probe other hosts.
- Do not print secrets you see; redact them.
- Show each command before you run it.

Find every PHP runtime, including bundled ones:
1. System PHP: php -v, php-fpm*, mod_php, every binary named php* on PATH and under /usr, /opt, /usr/local.
2. Bundled stacks: XAMPP (/opt/lampp, C:\xampp), MAMP (/Applications/MAMP), WampServer, Laragon, Local, Herd, Valet.
3. Hosting panels: cPanel ea-php, Plesk plesk-php, aaPanel/宝塔 /www/server/php, DirectAdmin, CyberPanel lsphp, HestiaCP.
4. Containers: docker ps / docker images / kubectl, and php -v inside each running container.
5. Apps that run on PHP (WordPress, Magento, Drupal, Joomla, Moodle, Nextcloud, phpMyAdmin, GLPI ...) and which PHP each one uses.
6. If this is a NAS or vendor appliance (Synology, QNAP, Unraid, pfSense, OPNsense, FreePBX ...), report the product and firmware version only; such PHP is updated by the vendor firmware.

For each item record: product/location, PHP version, how it is installed (distro package / vendor bundle / container / custom build), whether it is internet-facing, and whether the version is >= the fixed release on its branch or has a distro backport.

Output a verdict table with columns: Item | PHP version | Source | Exposed? | Verdict (Fixed / Vulnerable / Unknown / Vendor-managed) | Next step. Then list the matching product pages from https://phpvulnerabilities.app/affected-products/ for anything vendor-managed.

Write your report in English.
Check a specific product or vendor appliance
I run [PRODUCT NAME AND VERSION]. Tell me whether it is affected by PHP2Shell. This is research and a READ-ONLY check.

Context: PHP2Shell is CVE-2026-109618 and CVE-2026-109619, two critical unauthenticated remote-code-execution bugs in the PHP runtime (advisory published 21 October 2026). Fixed upstream releases: PHP 8.2.35, 8.3.36, 8.4.27, 8.5.12 (or later on the same branch). PHP 8.1 and earlier get no upstream fix. Linux distributions may ship backported fixes under an older version string, so check the distro's security tracker / package changelog for CVE-2026-109618 and CVE-2026-109619, not only "php -v".

Rules: do not write or run exploit code; do not change anything; never ask for or print credentials.

Steps:
1. Find out whether this product bundles its own PHP or uses the system PHP, and which PHP version the version I named ships with.
2. Look for the vendor's official advisory, changelog or knowledge-base article about CVE-2026-109618 / CVE-2026-109619, and the matching page under https://phpvulnerabilities.app/affected-products/. Cite each source with its URL and date; if you find none, say so instead of guessing.
3. If I can give you shell access, list the read-only commands that would confirm the runtime version, and wait for me to run them or approve them.

Output a verdict table: Product | Version | Bundled PHP | Vendor status | Verdict (Fixed / Vulnerable / Unknown) | Fix path (vendor update, upgrade host PHP, or mitigate) | Sources.

Write your report in English.
Fleet or repository audit (many servers, IaC, CI)
Audit this repository (and any inventory files it contains) for PHP2Shell exposure. READ-ONLY: do not edit files, open pull requests or connect to servers unless I approve.

Context: PHP2Shell is CVE-2026-109618 and CVE-2026-109619, two critical unauthenticated remote-code-execution bugs in the PHP runtime (advisory published 21 October 2026). Fixed upstream releases: PHP 8.2.35, 8.3.36, 8.4.27, 8.5.12 (or later on the same branch). PHP 8.1 and earlier get no upstream fix. Linux distributions may ship backported fixes under an older version string, so check the distro's security tracker / package changelog for CVE-2026-109618 and CVE-2026-109619, not only "php -v".

Rules: no exploit code, no scanning of hosts, redact secrets.

1. Search Dockerfiles, compose files, Helm charts, Terraform/Ansible/Puppet/Chef code, CI workflows, .tool-versions, composer.json "config.platform.php" and "require.php" for PHP versions and base images.
2. List every place a PHP version or image is pinned, and resolve tags like php:8.3-fpm to the patch level they currently point to if you can.
3. Mark each as Fixed / Vulnerable / Unknown against 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12 (or a distro backport), and flag PHP 8.1 or older.

Output a verdict table: File | Line | Image or package | PHP version | Verdict | Suggested change. Do not apply the changes; list them for my review.

Write your report in English.

Common AI coding agents

Not ranked. This site is not affiliated with any of them.

OpenAI Codex CLIRun codex in the project or on the server, paste the prompt; keep it in an approval mode that asks before running commands.
Claude CodeRun claude in a terminal, paste the prompt; it asks for permission before running commands unless you change that.
Cursor (Agent)Open the repo or a Remote-SSH session, paste into the Agent chat and review each terminal command before it runs.
Cursor Cloud AgentsSuited to the Docker/repository prompts: the agent works on a branch and you review the diff; it cannot reach your servers.
Grok Build (xAI CLI)xAI's terminal coding agent; start it in the project or on the server and paste the prompt. Without shell access, paste into the Grok chat at grok.com and run the suggested read-only commands yourself.
GitHub Copilot coding agentAssign an issue containing the Docker/repository prompt to Copilot; it opens a pull request for review.
Gemini CLIRun gemini in a terminal and paste the prompt; confirm each shell command it proposes.
Windsurf (Cascade)Paste into Cascade in the editor; the windsurf.com address currently redirects to Devin Desktop.
ClineVS Code extension; paste into the Cline panel and approve each command and file edit.
AiderBest for the Docker/repository prompts: run aider in the repo, paste the prompt and review the commits it makes.

FAQ

How do I know if my site is affected by PHP2Shell?

Find the PHP version that serves the site (not only php -v) and compare it with 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12 or your distro’s backported package. The inventory prompt makes an agent do this for every runtime.

Does the audit change anything?

No. The prompts tell the agent to stay read-only and to ask before any command that needs sudo.

My PHP is inside a NAS, panel or appliance. What then?

That PHP is updated by the vendor. Check the product’s page in the affected-products list and install the vendor update.