Active threat: PHP2Shell exploit code is circulating, and exploitation was attempted before disclosure. Get an assessment →

PHP2Shell · CVSS 9.2 · Unauthenticated RCE

Your PHP sites can be taken over with one request. We'll close the hole, and keep it closed.

Every PHP installation that serves web traffic is affected by CVE-2026-109618 and CVE-2026-109619. We find every exposed system you have, upgrade or rebuild what's vulnerable, and test that it's fixed without breaking your business.

  • Fixed-scope quotes
  • No changes without your sign-off
  • Written report for your board, auditors and insurer

Free check: is your PHP vulnerable?

Enter the PHP version from php -v, your hosting panel, or your developer. You'll get an instant answer and what to do next.

Running more than one site, or not sure what versions you have? That's what our Exposure Analysis is for.

Services

From "are we exposed?" to "we're fixed, and we can prove it"

Hire us for one step or the whole job. Every engagement starts with a fixed-scope quote.

01

Exposure Analysis

For: companies that don't know how many PHP systems they have, or which ones are at risk.

  • Inventory of every PHP host: websites, APIs, admin panels, staging, forgotten installs
  • Version, SAPI and configuration review for each host
  • Check for signs the flaw has already been exploited
  • Risk-ranked report with a recommended fix for each system: patch, upgrade or rebuild

You get: a written risk report and a remediation plan with costs.

Request analysis
02

Emergency Upgrade

For: sites on PHP 8.2 or newer, or on 8.x versions that can move up safely.

  • Same-day interim mitigations to block the known attack paths
  • Upgrade to a patched release (8.2.35, 8.3.36, 8.4.27, 8.5.12) or a vendor backport
  • Compatibility fixes for your code, plugins and extensions
  • Staged rollout with a tested rollback plan, and every worker restarted

You get: patched production servers with as little downtime as possible.

Request upgrade
04

Security & Regression Testing

For: anyone who has patched, or thinks they have, and needs proof.

  • Verification that PHP2Shell is fixed on every host
  • Functional and regression testing of the upgraded application
  • Web application security testing beyond PHP2Shell
  • Compromise assessment: web shells, persistence, leaked secrets

You get: evidence you can show your customers, auditors and cyber insurer.

Request testing

How it works

Four steps, no surprises

  1. Free triage call

    30 minutes to understand your setup and how urgent it is. If there's a quick fix you can do yourself, we'll tell you.

  2. Fixed-scope proposal

    A written quote with deliverables and a timeline. You approve it before any work starts.

  3. Fix

    Mitigate first, then upgrade or rebuild. Every production change is scheduled with you and has a rollback plan.

  4. Test & report

    We check that the fix works, test that nothing broke, and give you a report you can share.

Why companies choose SavePHP

PHP specialists

We focus on PHP and nothing else. Legacy codebases, WordPress, Magento, Laravel, Symfony and custom frameworks are our day job.

Business-safe changes

Staging first, rollback ready, maintenance windows that suit you. We protect your revenue while we fix your security.

Proof, not promises

Every engagement ends with written evidence of what we changed, what we tested, and what risk is left.

Running PHP 7.x or 8.0/8.1?

There's no official patched release for you. Mitigations only buy time. Let's plan the way out.

Talk to an engineer

Free remediation guide

What happened, and how to fix it yourself

On 21 October 2026 the PHP project released emergency fixes for two memory-safety bugs in the PHP engine. If you have the in-house skills, here's what to do.

CVE-2026-109618

Out-of-memory corruption

When PHP runs out of memory, it can stop partway through setting up a request. The cleanup step then treats the half-built data as valid. An attacker can trigger this with a crafted request, such as a large multipart upload, and use it to run code.

Advisory GHSA-w8hw-w9fx-j79w ↗

CVE-2026-109619

Stale global state

PHP keeps some global state that points to memory owned by a request. If that state isn't reset before the memory is freed, the next request on the same worker can use the stale pointer. This is a use-after-free that leads to remote code execution.

Advisory GHSA-6wmf-4rv5-p3rp ↗

Affected: all web SAPIs, including PHP-FPM, Apache mod_php (highest risk), php-cgi, FrankenPHP and LiteSpeed.

1. Update to a patched release

BranchPatched versionStatus
8.58.5.12Supported
8.48.4.27Supported
8.38.3.36Security-only
8.28.2.35Security-only, end of life 31 Dec 2026
8.6 (pre-release)8.6.0RC4Earlier 8.6 test builds are vulnerable
8.1, 8.0, 7.4Source backports onlyUnsupported. Use vendor LTS packages, build from source, or rebuild.
7.3 and olderNo fixUpgrade or rebuild. Mitigate or take offline meanwhile.
sudo apt update
sudo apt install --only-upgrade 'php*'
# Restart EVERY PHP process. Old workers keep running vulnerable code.
sudo systemctl restart 'php*-fpm' apache2 2>/dev/null
# Check that the fix is in your distro's changelog
apt changelog php8.3 | grep -E 'CVE-2026-10961[89]'

Distro packages often backport the fix without changing the upstream version number. Check the changelog, not just php -v.

2. Can't patch today? Mitigate

These steps block the known attack paths only. Other variants may exist. They buy time. They don't make you safe.

; php.ini or FPM pool. Must apply before request parsing; ini_set() and .user.ini do NOT work.
session.upload_progress.enabled = 0          ; CVE-2026-109619
fatal_error_backtraces = 0                   ; PHP 8.5 only
php_admin_value[memory_limit] = -1           ; CVE-2026-109618 (pool level)
post_max_size = 8M                           ; 32M if uploads are needed
upload_max_filesize = 6M                     ; keep it below post_max_size
; Then restart EVERY worker.

Also cap request body size, field count and multipart parts at your web server or proxy. Turn on WAF rules: Cloudflare has released managed rules for the known exploit patterns, including on its free plan.

3. Check whether you were already hit

Look for new .php files in upload and cache folders, unknown cron jobs, outbound connections from PHP workers, worker segfaults, and large multipart POSTs to arbitrary URLs. If you find anything, snapshot the server before you change it, rotate every secret the web user could read, and get a compromise assessment.

Questions companies ask us

We patched PHP. Why would we still need you?

Patching is often only part of the job. Common gaps: a forgotten second server or staging site, workers that were never restarted, distro packages that don't include the backport, and attackers who got in before the patch. Our testing service checks all of these.

Our app runs on PHP 7.x. Can't you just upgrade it?

Sometimes. Older code often uses features removed in PHP 8, and plugins and extensions may need replacing. We start with a code audit so you know whether you're looking at an upgrade or a rebuild, and what it costs, before you commit.

Do you need access to our servers?

For analysis and upgrades, yes. We agree the access level with you, use named accounts you can revoke, and never ask for credentials by email or through this form. For rebuilds we can work in a copy of your repository and hand over the result.

How fast can you start?

Book a triage call. If you're actively exposed, we'll go through the interim mitigations with you on that first call.

Will the work cause downtime?

We plan every production change with you. Most upgrades are staged so the switchover takes seconds, and every change has a tested rollback.

Get a quote

Book your free triage call

Tell us a little about your setup. An engineer, not a salesperson, will reply with next steps and a fixed-scope proposal.

  • Free, no-obligation 30-minute call
  • Written quote before any work starts
  • Help with interim mitigations if you're exposed right now
What do you need?

Don't send passwords or server credentials through this form.