Security researchers at Patchstack reported that the first malicious requests targeting the vulnerability began at 17:44 UTC on September 22, less than five hours after WordPress released the security update. Initial activity involved reconnaissance, with attackers attempting to include ordinary WordPress core files to identify vulnerable hosts.
Discovered by security researcher Robert Ressl, CVE-2026-87902 is an unauthenticated path traversal bug that, under specific conditions, can lead to remote code execution. The flaw affects the get_page_template() function, allowing attackers to include a chosen readable local PHP file outside active theme directories.
According to the official advisory on GitHub, exploitation requires that the active parent or child theme have a top-level directory with a name starting with 'page-', and the targeted local PHP file must exist and be readable by the web server. The advisory notes that Docker's official PHP image is affected, along with default cPanel configurations using PHP versions before 8.5.
WordPress has backported fixes to all branches down to version 4.7 due to the vulnerability's critical severity, but releases before 4.6 will not receive patches.
Patchstack observed that reconnaissance activity has now escalated to active exploitation. Attackers are using tools such as pearcmd.php in conjunction with double-encoded traversal sequences in the 'pagename' parameter alongside a valid 'page_id'. The attacks involve a config-create stage that writes files to disk with attacker-controlled content.
Some payloads merely write a marker file to indicate the host is exploitable. However, researchers also identified payloads that "write a short tag that executes a shell command on access," indicating malicious intent. Delivered files are written to /tmp and /var/tmp directories with names such as wp-pear-rce-flag.php, poc87902.php, and files beginning with 'luci_' or 'zeta_' followed by random characters.
The source IPs to block, according to Patchstack, include 169.58.48.193, 169.58.48.195, and the IPv6 address 2001:df1:e8c0::106b.