Skip to main content

Contact Manager CVE-2026-109218

| EUVDEUVD-2026-111608 CRITICAL
Unrestricted Upload of File with Dangerous Type (CWE-434)
2026-10-28 Wordfence GHSA-gfc3-vp5h-pp8w
9.8
CVSS 3.1 · NVD
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Reach public contact form endpoint
  2. Delivery
    Submit add_message file with trailing-dot name
  3. Exploit
    Bypass extension blacklist via empty-extension derivation
  4. Execution
    Write executable .phar to disk
  5. Persist
    Request file before unlink() deletes it
  6. Impact
    Apache 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.

Act Now Prioritize within 24-48h. Why: CRITICAL severity.
No patch listed yet 0.6% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

Contact Manager 0 ≤9.1.2

Affected Packages

euvd contact_manager no fix

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

Vendor (Wordfence) PRIMARY CRITICAL
NVD 9.8 CRITICAL
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
vuln.today AI 8.1 HIGH

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.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
4.0 AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (Wordfence).

CVSS VectorNVD

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

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.

Executive ViewAI

Why It Matters

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.

Business Impact: High
Compensating Controls

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

EPSS Score
0.6%
Top 49% exploitable
Prevalence
Low
niche WordPress contact-form plugin, modest install base
Social Media
2
Sightings
Data Quality
3 sources
Confidence: Low

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.

SignalValue
Severity CRITICAL
CISA KEV No
Public POC No
EPSS 0.6%
Patch available No
Active threat No
Deciding rule
CRITICAL severity
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact
High

Priority Score

50
Low Medium High Critical
KEV: 0
EPSS: +1
CVSS: +49
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

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.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy