Atomic Edge analysis of CVE-2025-14627:
This vulnerability is an authenticated Server-Side Request Forgery (SSRF) in the WP Ultimate CSV Importer WordPress plugin, affecting versions up to and including 7.35. The flaw resides in the plugin’s URL upload functionality, allowing Contributor-level or higher authenticated users to force the server to make HTTP requests to internal network resources. The CVSS score of 6.4 reflects the moderate impact and attack complexity.
Atomic Edge research identified the root cause in the `upload_function()` method within the `UrlUpload.php` file. The initial URL validation uses `wp_http_validate_url()` at line 59. When a Bitly shortlink (containing ‘https://bit.ly/’) is detected at line 71, the `unshorten_bitly_url()` function follows redirects to resolve the final destination URL. The vulnerability occurs because the resolved URL bypasses re-validation. The patched version shows the plugin previously lacked validation on the resolved URL’s host and IP address, specifically missing checks for private IP ranges and reserved addresses.
The exploitation method requires an authenticated attacker with at least Contributor privileges to access the plugin’s AJAX upload endpoint. The attacker submits a POST request to `/wp-admin/admin-ajax.php` with the `action` parameter set to `smack_uci_upload_files`. The payload includes a `url` parameter containing a Bitly shortlink that resolves to an internal target, such as `http://169.254.169.254/` or `http://localhost/`. The plugin’s initial validation passes because the Bitly URL is public, but the subsequent redirect to the internal target is not re-validated, causing the server to fetch the internal resource.
The patch in version 7.36 adds comprehensive validation both before and after resolving Bitly shortlinks. In `UrlUpload.php` at lines 57-73, the patch introduces a host resolution and IP validation check using `gethostbyname()` and `filter_var()` with `FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE` flags. Crucially, after the `unshorten_bitly_url()` call at line 84, the patch reapplies `wp_http_validate_url()` and repeats the host/IP validation on the resolved URL. This ensures both the initial shortlink and its final destination are restricted from accessing internal networks.
Successful exploitation allows attackers to probe internal network services, access cloud instance metadata APIs (like AWS’s 169.254.169.254), interact with localhost services, and potentially exfiltrate sensitive configuration data or credentials from internal APIs. This can lead to further network compromise, even if the WordPress instance itself is not directly vulnerable to remote code execution.







