Security3 publishers3 min readPublished
Wordfence blocked 100,000 exploit attempts against a WooCommerce plugin with 6,000 installs
CVE-2026-27540 lets an unauthenticated request add php to the plugin's own upload allowlist and drop a webshell. The fix shipped on February 20, and the first exploitation spike came 104 days later, on June 4.
The Watch · Security desk

What happened
- CVE-2026-27540 lets an unauthenticated attacker upload arbitrary files, including PHP, to sites running WooCommerce Wholesale Lead Capture 2.0.3.1 or earlier, a premium plugin with more than 6,000 active installs.
- Wordfence says it has blocked more than 100,000 attempts against the flaw since June 2026, with activity spiking from June 4 to June 17 and again on July 1 and August 30.
- The file the attackers upload is shell.php, a webshell that reports host details and serves a browser-based form for writing further malicious files to the site.
- The developer fixed the flaw in version 2.0.3.2, released on February 20, and Wordfence tells administrators to move to that release or later.
- Wordfence separately detailed two unauthenticated remote code execution chains in The Events Calendar, a plugin on more than 600,000 sites, patched by StellarWP in 6.17.3.1 and 6.17.4.1.
Compiled by The WatchSomething wrong?How this is made
Why it matters
- precedent A premium plugin on 6,000 sites drew about 17 blocked requests per install, so install count is no longer a useful way to rank which plugins in a hosting estate get probed first.
- capability One successful upload gives the attacker a file-drop channel of his own, so patching or deleting the plugin after June does not take back the access.
- decision Wordfence's remediation for a confirmed hit is a restore from a safe backup, which leaves operators without a clean pre-June copy facing a rebuild.
- exposure The Events Calendar risk gates on a setting, so among 600,000 installs only the sites that display comments on event pages need the emergency update.
The plugin asks the client which file extensions to trust. According to Wordfence, the AJAX action wwlc_file_upload_handler checks an uploaded file's extension against an allowlist carried in the file_settings request parameter, and the requester supplies that parameter [4]. Add php to the list and the plugin accepts a PHP file. "The attacker submits a request to the wwlc_file_upload_handler AJAX action containing a forged file_settings parameter and a malicious file with a .php extension," Wordfence said [6]. Security researcher Teemu Saarentaus found the flaw [8].
The gap between the fix and the first recorded spike is 104 days [13]. So the population at risk is narrow and identifiable: sites still running 2.0.3.1 or older between June 4 and August 30 [12].
More than 100,000 blocked attempts against a plugin with more than 6,000 active installs works out at roughly 17 blocked requests per install [14]. Wordfence's figure counts requests its firewall blocked across the sites it protects, and neither writeup says how many of those sites had the plugin installed. A ratio like that comes from scanners that fire the request at every host and read the response to learn which ones run the plugin.
Wordfence recorded 99 attempts in the 24 hours before publication [11]. Across the 87 days from June 4 to August 30, 100,000 blocked requests average about 1,150 a day [15].
For a site that was exposed in that window, the check is on disk and in logs: unexpected or recently created .php files in the uploads directory, and requests to /wp-admin/admin-ajax.php with the action parameter set to wwlc_file_upload_handler [17]. Wordfence also says to remove administrator accounts you do not recognise [17]. It published ten high-offender addresses, among them 92.241.13.213 and the IPv6 host 2a0f:85c1:840:5389::1 [16]. Where compromise is confirmed, Defiant's advice is to restore from a safe backup, because removing every persistence mechanism, user and backdoor may be complicated [18].
The same writeup covers The Events Calendar, on more than 600,000 sites [19]. CVE-2026-78159 sits in the parse_array validation of a widget classes map and affects versions up to 6.17.3; CVE-2026-78006 sits in is_safe_widget_instance and affects versions up to 6.17.4 [20][21]. Exploitation needs comments enabled on the target event page and the plugin's "Show comments on event pages" option active [23], and Wordfence says both chains can be triggered through WordPress's pending-comment preview without moderator approval [24]. The 100,000 blocked requests belong to the lead capture flaw.
"The first chain uses PHP Object Injection to execute arbitrary operating system commands on the underlying server. The second chain bypasses the object-injection guard and abuses an arbitrary-callable primitive to reset an administrator's password, after which an attacker can upload a malicious plugin and take complete control of the site," Wordfence said [25].
What to watch
- Whether Wordfence records exploitation of CVE-2026-78159 or CVE-2026-78006 in the wild, which would put the same payload delivery against 600,000 installs instead of 6,000.
- Whether the shell.php operators come back to the hosts they took in June with something beyond reconnaissance, or sell the access on.
- A fourth attempt spike after August 30, which would mean the scanners are still finding hosts on 2.0.3.1 worth revisiting.