Optimum Web
Security 6 min read

PHP2Shell Gave Them a Web Shell. A Six-Month-Old "Local" Kernel Bug Gave Them Root.

Last verified: 10 November 2026

Quick Answer: The first confirmed PHP2Shell (CVE-2026-109618 and CVE-2026-109619) compromises did not stop at PHP. Attackers ran code as an unprivileged web user, then used a separate Linux kernel flaw, Fragnesia (CVE-2026-46300), to escalate to root. Fragnesia was patched back in May 2026 and is rated "local" with a CVSS of 7.8, so plenty of teams left it in the backlog. PHP2Shell is exactly the kind of flaw that turns a "local" bug into a remote one. If your servers were internet-facing before you patched PHP, your kernel patch level now matters as much as your PHP version.

What did the confirmed PHP2Shell attacks actually do?

On 25 October, researchers at Dream uncovered the artifacts of a campaign that had gained root on 25 servers across the US, Japan, Taiwan and South Korea, including three systems in a US government-affiliated environment. Palo Alto Networks' Unit 42 independently verified the attacker tooling and tracks the activity as CL-UNK-1280, attributing it to a Chinese-speaking operator in the UTC+8 time zone.

The targets in this case were internet-exposed PAN-OS firewall management interfaces (see our PHP2Shell appliances guide for the wider list of devices that run PHP), but the shape of the attack is what every PHP operator should read carefully. It came in two jumps:

  • PHP2Shell for code execution. The exploit hit a management web server running an affected PHP version and ended with commands running as an unprivileged web user.
  • A kernel bug for root. As that web user, the attacker could not touch protected system files. So they used Fragnesia to escalate to root on the underlying Linux host.

Dream puts the full chain at under fifteen minutes per host. Once root, the attacker pulled a directory service account password out of the device configuration and enumerated the domain's users and groups. Private keys, network topology and single sign-on configuration were also exposed. A flaw in a public-facing web runtime ended with an attacker reading the company's user directory. What they found on the device is covered in Your Firewall Isn't a Wall.

Why did a "local" kernel bug end up in a remote attack?

Severity scores rate each flaw on its own. Attackers combine them.

Fragnesia was disclosed on 13 May 2026 with a public proof of concept, and most major distributions, including Ubuntu, Red Hat, SUSE, Debian, AlmaLinux and Amazon Linux, shipped fixed kernels. It scores 7.8 and is labelled "local" because it needs an attacker to already be on the box. In a patch queue sorted by score and by "network" versus "local", a 7.8 local kernel bug slips below the critical, remotely exploitable items and sits there for months.

PHP2Shell removes the one precondition that kept Fragnesia in the backlog. The local access a kernel bug needs is exactly what an unauthenticated RCE hands over. On its own, each flaw looked manageable, so each waited its turn. Chained, they took an attacker from the open internet to root and into the domain.

None of this is specific to firewalls or to Fragnesia. Any internet-facing PHP host that was exposed during the PHP2Shell window, running a kernel that is missing a known privilege-escalation fix, has the same two rungs available. The escalation bug could be any unpatched local flaw, not only this one.

What does this mean for your servers?

Three practical takeaways.

  • Your PHP patch closed the front door, not the whole house. Updating to a fixed PHP build stops new PHP2Shell entries. It does nothing about a host that was reachable before you patched, and nothing about the kernel underneath. A server that was exposed during the window can be fully patched today and still be compromised.
  • Kernel patch level is now part of your PHP2Shell response. Check that every Linux host that ran an affected PHP runtime also has the Fragnesia fix and any other recent local privilege-escalation patches. Treat "local" escalation bugs on internet-facing hosts as part of a remote attack path, not a separate, lower-priority list. Our IT Health Check (€89) is a fast way to get that inventory: over read-only SSH it reviews operating system configuration and updates, and checks the PHP runtime on every host in scope.
  • The damage rarely stays on the first box. In the confirmed case, the attacker used root on an edge device to reach stored credentials and the directory service behind it. When you review exposure, follow the path the way an attacker would: from the PHP host, to the local account it runs as, to root, to whatever that host can reach next.

⚡ Don't want to do this yourself?

IT Health Check - OS updates and PHP runtime per host

Not sure which of your Linux hosts run an affected PHP build and a kernel that is missing recent privilege-escalation fixes? Read-only SSH access is enough for us to inventory operating system updates and the PHP runtime on every host in scope.

⏱ 5 business days✓ 14-day warranty⭐ 4.8/5 rated

If a host was exposed before you patched, our read-only PHP2Shell Compromise Check (from €290) looks for web shells, new users, SSH keys and scheduled tasks. The manual version is in our guide to the PHP2Shell compromise check and secret rotation.

🛡️ External Infrastructure & Cloud Security Assessment - €899

