Stored cross-site scripting in Stop Spammers Classic WordPress plugin
Key facts
- Attack vector
- Network
- Privileges required
- None
- User interaction
- Required
- Attack complexity
- High
- Impact type
- Cross-site scripting
- Confidentiality · integrity · availability
- Low · Low · None
- Fix status
- No fix listed
Attack profile from CVSS 3.1 · CNA. Fix status from CNA. Impact type from CWE-79.
Summary
The Stop Spammers Classic plugin for WordPress is affected up to and including 2026.6. A missing escape of single quotes lets a stored author value break out of a JavaScript string on the Log Report admin page (CWE-79). An unauthenticated remote attacker can store a crafted author value that runs script in the browser of an administrator who clicks the Report to SFS link, when the StopForumSpam API key is configured.
Written with Claude Haiku 5.5 from the sources below · 2026-11-07
Description from the CNA
The Stop Spammers Classic plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'author' POST parameter in versions up to, and including, 2026.6. An unauthenticated POST handled on init stores the attacker-supplied author field (after sanitize_text_field, which does not escape single quotes) into the ss_stop_sp_reg_stats option history. The Log Report admin page then renders that stored value inside a single-quoted JavaScript string within a double-quoted onclick attribute using esc_js(); because esc_js() uses _wp_specialchars with ENT_COMPAT it does not escape single quotes, allowing the stored value to break out of the JS string literal and inject arbitrary JavaScript. This makes it possible for unauthenticated attackers to inject arbitrary web scripts in pages that execute whenever an administrator with manage_options access clicks the 'Report to SFS' link on an attacker-poisoned log row (the StopForumSpam API key must be configured for that link to be rendered — the field is empty by default). Successful exploitation additionally requires an action by an administrator — the attacker cannot trigger the vulnerability on their own.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- None
- Automatable
- No
- Technical impact
- Partial
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
Remediation
The sources list no fixed version for Stop Spammers Classic.
Written with Claude Haiku 5.5 from the sources below · 2026-11-07
Timeline
- 2026-11-07 Threatist record created from CVE-2026-120477
- 2026-11-07 Alias added: GHSA-xvc3-wff6-474c
- 2026-11-07 CISA SSVC decision points changed
References
Other 6
- https://www.wordfence.com/threat-intel/vulnerabilities/id/29fe0bc9-b460-4158-86fc-ad2980cc827a?source=cve
- https://plugins.trac.wordpress.org/browser/stop-spammer-registrations-plugin/trunk/settings/ss_reports.php#L165
- https://plugins.trac.wordpress.org/browser/stop-spammer-registrations-plugin/trunk/stop-spammer-registrations-new.php#L600
- https://plugins.trac.wordpress.org/browser/stop-spammer-registrations-plugin/trunk/stop-spammer-registrations-new.php#L323
- https://plugins.trac.wordpress.org/browser/stop-spammer-registrations-plugin/trunk/classes/ss_log_bad.php#L63
- https://plugins.trac.wordpress.org/changeset?reponame=&old=3784211%40stop-spammer-registrations-plugin&new=3784211%40stop-spammer-registrations-plugin
More webguyio vulnerabilities
- TI-2025-02564 Cross-site request forgery in webguyio Stop Spammers Classic CVSS 3.1MEDIUM 5.4
- TI-2023-06461 Stop Spammers Security | Block Spam Users, Comments, Forms <= 2024.4 - Cross-Site Request Forgery (CSRF) via sfs_process CVSS 3.1MEDIUM 5.4
- TI-2026-01765 Dam Spam <= 1.0.8 - Cross-Site Request Forgery to Arbitrary Pending Comment Deletion CVSS 3.1MEDIUM 4.3
- TI-2025-13500 Stop Spammers Classic <= 2026.1 - Cross-Site Request Forgery via Email Allowlist CVSS 3.1MEDIUM 4.3
Sources
- CVE-2026-120477 · CVE Program
- CVE-2026-120477 · NVD
- FIRST EPSS
- GHSA-xvc3-wff6-474c · GitHub Advisory Database · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences