Active threat PHP2Shell (CVE-2026-109618, CVE-2026-109619): exploit attempts observed in the wild. Read the advisory →
Technical advisory · Not technical? Plain-English version →
Critical Security advisory Updated 23 Oct 2026

PHP2Shell lets one request take over a PHP server. Attackers are already trying it.

Two critical flaws in PHP itself, exploitable without logging in and before your application code runs. We find every exposed PHP runtime you have, patch it, including the versions PHP no longer ships fixes for, and prove it worked.

  • Free
  • Read-only
  • No sales call needed
  • Fixed-price fix
Advisory summaryPHP2Shell
CVSS v4.09.2 / 10 · Critical
CVE IDs
CVE-2026-109618
CVE-2026-109619
Impact
Remote code execution, memory disclosure
Attack
Remote, unauthenticated, before app code runs
Affected
PHP-FPM, Apache mod_php, php-cgi, FrankenPHP, LiteSpeed
Fixed in
8.5.12 · 8.4.27 · 8.3.36 · 8.2.35
8.1, 8.0, 7.4
Source backports only, no release
Exploitation
Attempts observed in the wild
Patch released
21 Oct 2026 ·

Technical details

This isn't a plugin bug. It's in the PHP engine.

Secure application code doesn't protect you, because both flaws trigger before your app loads. Apache with mod_php is the highest-risk setup.

CVE-2026-1096189.2 Critical

Out-of-memory corruption

An out-of-memory error mid-request leaves request data half set up. PHP's cleanup then treats that broken data as valid, which opens a path to remote code execution.

CVE-2026-1096199.2 Critical

Stale state between requests

Request data outlives the memory it points to, and the next request on the same worker uses it. Researchers showed code execution and leaks of live memory, including passwords, tokens and API keys.

Why "we updated" often isn't true

The four gaps we look for first.

  1. 01Updating your app or CMS doesn't update PHP. The runtime is a separate upgrade.
  2. 02New packages do nothing until Apache, PHP-FPM and long-running workers restart.
  3. 03Linux distribution builds patch without changing the version number, so the version string can't tell you.
  4. 04PHP 8.1, 8.0 and 7.4 got source backports, not releases. Older versions got nothing.

Exposure check

Which PHP branch do you run?

Select your branch to see where you stand.

Your result will appear here.

Scope

Much of the web can't just click "update."

~37%

of PHP sites still run version 7 or older. PHP shipped no PHP2Shell release for any of them.

W3Techs, Aug 2026 (PHP 8 at 62.5%)
31%

of PHP 8 sites run 8.2. They can patch now, then lose security fixes on 31 December, in a few weeks.

W3Techs, Jun 2026 · php.net
1 month

is what PCI DSS allows to install critical patches after release. The PHP2Shell fixes shipped 21 October.

PCI DSS v4.0.1, req. 6.3.3

Who we help

Teams with no one on call for PHP.

Ecommerce

Magento 2, Adobe Commerce and WooCommerce stores

Your developer has moved on, you're in scope for PCI DSS, and checkout runs on PHP no one has checked in a year. Adobe patches Magento, not the PHP underneath it.

SaaS

Laravel, Symfony and custom PHP apps

Your engineers are shipping features, and customers are already asking whether you're affected. You need the fix and the evidence for your SOC 2 auditor.

Agencies

Dozens of client sites to patch this week

We work through your client list under your name, and hand you a status report per site. Talk white-label →

Free exposure check

What you get back

A ranked report of what's exposed, PHP2Shell first, with the fix for each item. It's yours to keep whether or not you hire us.

  • What PHP is actually running, not just what's installed
  • PHP2Shell status per server and worker pool
  • Interim hardening you can apply today
  • A remediation plan with a fixed price
exposure-report · yourstore.comSample report, for illustration
SeverityComponentFindingFix
Criticalphp 8.1 · mod_phpPHP2Shell, both CVEs. No official release for 8.1.Move to 8.4.27+, or a patched LTS build as a bridge
Highphp-fpm poolsPackage updated, workers never restartedRestart pools, verify the running binary
Highphp.iniSession upload progress enabledDisable at server level as interim hardening
Mediummagento 2.4.6Standard support ended 11 Aug 2026Move to a supported release line
Mediumcomposer.lockPackages with published advisoriesUpdate or replace, test on staging

How we work

Scan, harden, patch, prove.

  1. 01

    Scan

    We find every PHP runtime you have, check what's actually running in each worker pool, and rank everything else in the stack behind PHP2Shell.

  2. 02

    Harden

    Where a patch can't land today, we apply PHP's recommended interim measures at the server level to reduce exposure while the fix is prepared.

  3. 03

    Patch

    Fixed PHP on supported branches. For 8.1 and older: a patched build, a vendor LTS package, or an upgrade. Tested on staging, shipped with a rollback plan.

  4. 04

    Prove

    Before-and-after evidence for every server, and a CVE-by-CVE log for your assessor, auditor or customers.

Runtime patches buy time. We close the findings.

Long-term-support PHP builds are a good bridge, and we'll recommend one when an upgrade has to wait. They patch the runtime. Rolling them out, restarting every worker and fixing the rest of the stack is still on you.

ComparisonLTS runtime subscriptionInfraredtiming
What gets patchedThe PHP runtimeRuntime, config, framework, packages
Who does the workYour team rolls it outWe do, on staging first
Proof it workedVendor documentationRunning-process check on every server
How you payAnnual subscriptionFixed price per engagement

Services

Check free. Pay only for the fix.

Exposure Check
Free

A read-only check of your servers, with a ranked report and a fix plan you keep.

  • PHP2Shell status per server
  • Interim hardening steps
  • Fixed quote for the fix
Request free check
RemediationMost teams start here
Quoted after your free check

Fixed price per application, agreed before we start. PHP2Shell closed, with proof.

  • Patched PHP on every server
  • 8.1 and older: patched build or upgrade
  • Workers restarted and verified
  • Evidence pack for auditors and customers
Start with a free check
Coverage
Ask us for a quote

So the next PHP2Shell isn't a fire drill.

  • New PHP and package advisories tracked
  • Critical fixes inside PCI's one-month window
  • Quarterly evidence refresh
Ask about coverage

FAQ

Common questions

Our host says we're updated. Are we?

Maybe. Distribution builds can carry the fix without changing the version number, and workers that weren't restarted still run the old code. The free check looks at what's actually running.

We're behind Cloudflare. Aren't we covered?

It helps. Cloudflare shipped rules for the known attack paths, and also reported attackers changing payloads to get around them. Patching PHP is the only complete fix.

We're on PHP 8.1 or older. What now?

PHP published minimal source backports for 7.4, 8.0 and 8.1, not releases you can install. You need a patched build, a vendor LTS package, or an upgrade. We do whichever fits, and harden the server while it's prepared.

Will patching break our store or app?

We test on staging first, including checkout, login and admin, and ship with a rollback plan. The fix adds a hard memory limit, so we review your memory settings before go-live. Nothing reaches production without your sign-off.

Why not have our own developer do it?

You can. The free check's report is yours to keep, steps included. Hire us when your team doesn't have the time, or the servers are older than anyone remembers.

Does this make us PCI or SOC 2 compliant?

No vendor can promise that. Your assessor or auditor decides. We close the vulnerabilities and give them the evidence they ask for.

Patch released 2 days ago

Find out if you're exposed.

Tell us where to look. We'll send back your PHP2Shell status and a fixed-price plan by email.

Or email hello@infraredtiming.com

  • Read-only
  • No passwords
  • Report is yours to keep

We use these details only to reply to you. Privacy notice