# Anti-Spam by CleanTalk <= 6.90 - Authenticated (Subscriber+) Stored Cross-Site Scripting via Business Directory Field Display

- **ID:** WPSEC-2026-2027
- **Plugin:** Anti-Spam, Spam FireWall by CleanTalk (`cleantalk-spam-protect`), https://wordpress.org/plugins/cleantalk-spam-protect/
- **Affected versions:** from 6.47 before 6.91
- **Fixed in:** 6.91 (Update to 6.91 or later.)
- **Severity:** Medium 4.9 (CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:C/C:L/I:L/A:N)
- **Weakness:** CWE-79
- **Usage among sites WPSec scans:** plugin High, affected versions High (as of 2026-10-30)
- **Attack surface analysis:** https://attacksurface.wpsec.com/plugin/cleantalk-spam-protect
- **Fix released:** 2026-10-29
- **Published:** 2026-10-30
- **URL:** https://wpsec.com/vuln/WPSEC-2026-2027/

## Description

The Anti-Spam, Spam FireWall by CleanTalk plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the Business Directory Plugin field display integration of the Contacts Encoder in all versions up to, and including, 6.90, due to ContactsEncoder::modifyFormFieldDisplay() running html_entity_decode() on the whole escaped field HTML whenever it contains 'mailto:'. This turns escaped markup back into live HTML. This makes it possible for authenticated attackers with Subscriber-level access and above, or unauthenticated attackers where the directory allows guest listings, to inject arbitrary web scripts into directory listings that run when a user views them.

## References

- https://wpsec.com/vuln/WPSEC-2026-2027/
- https://plugins.svn.wordpress.org/cleantalk-spam-protect/tags/6.91/
- https://wordpress.org/plugins/cleantalk-spam-protect/

Source: WPSec, https://wpsec.com/vuln/WPSEC-2026-2027/

License: CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/). Free to use, share and adapt, also commercially, if you credit WPSec and link to this advisory.
