Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2026-16636

CVE-2026-16636: FluentSMTP WordPress Plugin XSS Vulnerability

CVE-2026-16636 is a stored cross-site scripting flaw in FluentSMTP WordPress plugin that lets attackers inject malicious scripts via email recipient names. This article covers technical details, affected versions, and mitigations.

Published:

CVE-2026-16636 Overview

CVE-2026-16636 is a stored Cross-Site Scripting (XSS) vulnerability in the FluentSMTP WordPress plugin, affecting all versions up to and including 2.2.95. The flaw resides in the Email Logs feature, where the recipient display name (to.name) is neither sanitized on input nor escaped on output. Unauthenticated attackers can inject arbitrary JavaScript through any wp_mail() call that carries an attacker-controlled recipient name. The payload executes when an administrator navigates the Email Log detail view using the Prev/Next controls, which bypass the escapeHtml pipeline used by the list view. The vulnerability is classified as Improper Neutralization of Input During Web Page Generation [CWE-79].

Critical Impact

Unauthenticated attackers can stage stored JavaScript payloads that execute in an administrator's browser session, enabling session compromise, privileged action abuse, and full site takeover.

Affected Products

  • FluentSMTP – WP SMTP Plugin with Amazon SES, SendGrid, MailGun, Postmark, Google and Any SMTP Provider (all versions ≤ 2.2.95)
  • WordPress sites logging outbound mail through FluentSMTP
  • Administrator interfaces exposing the plugin's Email Log detail view

Discovery Timeline

  • 2026-08-06 - CVE-2026-16636 published to NVD
  • 2026-08-06 - Last updated in NVD database

Technical Details for CVE-2026-16636

Vulnerability Analysis

FluentSMTP records every outbound message sent through wp_mail() into its Email Log store. The recipient object serialized to the log includes both the address and the display name supplied by the caller. Because any component invoking wp_mail() can pass an arbitrary display name, an unauthenticated attacker who can trigger a mail-sending action (for example, a contact form, password reset, or comment notification) controls the to.name field written to the log.

The list view renders these values through an escapeHtml helper in fluent-mail-admin-app.js, neutralizing markup. The detail view reached through Prev/Next navigation does not route the recipient name through the same helper, so raw HTML and <script> fragments render directly into the administrator's DOM. Execution occurs entirely within an authenticated administrator context, allowing the payload to invoke privileged REST endpoints on behalf of the victim.

Root Cause

The underlying defect is inconsistent output escaping. Persistence paths in app/Models/Logger.php and app/Services/Mailer/BaseHandler.php store the recipient name verbatim, and the Vue-rendered detail navigation reads the stored value without invoking the same escaping helper used by the list template. Input sanitization on the write side is also absent, so no defense-in-depth exists at either boundary.

Attack Vector

Exploitation is remote and unauthenticated. The attacker submits a form or triggers any workflow that causes the target site to call wp_mail() with an attacker-controlled Name <email@example.com> header. FluentSMTP logs the entry. When an administrator later opens the Email Log and pages through entries using Prev/Next, the malicious script fires in the WordPress admin origin.

No verified public exploit code is available. Technical details are documented in the Wordfence Vulnerability Intelligence entry and the FluentSMTP 2.3.0 changeset.

Detection Methods for CVE-2026-16636

Indicators of Compromise

  • Email Log entries where the recipient display name contains HTML tags, angle brackets, or JavaScript keywords such as <script, onerror=, onload=, or javascript:.
  • Outbound wp_mail() calls originating from public-facing forms with unusually long or markup-bearing name fields.
  • Administrator sessions issuing unexpected REST calls (for example, /wp-json/wp/v2/users) immediately after visiting admin.php?page=fluent-mail#/email-logs.
  • New administrator accounts or modified plugins created shortly after an administrator viewed Email Log detail pages.

Detection Strategies

  • Query the FluentSMTP log table for entries where the to JSON field contains <, >, or script substrings.
  • Deploy Web Application Firewall (WAF) rules that reject wp_mail() recipient names carrying HTML metacharacters.
  • Correlate administrator browser telemetry with visits to the Email Log detail view, alerting on subsequent script-initiated privileged actions.

Monitoring Recommendations

  • Baseline outbound mail volume and flag surges tied to public form endpoints, which often precede stored-XSS staging.
  • Ingest WordPress wp-admin access logs into a centralized log platform and alert on Prev/Next navigation sequences against fluent-mail routes.
  • Monitor plugin file integrity for fluent-smtp/assets/admin/js/fluent-mail-admin-app.js to confirm the patched escaping helper is in place.

How to Mitigate CVE-2026-16636

Immediate Actions Required

  • Upgrade FluentSMTP to version 2.3.0 or later on every WordPress site running the plugin.
  • Purge existing Email Log entries whose recipient display names contain HTML or script fragments before administrators browse logs again.
  • Restrict access to wp-admin from trusted networks while patch rollout is in progress.
  • Rotate WordPress administrator credentials and active session cookies if suspicious log entries are found.

Patch Information

The vendor addressed the vulnerability in FluentSMTP 2.3.0. The version comparison diff shows the fix applied to the admin JavaScript so that recipient display names are escaped in the detail view Prev/Next path. Review the Logger.php source and the BaseHandler.php source to understand the pre-patch data flow.

Workarounds

  • Disable the Email Log feature within FluentSMTP settings until the plugin is upgraded.
  • Add a WAF rule that strips HTML metacharacters from recipient name headers on public form submissions.
  • Deactivate FluentSMTP entirely and revert to native wp_mail() delivery if patching cannot be scheduled promptly.
bash
# Upgrade FluentSMTP via WP-CLI on affected hosts
wp plugin update fluent-smtp --version=2.3.0
wp plugin get fluent-smtp --field=version

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.