CVE-2025-5961
The Migration, Backup, Staging – WPvivid Backup & Migration plugin for WordPress is vulnerable to arbitrary file uploads due to missing file type validation in the 'wpvivid_upload_import_files' function in all versions up to, and including, 0.9.116. This makes it possible for authenticated attackers, with Administrator-level access and above, to upload arbitrary files on the affected site's server which may make remote code execution possible. NOTE: Uploaded files are only accessible on WordPress instances running on the NGINX web server as the existing .htaccess within the target file upload folder prevents access on Apache servers.
CVSS
- Version: 3.1
- Vector: CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H
- Base score: 7.2
Exploitation probability (EPSS)
- Probability of exploitation in the next 30 days: 55%
- Percentile among all scored CVEs: 99
- Score date: 10/4/2026
EPSS (Exploit Prediction Scoring System, FIRST) estimates how likely a vulnerability is to be exploited in the wild within 30 days. It complements CVSS (impact) and CISA KEV (confirmed exploitation).
🎯 ATT&CK techniques
How this vulnerability is exploited and what the attacker gains, in MITRE ATT&CK terms.
- Exploitation
T1210Exploitation of Remote Serviceslateral movement75 % - Primary impact
T1505.003Web Shellpersistence80 % - Secondary impact
T1059Command and Scripting Interpreterexecution70 %
AV:N, PR:H, requiere autenticación remota de administrador; CWE-434 (carga de archivos); acceso a shell web en NGINX. Impactos: web shell (T1505.003) y ejecución de código (T1059).
Inferred by our analysis agent from the official description, CVSS vector and CWE, and checked by a supervisor. May contain errors.
🛡️ ATT&CK mitigations that cover these techniques
Affected technologies (1)
CWEs
- CWE-434
References
- https://github.com/d0n601/CVE-2025-5961
- https://plugins.trac.wordpress.org/browser/wpvivid-backuprestore/trunk/includes/class-wpvivid-export-import.php#L2210
- https://plugins.trac.wordpress.org/browser/wpvivid-backuprestore/trunk/includes/class-wpvivid-export-import.php#L2235
- https://plugins.trac.wordpress.org/browser/wpvivid-backuprestore/trunk/includes/class-wpvivid-export-import.php#L2246
- https://plugins.trac.wordpress.org/changeset/3320877/
- https://ryankozak.com/posts/cve-2025-5961/
- https://www.wordfence.com/threat-intel/vulnerabilities/id/d8ceb4a1-9354-4ed3-9a8f-45ba2057a810?source=cve
Raw JSON (NVD)
Show
{
"id": "CVE-2025-5961",
"cveTags": [],
"metrics": {
"ssvcV203": [
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"ssvcData": {
"id": "CVE-2025-5961",
"role": "CISA Coordinator",
"options": [
{
"exploitation": "poc"
},
{
"automatable": "no"
},
{
"technicalImpact": "total"
}
],
"version": "2.0.3",
"timestamp": "2025-07-03T14:00:17.800349Z"
}
}
],
"cvssMetricV31": [
{
"type": "Secondary",
"source": "security@wordfence.com",
"cvssData": {
"scope": "UNCHANGED",
"version": "3.1",
"baseScore": 7.2,
"attackVector": "NETWORK",
"baseSeverity": "HIGH",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H",
"integrityImpact": "HIGH",
"userInteraction": "NONE",
"attackComplexity": "LOW",
"availabilityImpact": "HIGH",
"privilegesRequired": "HIGH",
"confidentialityImpact": "HIGH"
},
"impactScore": 5.9,
"exploitabilityScore": 1.2
}
]
},
"affected": [
{
"source": "security@wordfence.com",
"affectedData": [
{
"vendor": "wpvividplugins",
"product": "WPvivid — Backup, Migration & Staging",
"versions": [
{
"status": "affected",
"version": "0",
"versionType": "semver",
"lessThanOrEqual": "0.9.116"
}
],
"defaultStatus": "unaffected"
}
]
}
],
"published": "2025-07-03T14:15:33.523",
"references": [
{
"url": "https://github.com/d0n601/CVE-2025-5961",
"tags": [
"Exploit",
"Third Party Advisory"
],
"source": "security@wordfence.com"
},
{
"url": "https://plugins.trac.wordpress.org/browser/wpvivid-backuprestore/trunk/includes/class-wpvivid-export-import.php#L2210",
"tags": [
"Product"
],
"source": "security@wordfence.com"
},
{
"url": "https://plugins.trac.wordpress.org/browser/wpvivid-backuprestore/trunk/includes/class-wpvivid-export-import.php#L2235",
"tags": [
"Product"
],
"source": "security@wordfence.com"
},
{
"url": "https://plugins.trac.wordpress.org/browser/wpvivid-backuprestore/trunk/includes/class-wpvivid-export-import.php#L2246",
"tags": [
"Product"
],
"source": "security@wordfence.com"
},
{
"url": "https://plugins.trac.wordpress.org/changeset/3320877/",
"tags": [
"Patch"
],
"source": "security@wordfence.com"
},
{
"url": "https://ryankozak.com/posts/cve-2025-5961/",
"tags": [
"Exploit",
"Third Party Advisory"
],
"source": "security@wordfence.com"
},
{
"url": "https://www.wordfence.com/threat-intel/vulnerabilities/id/d8ceb4a1-9354-4ed3-9a8f-45ba2057a810?source=cve",
"tags": [
"Third Party Advisory"
],
"source": "security@wordfence.com"
}
],
"vulnStatus": "Analyzed",
"weaknesses": [
{
"type": "Secondary",
"source": "security@wordfence.com",
"description": [
{
"lang": "en",
"value": "CWE-434"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "The Migration, Backup, Staging – WPvivid Backup & Migration plugin for WordPress is vulnerable to arbitrary file uploads due to missing file type validation in the 'wpvivid_upload_import_files' function in all versions up to, and including, 0.9.116. This makes it possible for authenticated attackers, with Administrator-level access and above, to upload arbitrary files on the affected site's server which may make remote code execution possible. NOTE: Uploaded files are only accessible on WordPress instances running on the NGINX web server as the existing .htaccess within the target file upload folder prevents access on Apache servers."
},
{
"lang": "es",
"value": "El complemento Migration, Backup, Staging – WPvivid Backup & Migration para WordPress es vulnerable a la carga de archivos arbitrarios debido a la falta de validación del tipo de archivo en la función 'wpvivid_upload_import_files' en todas las versiones hasta la 0.9.116 incluida. Esto permite que atacantes autenticados, con acceso de administrador o superior, carguen archivos arbitrarios en el servidor del sitio afectado, lo que podría posibilitar la ejecución remota de código. NOTA: Los archivos subidos solo son accesibles en instancias de WordPress que se ejecutan en el servidor web NGINX, ya que el archivo .htaccess existente en la carpeta de carga del archivo de destino impide el acceso en servidores Apache."
}
],
"lastModified": "2026-06-17T09:49:06.453",
"configurations": [
{
"nodes": [
{
"negate": false,
"cpeMatch": [
{
"criteria": "cpe:2.3:a:wpvivid:migration\\,_backup\\,_staging:*:*:*:*:*:wordpress:*:*",
"vulnerable": true,
"matchCriteriaId": "C20BE8B0-B75F-41AA-ACB6-92C5F9C4D405",
"versionEndExcluding": "0.9.117"
}
],
"operator": "OR"
}
]
}
],
"sourceIdentifier": "security@wordfence.com"
}