---
id: "CVE-2026-109198"
kind: "vulnerability"
aliases: ["CVE-2026-109198"]
title: "WordPress CleanTalk anti-spam plugin: stored XSS via registration email"
severity: "high"
cvss: 7.2
epss: 0.00351
exploited: false
status: "open"
category: "package"
products: []
ecosystems: []
tags: ["package", "self-hosted", "wordpress", "wordpress-plugin"]
not_affected_if: ["plugin-not-installed", "registration-closed"]
published_at: "2026-10-23T05:17:14+00:00"
first_seen_at: "2026-10-23T21:57:32+00:00"
updated_at: "2026-10-25T03:27:46+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-109198", "first_seen_at": "2026-10-23T21:57:32+00:00"}, {"source": "epss", "url": "https://api.first.org/data/v1/epss?cve=CVE-2026-109198", "first_seen_at": "2026-10-24T07:15:51+00:00"}]
---

# WordPress CleanTalk anti-spam plugin: stored XSS via registration email

Versions of the Anti-Spam by CleanTalk WordPress plugin up to and including 6.89.1 do not sanitize the user_email parameter. An unauthenticated attacker who registers with a crafted email can plant a script that runs in an administrator's browser when they open the plugin's spam user tabs.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- Check the installed plugin version in the WordPress admin Plugins screen, or with `wp plugin get cleantalk-spam-protect --field=version` (slug assumed; confirm it).
- Check whether user registration is open under Settings > General > Membership.

## Fix

- Update the Anti-Spam by CleanTalk plugin to a version later than `6.89.1`, as published by the vendor (fixed version unknown from sources).
- Until updated, disable open user registration or the plugin's user-spam scan.

## Timeline

- 2026-10-23T21:57:32+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-109198
- 2026-10-24T07:15:51+00:00 epss https://api.first.org/data/v1/epss?cve=CVE-2026-109198

## From the sources

The Anti-Spam by CleanTalk – Spam Protection Without CAPTCHA plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'user_email' parameter in all versions up to, and including, 6.89.1 due to insufficient input sanitization and output escaping. This makes it possible for unauthenticated attackers to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page. Successful exploitation requires user registration to be open on the site, and script execution is triggered when an Administrator subsequently runs the plugin's user-spam scan and views the resulting Non-checkable users or Spam users tab — the plugin's own documented workflow.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
