Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessReach public contact form endpoint
-
DeliverySubmit add_message file with trailing-dot name
-
ExploitBypass extension blacklist via empty-extension derivation
-
ExecutionWrite executable .phar to disk
-
PersistRequest file before unlink() deletes it
-
ImpactApache mod_php executes PHP for RCE
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V5 - File Handling File type validation, storage isolation
MITRE ATT&CK
2 techniques across 2 tactics: Command and Control, Persistence The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | The arbitrary file upload itself requires no authentication (PR:N) and is reachable remotely via the plugin's contact form add_message handler in Contact Manager ≤9.1.2; the trigger is an uploaded filename ending in a trailing dot, which makes the extension-derivation routine return an empty string so the incomplete blacklist is bypassed and sanitize_file_name() strips the dot before writing. Full remote code execution is gated by two concrete conditions stated in the description: (1) the server must run Apache with libapache2-mod-php, which maps .phar to PHP by default - deployments on nginx/php-fpm or without that mapping do not get code execution from this path; and (2) the attacker must retrieve the uploaded file within the brief window before unlink() removes it at the end of the request, i.e. win a timing race. These two factors are the main limiters: on non-Apache/mod_php stacks the impact degrades to an unauthenticated file-write rather than RCE, and the deletion race reduces reliability. |
| Impact | Signals are mostly aligned toward elevated but not catastrophic urgency. The vuln.today decision label is act_now, the finding was reported by a credible source (Wordfence), and the input CVSS is 9.8 with vector AV:N/AC:L/PR:N/UI:N, meaning the underlying arbitrary file write is reachable by unauthenticated network attackers against the plugin's public contact form. However, the 9.8 overstates real-world RCE reliability: the description itself conditions code execution on two factors that the CVSS AC:L does not capture - the server must run Apache with libapache2-mod-php (which maps .phar to PHP by default; nginx/php-fpm and most managed hosts do not), and the attacker must retrieve the uploaded file within a brief window before unlink() deletes it at end of request. So the file-write primitive is reliable and unauthenticated, but the full RCE is config-dependent and involves a timing race, making it closer to a targeted-opportunity bug than mass-exploitable on arbitrary hosts. No EPSS score was provided, so exploitation probability cannot be quantified. There is no KEV listing and no verified exploit code in the input, so there is no public exploit identified at time of analysis - this is a priority to patch because of the act_now label and unauthenticated reachability, but the headline 9.8 should be read with the Apache/mod_php and race-window caveats in mind. |
| Exploit ScenarioDerived | An unauthenticated attacker submits the plugin's public contact form, invoking add_message with a file whose name ends in a trailing dot; the incomplete extension blacklist derives an empty extension, sanitize_file_name() silently strips the dot, and a .phar (or otherwise executable) payload is written to disk. On a server using Apache with libapache2-mod-php, the attacker then races to request the uploaded file before unlink() removes it at end of request, causing PHP execution and remote code execution. No public exploit identified at time of analysis; this scenario is derived from the Wordfence/CVE description and the AV:N/AC:L/PR:N vector. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 28, 2026
Unauthenticated arbitrary file upload in the Contact Manager plugin for WordPress through 9.1.2 can escalate to remote code execution, but only on Apache servers running libapache2-mod_php and only if the attacker retrieves the uploaded .phar file within the brief window before the plugin unlinks it. The bypass uses a filename ending in a trailing dot, causing the extension-derivation check to return an empty string and pass the blacklist, after which sanitize_file_name() strips the dot and restores the .phar suffix on disk. Vuln.today priority is act_now; no public exploit code has been identified at time of analysis.
RemediationAI
Vendor-released patch: 9.1.3. Upgrade the Contact Manager plugin for WordPress from 9.1.2 or earlier to 9.1.3; the WordPress.org changeset (new=3767815@contact-manager/tags/9.1.3, old=3661172@contact-manager/tags/9.1.2) documents the fix, and the Wordfence advisory at https://www.wordfence.com/threat-intel/vulnerabilities/id/b359ef59-4c2e-4d4e-b000-1845525131de?source=cve provides vendor detail. If the upgrade cannot be applied immediately, disabling the plugin removes the add_message upload endpoint entirely; alternatively, removing or disabling Apache's libapache2-mod_php .phar handler mapping eliminates the code-execution path described, though the unauthenticated file write still occurs and the plugin's own unlink() at end of request remains the only cleanup. Deployments on nginx/php-fpm are not subject to the RCE condition but remain exposed to the unauthenticated upload until patched.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Contact Manager processes contact-form uploads through its add_message handler, with the relevant logic in includes/add-message.php (lines 254 and 256), invoked from includes/forms/processing.php#L102 and registered via contact-manager.php#L42. The root cause is CWE-434: an incomplete extension blacklist combined with filename sanitization ordering. A filename such as payload.phar. makes the extension-derivation routine return an empty string, so the blacklist does not match, and WordPress's sanitize_file_name() then removes the trailing dot before the file is written, leaving payload.phar on disk. Code execution is conditional rather than automatic: Apache with libapache2-mod_php maps .phar to the PHP handler by default, and the attacker must request the file before the handler's unlink() cleanup at end of request. Deployments on nginx/php-fpm, or Apache without that mapping, degrade to an unauthenticated file write instead of RCE, and the deletion race reduces reliability. The assessed vector is AC:H, reflecting these two prerequisites rather than the upload itself, which requires no authentication.
Know when Contact Manager gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Upload is unauthenticated and remote (AV:N/PR:N/UI:N), but code execution needs a non-default Apache+mod_php .phar mapping plus winning the unlink() deletion race, so AC:H; successful RCE yields full C/I/A.
Primary rating from Vendor (Wordfence).
CVSS VectorNVD
DescriptionNVD
The Contact Manager plugin for WordPress is vulnerable to Arbitrary File Upload in all versions up to, and including, 9.1.2 via the add_message function. This is due to an incomplete extension blacklist that fails to detect dangerous extensions when a trailing dot causes the extension-derivation routine to return an empty string, which sanitize_file_name() then silently removes before the file is written to disk. This makes it possible for unauthenticated attackers to upload files that may be executable, which makes remote code execution possible. Successful code execution additionally requires the server to use Apache with libapache2-mod-php (which maps .phar to PHP by default) and the attacker to retrieve the uploaded file within the brief window before it is removed by unlink() at end of request.
Articles & Coverage 1
Executive ViewAI
A critical vulnerability in the widely used Contact Manager plugin for WordPress (versions up to 9.1.2) enables unauthenticated attackers to upload malicious files, potentially leading to full server compromise. This puts all customer data and public-facing services at risk, and given the plugin's popularity, exploitation attempts are likely imminent.
No vendor-released patch identified at time of analysis. Interim mitigations include deploying a WAF to block malicious file uploads, disabling the Contact Manager plugin until a fix is available, restricting upload directory execution, and migrating to PHP-FPM.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Malicious file upload attacks exploit insufficient validation when web applications accept user-provided files.
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
EUVD-2026-111608
GHSA-gfc3-vp5h-pp8w
NVD
CVE.org
EPSS
Exploit-DB