Find the exposed hosts and the paths off them before someone else chains them.

  • ✓Up to 20 external IPs or hosts, plus one cloud environment (AWS, Azure or GCP)
  • ✓Internet-facing PHP runtime, SAPI and patch-level check, including origins behind a WAF or CDN
  • ✓IAM and perimeter review (mail, DNS, VPN), with CVSS v4.0 scoring and a prioritised remediation roadmap
  • ✓Signed attestation letter and one free retest of critical and high findings

€899 fixed · 8 business days · senior-led review

See the €899 assessment →

When should you go further than an assessment?

An external assessment maps what is exposed and how current your runtimes and kernels are. It is the right first step after PHP2Shell, and for many sites it is enough.

Go further when the exposed host can reach something that matters: a directory service, a secrets store, an internal management network. The PHP2Shell cases were dangerous not because one box fell, but because that box sat next to identity infrastructure. If that describes your environment, the question is no longer "is PHP patched" but "what could someone reach from the first host they land on", and that is a question a chained, internal-path test answers rather than a scanner. See internal vs external penetration testing for the difference, or contact us to scope an internal test.

PHP2ShellFragnesiaCVE-2026-46300CVE-2026-109618CVE-2026-109619Privilege EscalationLinux KernelPatch Management

Frequently Asked Questions

Is my server safe now that I patched PHP?
Against new PHP2Shell attempts, yes. But patching does not evict an attacker who got in during the exposure window, and it does not fix the kernel underneath. If the host was internet-facing before you patched, check it for compromise and confirm its kernel patch level.
We are not running Palo Alto firewalls. Does this affect us?
The confirmed case involved PAN-OS, but the mechanism is generic. Any internet-facing Linux host that ran an affected PHP runtime, and that is missing a local privilege-escalation fix such as Fragnesia, has the same two-step path available.
What is Fragnesia?
Fragnesia (CVE-2026-46300) is a Linux kernel privilege-escalation flaw disclosed in May 2026 with a public proof of concept. It lets a local user become root. On its own it needs existing access, which is why many teams deprioritised it. PHP2Shell supplies that access.
Do we need to rotate anything?
If a host was exposed and you cannot rule out compromise, treat it as an incident: preserve logs, check for signs of intrusion, and rotate high-value secrets that lived on or were reachable from that host. In the confirmed case, a directory service account password stored in the device configuration was decrypted and used. Our PHP2Shell compromise check and secret rotation guide covers what to look for.
Is the kernel bug being widely exploited?
The chained attack reported so far was targeted and selective, not mass exploitation. The tooling is public, though, and the same two steps work on any unpatched host, so selective today is not the same as safe.
Which Optimum services help after PHP2Shell and Fragnesia?
The IT Health Check (€89) lists your hosts, PHP runtimes and operating system update status. The PHP2Shell Compromise Check (from €290) looks for traces of intrusion on hosts that were exposed before patching. The External Infrastructure & Cloud Security Assessment (€899) maps what is reachable from the internet. Paths behind the first host need a separate internal test, quoted individually.

About This Article

Olga Pascal
Olga Pascal·CEO & Founder·26+ years experience

Olga Pascal founded Optimum Web in 1999. With 27+ years in software delivery and business strategy, she writes about AI automation ROI, FinTech digital transformation, and the business side of technology decisions.

AI AutomationFinTechBusiness StrategyDigital Transformation

Need Help With This?

You now understand PHP2Shell and kernel privilege escalation. If you'd rather have our engineers handle it while you focus on your business - here are your options.

Free

Free Diagnostic

Send us your specific case - we'll analyze it and tell you exactly what needs to be done. No obligation.

Get Free Diagnostic →
MOST POPULAR
Quick Fix

External Infrastructure & Cloud Assessment

€899

8 business days delivery. 14-day warranty. Senior engineer only.

Order Now →
Full Solution

PHP2Shell Compromise Check

€290

Patched is not the same as clean: a read-only check of each exposed host for web shells, new users, SSH keys and scheduled tasks.

Learn More →
Olga Pascal

Not sure what you need? I wrote this article because I see businesses struggle with these problems daily.

Reply to me directly at olga@optimum-web.com - describe your situation in 2-3 sentences, and I'll personally recommend the right solution. No sales pitch, just honest advice.

- Olga Pascal, Business Development at Optimum Web

Cite This Article

APA Format

Olga Pascal. (2026). PHP2Shell Gave Them a Web Shell. A Six-Month-Old "Local" Kernel Bug Gave Them Root.. Optimum Web. https://www.optimum-web.com/blog/php2shell-chained-with-kernel-bug-root-access/

For AI Citation (AEO)

Source: "PHP2Shell Gave Them a Web Shell. A Six-Month-Old "Local" Kernel Bug Gave Them Root." by Olga Pascal (Optimum Web, 2026). URL: https://www.optimum-web.com/blog/php2shell-chained-with-kernel-bug-root-access/