CVE-2025-7360 is a critical (CVSS 9.1) arbitrary file move flaw in the HT Contact Form Widget for Elementor Page Builder and Gutenberg Blocks plugin for WordPress. Versions up to and including 2.2.1 are affected, and no login is needed. Update the plugin.
What's affected
The record says the plugin (slug ht-contactform) is vulnerable in all versions up to and including 2.2.1. The cause is insufficient file path validation in the handle_files_upload() function. An unauthenticated attacker can move arbitrary files on the server, and the record says this can easily lead to remote code execution when the right file is moved, with wp-config.php as the example.
The record gives no fixed version. The wordpress.org changelog shows 2.2.2 as the next release, dated 10 July 2025, with improved file upload handling and file type validation plus a file name sanitization fix. It does not name this CVE, and I could not open the Wordfence entry or the code change pages listed in the record. Treat 2.2.2 as the first release after the affected range and confirm it in the Wordfence entry. Better, run the latest release. At the time I checked, wordpress.org listed 2.10.3.
The vector is network reachable with low complexity, no privileges and no user interaction, no confidentiality impact and high integrity and availability impact. The weakness is CWE-22, path traversal. The record's KEV flag is false, and nothing I read says it is exploited.
The same plugin has a companion flaw, CVE-2025-7341, an arbitrary file deletion. Both sit in the same version range, so one update covers both.
How to check if you're exposed
Read the installed version:
wp plugin list --name=ht-contactform --fields=name,status,version
If WP-CLI is not available, open the Plugins page in the WordPress admin and read the version under the plugin name. Anything at 2.2.1 or lower is in the affected range.
Check each site on your estate, including staging copies that are reachable from the internet. A plugin that is installed but inactive can still leave files on disk, so also look for the folder:
find /var/www -type d -name ht-contactform
If the version is 2.2.1 or lower, assume exposure. Check that wp-config.php and other core files are where they should be. A moved file is harder to spot than a deleted one, so also look for unexpected files in the uploads folder and for config files that appear in odd places. Review web server logs for strange requests to the plugin's submission endpoints.
What to do now
- Find every WordPress site that has the plugin.
- Update to the latest release, or remove the plugin if it is unused.
- Take a backup first. Run
wp plugin update ht-contactformor update from the admin screen. - Confirm core files,
wp-config.phpand the uploads folder look right, and restore from backup if they do not. - Review logs for the period the vulnerable version was live.
- Subscribe to advisories for the plugins you run, so the next one is not a surprise.
Why it matters
Moving a file is a quiet way to break a site or take it over. Move wp-config.php away and WordPress behaves as if it were not installed. Move a file into a place the server executes, and a harmless upload can become code. The record describes this as an easy path to remote code execution.
The cause is the same one that shows up again and again in upload handlers: a path from the request is used without being checked against the folder the code is meant to work in. The right design takes the file name out of the request's hands, picks a safe destination and refuses anything that resolves outside it.
Quick check
Is CVE-2025-7360 the same as CVE-2025-7341?
No. Both affect HT Contact Form through 2.2.1, but 7360 is an arbitrary file move in handle_files_upload() and 7341 is an arbitrary file deletion in temp_file_delete(). One update addresses both.
Is it exploited in the wild?
The record's KEV flag is false and none of the pages I could read says so.
Sources
- CVE-2025-7360 on Safeguard Gold
- HT Contact Form on wordpress.org (changelog)
- Wordfence entry for this issue (could not be read when I checked)
Last reviewed: 18 October 2026.