/cards/ once it crosses the publish bar. Status: superseded.PHP2Shell chained with Fragnesia kernel LPE to root 25 firewalls and pivot into an AD network
A suspected China-nexus actor chained the patched PHP2Shell RCEs (CVE-2026-109618/109619) against firewall appweb management servers with the Fragnesia kernel LPE (CVE-2026-46300) to root 25 appliances and tunnel into a US gov-affiliated AD environment. Patch PHP and kernels, lock down internet-exposed firewall management interfaces, and hunt for web shells, outbound SSH from appliances, and AD spraying.
Triage: Unauthenticated RCE on internet-exposed firewall management interfaces is actively exploited to root and pivot into AD environments.
Core PHP2Shell exploitation and KEV listing are vendor/CERT confirmed [S4]; the firewall-rooting campaign is from a single secondary report of one vendor's findings [S1], and credential-theft/account-creation success is unconfirmed.
Changed since version 0
- poc_repo 2026-10-29: Public repo for CVE-2026-109618: ikow/php2shell-poc — CVE-2026-109618/109619 — 5 RCE chains + detection rules (Suricata, Sigma, ModSecurity). PHP session.upload
What happened
- PHP patched two unauthenticated RCEs tracked as PHP2Shell (CVE-2026-109618/109619) on Oct 21; CISA added them to KEV Oct 27 with exploitation beginning before patches shipped [S4].
- A separate unpatched RCE, CVE-2026-115560, has only a mitigation (session.upload_progress.enabled=0) and affects non-default session serialize_handler configs; no observed exploitation reported [S2][S3].
- A suspected China-nexus, AI-assisted operation (Oct 23–25) used a custom PHP2Shell exploit against PHP session.upload_progress on an undisclosed vendor's firewall appweb management server [S1].
- The actor chained the Fragnesia Linux kernel LPE (CVE-2026-46300) to root 25 devices across the US, Japan, Taiwan and South Korea [S1].
- Attackers planted PHP web shells in public directories, built a reverse SSH tunnel into a US gov-affiliated network, decrypted an LDAP service account password, enumerated AD, password-sprayed and attempted backdoor AD account creation; credential-theft and account-creation success is unconfirmed [S1].
- A public PoC repo (ikow/php2shell-poc) now hosts 5 RCE chains plus Suricata/Sigma/ModSecurity detection rules [changes].
Timeline
| 2026-10-17 | Attackers began targeting PHP2Shell flaws ~4 days before patches, per Amazon S4 |
| 2026-10-21 | PHP patched CVE-2026-109618/109619 (8.5.12/8.4.27/8.3.36/8.2.35) S4 |
| 2026-10-23 | Suspected China-nexus firewall-rooting campaign began S1 |
| 2026-10-25 | Campaign activity through this date; 25 devices rooted S1 |
| 2026-10-26 | PHP publishes mitigation for unpatched CVE-2026-115560 S2 |
| 2026-10-27 | CISA adds PHP2Shell CVEs to KEV S4 |
| 2026-10-29 | Public PoC repo with 5 RCE chains and detection rules released; campaign report published S1 |
Detect
ad_spray_from_appliance_ip_then_account_creation · windows_eventlog → windows_eventlog · proposer hunt, speculative
index=<windows_eventlog> (EventCode=4625 OR EventCode=4720) | eval stage=if(EventCode==4625,"spray","create") | bin _time span=1h as hour | stats dc(eval(if(stage=="spray",TargetUserName,null()))) as sprayed_users count(eval(stage=="spray")) as failures values(eval(if(stage=="spray",src_ip,null()))) as spray_sources min(eval(if(stage=="spray",_time,null()))) as first_fail values(eval(if(stage=="create",TargetUserName,null()))) as created_accounts min(eval(if(stage=="create",_time,null()))) as first_create by Computer | where sprayed_users>=20 AND isnotnull(first_create) AND first_create>first_fail AND first_create-first_fail<86400 | sort - first_create
FROM <windows_eventlog> | WHERE event.code IN ("4625", "4720") | EVAL stage = CASE(event.code == "4625", "spray", "create"), fail_user = CASE(stage == "spray", user.name, NULL), fail_ts = CASE(stage == "spray", @timestamp, NULL), create_ts = CASE(stage == "create", @timestamp, NULL) | STATS sprayed_users = COUNT_DISTINCT(fail_user), failures = COUNT(*) WHERE stage == "spray", spray_sources = VALUES(source.ip) WHERE stage == "spray", first_fail = MIN(fail_ts), created_accounts = VALUES(user.target.name) WHERE stage == "create", first_create = MIN(create_ts) BY host.name | WHERE sprayed_users >= 20 AND first_create IS NOT NULL AND first_create > first_fail AND DATE_DIFF("seconds", first_fail, first_create) < 86400 | SORT first_create DESCA hit means: A failed-logon burst against many users from a firewall/management IP followed by a new account on the same DC matches the actor's tunnelled spray and backdoor-account attempt; confirm the spray source is an appliance pivot IP before escalating. · Noise: Vulnerability scanners, misconfigured service accounts and help-desk provisioning produce both failed-logon bursts and routine 4720 events on busy DCs; restrict spray_sources to firewall/management appliance IPs (the story's pivot point), exclude known scanner IPs, and exclude 4720 events whose SubjectUserName is an approved provisioning/IAM service account.
Verify
- Confirm spray_sources are firewall or management-appliance IPs that should never authenticate to a DC; appliance-originated AD auth is the strong signal.
- Correlate any created account against change tickets and help-desk provisioning; legitimate 4720 on busy DCs is common.
- Check firewall web roots for new PHP files with recent timestamps and outbound SSH from appliances in the same window to tie the chain together.
- Benign look-alikes: vulnerability scanners and misconfigured service accounts produce 4625 bursts; routine provisioning produces 4720.
Scope
Affected
- Undisclosed large vendor's firewall OS using PHP 8.0.30 and newer branches
- PHP deployments on CVE-2026-109618/109619 (pre-patch)
- Linux systems vulnerable to Fragnesia CVE-2026-46300
Only if
- Firewall management interface exposed to the internet, or internally reachable via an already-compromised device
- PHP session.upload_progress reachable on the appweb management server
Not affected if
None stated by the sources.
Fixed in: PHP 8.5.12 / 8.4.27 / 8.3.36 / 8.2.35 for PHP2Shell; no fix for EOL ≤8.1; CVE-2026-115560 unpatched (mitigation only)
Enumerate
- Firewall appliances running affected PHP branches and their management-interface exposure
- PHP versions across the estate and any EOL ≤8.1 installs
- Linux kernel versions vulnerable to CVE-2026-46300
- PHP apps using non-default session serialize_handler php_binary/php_serialize with upload progress enabled (CVE-2026-115560)
- AD service accounts (esp. LDAP) and recently created accounts
Contain
- Restrict or remove internet exposure of firewall management interfaces; preserve appliance logs and memory before changes.
- Block outbound SSH from firewall/appliance networks except known-good destinations.
- Rotate the LDAP service account and any credentials reachable from a compromised appliance (rotation cannot be undone; capture evidence first).
- Disable session.upload_progress on exposed PHP where feasible and apply the CVE-2026-115560 mitigation (session.upload_progress.enabled=0).
Eradicate
- Remove planted PHP web shells from firewall/appliance web roots and any public directories.
- Remove reverse SSH tunnels and attacker infrastructure persistence on appliances.
- Delete any backdoor AD accounts created by the actor and reverse unauthorized changes.
- Patch PHP to fixed versions and the Linux kernel against Fragnesia CVE-2026-46300.
Recover
- Validate appliance integrity (rebuild rooted firewalls rather than clean in place where possible).
- Confirm PHP and kernel are patched and management interfaces are no longer exposed before returning devices to service.
- Monitor for renewed AD spraying, appliance-originated authentication, and new outbound SSH after recovery.
Re-enter the loop when
- A new firewall vendor or product is named as affected [S1].
- CVE-2026-115560 receives a patch or observed exploitation is reported [S2][S3].
- Evidence confirms successful credential theft or backdoor AD account creation [S1].
- New IoCs or exploit chains emerge from the public PoC repo [changes].
Debrief
- Record which appliances were rooted, web shell locations, tunnel endpoints, and the LDAP account rotation.
- Document AD spray scope and whether any account creation succeeded.
- Gaps: the firewall vendor is undisclosed, success of credential theft/account creation is unconfirmed, and the campaign rests on a single secondary report [S1].
Detection coverage — checked automatically
| Category | Source | Status |
|---|---|---|
| Vendor | Impacted vendor / CERT advisory | nothing found — no vendor or CERT page among the thread sources; secondary reporting only |
| Government | CISA KEV · CVE-2026-109618 | published — listed 2026-10-26, federal due 2026-10-29 |
| Government | CISA KEV · CVE-2026-109619 | published — listed 2026-10-26, federal due 2026-10-29 |
| Government | CISA KEV · CVE-2026-115560 | nothing found — not in the catalog |
| Reference | NVD · CVE-2026-109618 | published — published 2026-10-21, CVSS 4.0 9.2 |
| Reference | NVD · CVE-2026-109619 | published — published 2026-10-21, CVSS 4.0 9.2 |
| Reference | NVD · CVE-2026-115560 | nothing found — no record yet |
| VM scanners | Qualys · CVE-2026-109618 | nothing found — no ThreatPROTECT or Security Blog post names it (one feed failed); the QID knowledge base needs a login |
| VM scanners | Qualys · CVE-2026-109619 | nothing found — no ThreatPROTECT or Security Blog post names it (one feed failed); the QID knowledge base needs a login |
| VM scanners | Qualys · CVE-2026-115560 | nothing found — no ThreatPROTECT or Security Blog post names it (one feed failed); the QID knowledge base needs a login |
| VM scanners | Rapid7 · CVE-2026-109618 | published — InsightVM coverage stated |
| VM scanners | Rapid7 · CVE-2026-109619 | published — InsightVM coverage stated |
| VM scanners | Rapid7 · CVE-2026-115560 | nothing found — no vulnerability-database entry |
| VM scanners | Tenable · CVE-2026-109618 | published — 40+ plugins: 115719 PHP 8.5.x < 8.5.12 Multiple Vulnerabilities; 115722 PHP < 8.2.35 Multiple Vulnerabilities; 115720 PHP 8.4.x < 8.4.27 Multiple Vulnerabilities; 115721 PHP 8.3.x < 8.3.36 Multiple Vulnerabilities; … |
| VM scanners | Tenable · CVE-2026-109619 | published — 40+ plugins: 115719 PHP 8.5.x < 8.5.12 Multiple Vulnerabilities; 115722 PHP < 8.2.35 Multiple Vulnerabilities; 115720 PHP 8.4.x < 8.4.27 Multiple Vulnerabilities; 115721 PHP 8.3.x < 8.3.36 Multiple Vulnerabilities; … |
| VM scanners | Tenable · CVE-2026-115560 | nothing found — no plugin names the CVE yet |
| EDR / endpoint VM | CrowdStrike blog | published — Obstacles to Weaponizing PHP2Shell Likely Constrain Immediate Widespread Exploitation · CrowdStrike Protects Customers from Threats Delivered via PHP2Shell (names PHP2Shell in the title; the feed text carries no CVE id) |
| EDR / endpoint VM | Microsoft Security blog | nothing found — no post names it among the feed's 10 newest items |
| EDR / endpoint VM | SentinelOne blog | published — Stopping PHP2SHELL: How SentinelOne Protects Customers From This Attack Technique · The Good, the Bad and the Ugly in Cybersecurity - Week 43 (2026) |
| EDR / endpoint VM | SentinelOne Labs | nothing found — no post names it among the feed's 10 newest items |
| WAF / edge | Akamai blog | published — Understanding PHP2Shell: Everything You Need to Know (names PHP2Shell in the title; the feed text carries no CVE id) |
| WAF / edge | Cloudflare WAF managed-ruleset changelog | published — WAF - WAF Release - 2026-10-22 - Emergency - Cloudflare Managed Ruleset · WAF - WAF Release - 2026-10-22 - Emergency - Cloudflare Free Ruleset |
| Cloud / container | Wiz blog | published — PHP2Shell: Exploitation Attempts and Remediation Trends · PHP2Shell: AI uncovers critical RCE vulnerabilities affecting 70% of the Internet (names PHP2Shell in the title; the feed text carries no CVE id) |
| Linux distro errata | Debian tracker · CVE-2026-109618 | published — tracker entry with fixed versions |
| Linux distro errata | Debian tracker · CVE-2026-109619 | published — tracker entry with fixed versions |
| Linux distro errata | Debian tracker · CVE-2026-115560 | nothing found — no tracker entry |
| Linux distro errata | Red Hat · CVE-2026-109618 | published — Important; errata RHSA-2026:87070, RHSA-2026:87071, RHSA-2026:88561, RHSA-2026:87073, RHSA-2026:87080, RHSA-2026:88565 |
| Linux distro errata | Red Hat · CVE-2026-109619 | published — Important; errata RHSA-2026:87070, RHSA-2026:87071, RHSA-2026:88561, RHSA-2026:88693, RHSA-2026:87073, RHSA-2026:87080 |
| Linux distro errata | Red Hat · CVE-2026-115560 | nothing found — no Red Hat entry |
| IDS / research | Cisco Talos blog | published — Two critical RCEs in PHP core |
| IDS / research | Emerging Threats open · CVE-2026-109618 | published — 7 Suricata rules: sid 2072549, 2072550, 2072551, 2072552, 2072553, 2072556, 2072557 |
| IDS / research | Emerging Threats open · CVE-2026-109619 | published — 2 Suricata rules: sid 2072548, 2072554 |
| IDS / research | Emerging Threats open · CVE-2026-115560 | nothing found — no open rule names it (exploit, web_server, web_specific_apps sets) |
| Detection content | Elastic detection rules | published — 1 file name it: rules/cross-platform/initial_access_potential_php2shell_exploitation_attempt.toml |
| Detection content | Elastic Security Labs | published — php2shell: Assessing Elastic detection coverage relevant to CVE-2026-109618 and CVE-2026-109619 |
| Detection content | SigmaHQ rules | nothing found — no rule file names it |
| Detection content | Splunk ESCU | published — 13 files name it: stories/php2shell.yml, detections/network/cisco_secure_firewall___php2shell_exploitation_attempt.yml, detections/network/cisco_secure_firewall___php2shell_serialized_payload_activity.yml, detections/web/php_opening_tag_in_upload_filename___suricata.yml |
| Community | Nuclei template · CVE-2026-109618 | published — template in nuclei-templates (main) |
| Community | Nuclei template · CVE-2026-109619 | nothing found — no template under http/cves |
| Community | Nuclei template · CVE-2026-115560 | nothing found — no template under http/cves |
| MSSP / IR firms | Arctic Wolf blog | published — PHP2Shell Is a Wake-Up Call for Every Business Leader · PHP2Shell: Critical PHP Vulnerabilities Enable Unauthenticated Remote Code Execution · Arctic Wolf Labs: Finding, Prioritizing, and Patching PHP2Shell Exposure |
| MSSP / IR firms | Huntress blog | published — Rapid Response: php2shell, Leaked Critical PHP Vulnerabilities (CVE-2026-109618 & CVE-2026-109619) |
| MSSP / IR firms | Rapid7 blog | published — CVE-2026-109618 and CVE-2026-109619: Critical Unauthenticated Remote Code Execution in PHP |
| MSSP / IR firms | Sophos threat research | published — Proof-of-concept exploit released for PHP vulnerabilities (CVE-2026-109618, CVE-2026-109619) |
| Research | Unit 42 | published — Threat Brief: Critical Vulnerabilities in PHP: CVE-2026-109618, CVE-2026-109619 (Updated October 25) |
Checked automatically 2026-10-29 12:55Z from public sources: 29 published, 16 nothing found, 0 not machine-checkable, 0 failed. "Nothing found" means the public source answered and had nothing, as of that moment; a feed covers only its newest posts. Re-checked daily.
What a person would still look up (4)
| WAF / ModSecurity | Whether PHP2Shell session.upload_progress exploitation signatures are deployed (PoC repo ships ModSecurity rules). |
| IDS/IPS (Suricata) | Whether PHP2Shell and reverse-SSH-tunnel signatures are present. |
| EDR / SIEM (Sigma) | Whether web shell and AD spray detections cover the described behaviors. |
| File integrity monitoring | Whether firewall/appliance web roots are monitored for new PHP files. |
Exposure queries — generated automatically
shodan · cve · CVE-2026-109618
vuln:CVE-2026-109618
open · Shodan tags a service with a CVE from its banner version; a paid-tier filter. Exact for this CVE, blind to a host Shodan has not fingerprinted.
shodan · cve · CVE-2026-109619
vuln:CVE-2026-109619
open · Shodan tags a service with a CVE from its banner version; a paid-tier filter. Exact for this CVE, blind to a host Shodan has not fingerprinted.
shodan · cve · CVE-2026-115560
vuln:CVE-2026-115560
open · Shodan tags a service with a CVE from its banner version; a paid-tier filter. Exact for this CVE, blind to a host Shodan has not fingerprinted.
shodan · cpe · php:php
cpe:"cpe:/a:php:php"
open · Every Php service Shodan fingerprinted, any version (CPE 2.2 form of cpe:2.3:a:php:php). Affected per NVD: >= 7.3.0 < 8.2.35; >= 8.3.0 < 8.3.36; >= 8.4.0 < 8.4.27; >= 8.5.0 < 8.5.12.
shodan · product · php:php
product:"Php"
open · Banner product name, NVD's spelling; adjust if Shodan's differs. Affected per NVD: >= 7.3.0 < 8.2.35; >= 8.3.0 < 8.3.36; >= 8.4.0 < 8.4.27; >= 8.5.0 < 8.5.12.
censys · product · php:php
host.services: (software.product = "Php")
Censys Platform host search, software as fingerprinted at layer 7. Affected per NVD: >= 7.3.0 < 8.2.35; >= 8.3.0 < 8.3.36; >= 8.4.0 < 8.4.27; >= 8.5.0 < 8.5.12.
shodan · cpe · paloaltonetworks:panorama_virtual_appliance
cpe:"cpe:/a:paloaltonetworks:panorama_virtual_appliance"
open · Every Panorama Virtual Appliance service Shodan fingerprinted, any version (CPE 2.2 form of cpe:2.3:a:paloaltonetworks:panorama_virtual_appliance). Affected per NVD: all versions.
shodan · product · paloaltonetworks:panorama_virtual_appliance
product:"Panorama Virtual Appliance"
open · Banner product name, NVD's spelling; adjust if Shodan's differs. Affected per NVD: all versions.
censys · product · paloaltonetworks:panorama_virtual_appliance
host.services: (software.product = "Panorama Virtual Appliance")
Censys Platform host search, software as fingerprinted at layer 7. Affected per NVD: all versions.
NVD names 2 more affected products (libraries and embedders); the CVE query covers them where Shodan has fingerprinted the version.
Scope every query in your own tool, never in a shared document: Shodan `net:<your_ranges>`, `org:"<your_org>"` or `hostname:<your_domain>` (or a Shodan Monitor network alert, which applies the scope for you); Censys `host.ip: <your_ranges>` or `host.dns.names: <your_domain>`. Then compare the banner version with the affected range. Generated automatically 2026-10-29 12:55Z from the CVE ids and NVD's CPE configurations; re-built daily with the coverage check.
Open questions
- Which firewall vendor and product are affected? [S1]
- Did credential theft and backdoor AD account creation succeed? [S1]
- Does CVE-2026-115560 overlap with the session.upload_progress vector used in this campaign? [S1][S2]
Sources
- [S1] https://thehackernews.com/2026/10/php2shell-attack-roots-25-servers.html · The Hacker News
- [S2] https://www.bleepingcomputer.com/news/security/php-shares-mitigation-for-new-and-unpatched-rce-vulnerability/ · BleepingComputer
- [S3] https://thehackernews.com/2026/10/urgent-php-warns-of-another-unpatched.html · The Hacker News
- [S4] https://www.bleepingcomputer.com/news/security/cisa-confirms-php2shell-vulnerabilities-now-exploited-in-attacks/ · BleepingComputer
Public OSINT only. AI-generated by the pipeline; structure follows the DAIR model from Dynamic Incident Response (Joshua Wright). Published automatically once it crosses the publish bar.