Activity observed on October 25, 2026 involved an attacker combining PHP2Shell with a kernel privilege escalation exploit to root 25 servers, including three systems in a U.S. government-affiliated environment. The affected devices run specific versions of a large vendor's firewall software. The custom weaponization of the PHP2Shell exploit chain, coupled with CVE-2026-46300CVSS 7.8 HIGH / Published 2026-05-23In the Linux kernel, the following vulnerability has been resolved: net: skbuff: preserve shared-frag marker during coalescing skb_try_coalesce() can attach paged frags from @from to @to. If @from has SKBFL_SHARED_FRAG set, the resulting @to skb can contain the same externally-owned or page-cache-backed frags, but the shared-frag marker is currently lost.View on NVD, is said to have rooted 25 servers across the U.S., Japan, Taiwan, and South Korea.
What happened
The compromise started at the network edge. According to cybersecurity firm Dream, the affected devices run specific versions of a large vendor's firewall software. From there the intrusion moved inward rather than stopping at the perimeter device.
The attacker then launched attacks against Active Directory. The recovered artifacts confirm credential extraction and directory enumeration.
The same chain was used repeatedly. Rooted systems span the U.S., Japan, Taiwan, and South Korea, which points to reuse of one tested method against many targets rather than a single hand-built operation.
How it was done
Two pieces were combined. PHP2Shell provided the initial foothold, and a kernel privilege escalation exploit tracked as CVE-2026-46300CVSS 7.8 HIGH / Published 2026-05-23In the Linux kernel, the following vulnerability has been resolved: net: skbuff: preserve shared-frag marker during coalescing skb_try_coalesce() can attach paged frags from @from to @to. If @from has SKBFL_SHARED_FRAG set, the resulting @to skb can contain the same externally-owned or page-cache-backed frags, but the shared-frag marker is currently lost.View on NVD turned that foothold into root on the affected devices.
The identity stage followed a clear order. The attacker targets Active Directory to decrypt the LDAP service account password, enumerate users, and spray passwords against every user account using organization-themed passwords in an attempt to extract credentials.
What to check
Work outward from the firewall to the directory, in that order.
Confirm the exact firewall build you are running
Pull the running version from each appliance management console or CLI, not from your asset inventory, which often lags. Compare every result against the vendor's advisory for CVE-2026-46300CVSS 7.8 HIGH / Published 2026-05-23In the Linux kernel, the following vulnerability has been resolved: net: skbuff: preserve shared-frag marker during coalescing skb_try_coalesce() can attach paged frags from @from to @to. If @from has SKBFL_SHARED_FRAG set, the resulting @to skb can contain the same externally-owned or page-cache-backed frags, but the shared-frag marker is currently lost.View on NVD. Any device on a build the vendor lists as affected, or any device whose version you cannot confirm, is a bad result.
Look for PHP files that should not exist
On the appliance filesystem or its backup image, list web-root and upload directories sorted by modification time, for example find /var/www -name '*.php' -mtime -30 -ls. Compare file hashes against a clean image of the same version. Unknown PHP files, or known files with changed hashes, warrant isolation of the device.
Review the LDAP service account
Find where that account's password is stored on edge devices and in configuration backups. Check its group memberships and the rights it holds in Active Directory. A service account that is a member of a privileged group, or one whose password has not been rotated since the device was last exposed, is a bad result.
Hunt for password spraying in authentication logs
Query domain controller security logs for event ID 4625 grouped by source address and by hour, and flag sources touching many distinct accounts with few attempts each. Include accounts that are disabled or dormant, since spraying hits those too. A single source spanning most of your user base is the signal to chase.
Check for directory enumeration
Enable and review LDAP diagnostic logging on domain controllers, including expensive and inefficient search logging via event 1644. Look for broad subtree queries returning large user sets from hosts that do not normally run them. Queries originating from an appliance or a jump host are worth a full review.
Test your password policy against themed guesses
Run an offline audit of domain hashes against a wordlist built from your own organisation name, products, sites and seasons. Count how many accounts fall. Any match on a privileged or service account means forced rotation and a policy change, not just a note in a report.