CUTSIGNcutting for sign — daily OSINT threat read
AI-generated draft, unreviewed. Version 2, written by a model from the stored public sources on 2026-10-29; hype score 0. It is regenerated when the evidence changes and is published as a verdict card under /cards/ once it crosses the publish bar. Status: superseded. Supersedes version 1.

PHP2Shell + Fragnesia chain rooted 25 firewalls; Fragnesia added to KEV and public PHP2Shell PoC out

Patch now + Hunt / IRP1confidence: mediumre-issue of card php2shell-2026

A suspected China-nexus actor reportedly chained the PHP2Shell RCEs (CVE-2026-109618/109619) with the Fragnesia kernel LPE (CVE-2026-46300) to root 25 firewalls and tunnel into a US gov-affiliated AD network. CISA has now added Fragnesia to KEV, and a public PoC with five RCE chains is out. Today: patch PHP and Linux kernels, take firewall management interfaces off the internet, and hunt for web shells, outbound SSH from appliances and AD spraying.

Triage: All three chained CVEs are now in CISA KEV and a public PoC exists, so internet-exposed PHP and firewall management interfaces face confirmed, reproducible exploitation [S4][S5][S6].

CISA KEV, a primary source, confirms exploitation of all three CVEs [S4][S5]. The firewall campaign itself rests on one secondary report of Dream's research [S1], with no vendor advisory and no named firewall vendor.

Changed since version 1

What happened

Timeline

2026-10-17Amazon observes attackers targeting PHP2Shell, four days before the patches shipped S4
2026-10-21PHP releases fixes for CVE-2026-109618/109619 S4
2026-10-23Firewall campaign begins (runs through Oct 25) S1
2026-10-26PHP publishes a mitigation for unpatched CVE-2026-115560 S2
2026-10-27CISA KEV listing for CVE-2026-109618/109619 reported S4
2026-10-29Dream's firewall campaign reported S1
2026-10-29CVE-2026-46300 (Fragnesia) added to CISA KEV S5
2026-10-29Public PoC repo with RCE chains and detection rules published S6

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 DESC

A hit means: Failed logons against many users from one source, then a new account on the same DC within a day, match the actor's tunnelled spray and backdoor-account attempt [S1]. Escalate only when a spray source is a firewall or management-appliance IP. · 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

Scope

Affected

Only if

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; EOL ≤8.1 (including the 8.0.30 seen on the firewalls) gets no PHP fix; CVE-2026-115560 has a mitigation only; no kernel fix version for CVE-2026-46300 in the sources

Enumerate

Contain

Eradicate

Recover

Re-enter the loop when

Debrief

Detection coverage — checked automatically

