TL;DR: Persistent exploitation of CVE-2025-23921 keeps WordPress upload-handling flaws in play, TXOne Networks reports, with arbitrary file upload turning into remote code execution long after disclosure. Upload paths need execution blocking and fast patching to stop repeated multipart exploit attempts.
Editorial analysis by NHI Mgmt Group, based on content published by TXOne Networks: “Persistent Exploitation of WordPress Multi Uploader Plugin: CVE-2025-23921 in the Wild”.
By the numbers:
- Gravity Forms core was affected up to and including version 2.9.20, with a CVSS v3.1 score of 9.8.
- Exploit attempts have been detected consistently since August 2024.
Key questions
Q: Why do upload-handling vulnerabilities keep getting exploited after disclosure?
A: Because many internet-facing sites patch slowly, miss vulnerable plugins in inventory, or leave execution permissions unchanged after remediation.
Q: What are the signs that a file upload exploit is under way?
A: Look for multipart requests to upload endpoints, directory traversal strings, unusual executable extensions such as .phtml, and tiny payloads that resemble webshells rather than normal user content.
Q: What breaks when a web application lets uploaded files execute on the server?
A: The application turns a normal content workflow into an execution path.
Practitioner guidance
- Enforce immediate patch discipline for exposed upload plugins Remove or upgrade any internet-facing WordPress plugin that handles file uploads as soon as a critical upload flaw is disclosed, and verify versions across all environments, not just production.
- Disable script execution in upload directories Prevent PHP or other server-side code from executing in any directory that stores untrusted uploads, and confirm the restriction on every web tier and storage mount.
- Validate file content, not just file extensions Reject uploads that fail MIME checks, content inspection, or server-side allowlists, because extension-only checks are too easy to bypass with disguised webshells.
Bottom line: The core issue is not only a plugin bug but a broken trust boundary between uploaded content and executable code.
Glossary terms: Remote Code Execution (RCE), Arbitrary File Upload, Multipart Form Data, Web shell
Explore further
View Full Forum → | NHI Foundation Course → | Our Services → | Read the full analysis →
Persistent file upload abuse is a governance problem, not just a patching problem. The article shows that attackers keep returning to the same upload endpoints because many environments leave a working execution path in place after disclosure. That means the real failure is lifecycle control over plugins, upload directories, and exposed content workflows, not only missing a single update. Practitioners should treat internet-facing upload paths as governed attack surfaces.
A question worth separating out:
Q: Should organisations prioritise patching upload flaws before broader hardening work?
A: Yes, when the upload flaw is internet-facing and can lead to remote code execution. Those vulnerabilities create an immediate compromise path that can outweigh lower-severity issues elsewhere in the stack. Patch first, then verify that the affected endpoint is no longer reachable, execution is blocked in upload locations, and detections are in place for repeat attempts.
👉 Read our full editorial: WordPress file upload flaws enable repeated remote code execution