CategorySourceStatus
VendorImpacted vendor / CERT advisorynothing found — no vendor or CERT page among the thread sources; secondary reporting only
GovernmentCISA KEV · CVE-2026-109618published — listed 2026-10-26, federal due 2026-10-29
GovernmentCISA KEV · CVE-2026-109619published — listed 2026-10-26, federal due 2026-10-29
GovernmentCISA KEV · CVE-2026-115560nothing found — not in the catalog
ReferenceNVD · CVE-2026-109618published — published 2026-10-21, CVSS 4.0 9.2
ReferenceNVD · CVE-2026-109619published — published 2026-10-21, CVSS 4.0 9.2
ReferenceNVD · CVE-2026-115560nothing found — no record yet
VM scannersQualys · CVE-2026-109618published — QID 45110, 389102, 39033, 533086, 533068 · Security Blog: Two Critical PHP Flaws Could Hand Attackers Your Web Servers. Here’s How to Find, Mitigate, and Patch PHP2Shell Now (+1 more post)
VM scannersQualys · CVE-2026-109619published — QID 45110, 389102, 39033, 533086, 533068 · Security Blog: Two Critical PHP Flaws Could Hand Attackers Your Web Servers. Here’s How to Find, Mitigate, and Patch PHP2Shell Now (+1 more post)
VM scannersQualys · CVE-2026-115560published — QID 45110, 389102, 39033, 533086, 533068 · Security Blog: Two Critical PHP Flaws Could Hand Attackers Your Web Servers. Here’s How to Find, Mitigate, and Patch PHP2Shell Now
VM scannersRapid7 · CVE-2026-109618published — InsightVM coverage stated
VM scannersRapid7 · CVE-2026-109619published — InsightVM coverage stated
VM scannersRapid7 · CVE-2026-115560nothing found — no vulnerability-database entry
VM scannersTenable · CVE-2026-109618published — 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 scannersTenable · CVE-2026-109619published — 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 scannersTenable · CVE-2026-115560nothing found — no plugin names the CVE yet
EDR / endpoint VMCrowdStrike blogpublished — 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 VMMicrosoft Security blognothing found — no post names it among the feed's 10 newest items
EDR / endpoint VMSentinelOne blogpublished — Stopping PHP2SHELL: How SentinelOne Protects Customers From This Attack Technique · The Good, the Bad and the Ugly in Cybersecurity - Week 43 (2026)
EDR / endpoint VMSentinelOne Labsnothing found — no post names it among the feed's 10 newest items
WAF / edgeAkamai blogpublished — Understanding PHP2Shell: Everything You Need to Know (names PHP2Shell in the title; the feed text carries no CVE id)
WAF / edgeCloudflare WAF managed-ruleset changelogpublished — WAF - WAF Release - 2026-10-22 - Emergency - Cloudflare Managed Ruleset · WAF - WAF Release - 2026-10-22 - Emergency - Cloudflare Free Ruleset
Cloud / containerWiz blogpublished — 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 errataDebian tracker · CVE-2026-109618published — tracker entry with fixed versions
Linux distro errataDebian tracker · CVE-2026-109619published — tracker entry with fixed versions
Linux distro errataDebian tracker · CVE-2026-115560nothing found — no tracker entry
Linux distro errataRed Hat · CVE-2026-109618nothing found — entry exists, no errata yet
Linux distro errataRed Hat · CVE-2026-109619nothing found — entry exists, no errata yet
Linux distro errataRed Hat · CVE-2026-115560nothing found — no Red Hat entry
IDS / researchCisco Talos blogpublished — Two critical RCEs in PHP core
IDS / researchEmerging Threats open · CVE-2026-109618published — 7 Suricata rules: sid 2072549, 2072550, 2072551, 2072552, 2072553, 2072556, 2072557
IDS / researchEmerging Threats open · CVE-2026-109619published — 2 Suricata rules: sid 2072548, 2072554
IDS / researchEmerging Threats open · CVE-2026-115560nothing found — no open rule names it (exploit, web_server, web_specific_apps sets)
Detection contentElastic detection rulespublished — 2 files name PHP2Shell: rules/cross-platform/initial_access_potential_php2shell_exploitation_attempt.toml, rules/cross-platform/impact_first_occurrence_web_server_segmentation_fault.toml
Detection contentElastic Security Labspublished — php2shell: Assessing Elastic detection coverage relevant to CVE-2026-109618 and CVE-2026-109619
Detection contentSigmaHQ rulesnothing found — no rule file names PHP2Shell / CVE-2026-109618 / CVE-2026-109619
Detection contentSplunk ESCUpublished — 16 files name PHP2Shell: stories/php2shell.yml, detections/network/cisco_secure_firewall___php2shell_exploitation_attempt.yml, detections/network/cisco_secure_firewall___php2shell_suspicious_upload_activity.yml, detections/network/cisco_secure_firewall___php2shell_serialized_payload_activity.yml
CommunityNuclei template · CVE-2026-109618published — template in nuclei-templates (main)
CommunityNuclei template · CVE-2026-109619nothing found — no template under http/cves
CommunityNuclei template · CVE-2026-115560nothing found — no template under http/cves
MSSP / IR firmsArctic Wolf blogpublished — PHP2Shell Is a Wake-Up Call for Every Business Leader (names PHP2Shell in the title; the feed text carries no CVE id)
MSSP / IR firmsHuntress blogpublished — Rapid Response: php2shell, Leaked Critical PHP Vulnerabilities (CVE-2026-109618 & CVE-2026-109619)
MSSP / IR firmsRapid7 blogpublished — CVE-2026-109618 and CVE-2026-109619: Critical Unauthenticated Remote Code Execution in PHP
MSSP / IR firmsSophos threat researchpublished — Proof-of-concept exploit released for PHP vulnerabilities (CVE-2026-109618, CVE-2026-109619)
ResearchUnit 42published — Threat Brief: Critical Vulnerabilities in PHP: CVE-2026-109618, CVE-2026-109619 (Updated October 29)

Checked automatically 2026-10-30 09:48Z from public sources: 30 published, 15 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 (5)
VM scannersLook up checks for CVE-2026-109618/109619, CVE-2026-46300 and CVE-2026-115560, and whether they can assess embedded PHP on firewall appliances.
EDR / LinuxCheck vendor guidance for Fragnesia (CVE-2026-46300) privilege-escalation behaviour and for web-shell creation by PHP processes.
WAF / IDSCheck whether rules exist for session.upload_progress multipart exploitation. Review the PoC's published Suricata and ModSecurity rules before adopting them [S6].
SIEMCheck whether Sigma content for PHP2Shell, including the PoC repo's rules [S6], maps to your field names.
Firewall vendorsCheck each firewall vendor's advisories for PHP2Shell or Fragnesia exposure in their management OS.

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-30 09:48Z from the CVE ids and NVD's CPE configurations; re-built daily with the coverage check.

Open questions

Sources

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.