Skip to main content

WP Social Login CVE-2026-97344

| EUVDEUVD-2026-91919 MEDIUM
Cross-site Scripting (XSS) (CWE-79)
2026-10-03 Wordfence GHSA-hwwg-qpfc-739q
6.4
CVSS 3.1 · Vendor: Wordfence
View

Attack ChainAIDerived

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

  1. Access
    Register subscriber account
  2. Delivery
    Load wp-admin page to obtain nonce
  3. Exploit
    Call dismiss_ajax_call to set profile_image meta
  4. Execution
    Inject script into display name
  5. Impact
    Admin views avatar, payload executes in browser

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Execution

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Requires an authenticated account with subscriber-level access or above (PR:L) - practically meaning the target site must permit user registration or the attacker must otherwise obtain a low-privilege account. Exploitation specifically depends on invoking the nonce-only dismiss_ajax_call endpoint (whose nonce is accessible to subscribers from any wp-admin page) to set the xs_social_profile_image user-meta flag, which activates the unescaped img output branch in xs_social_get_avatar; the payload is then delivered via the account display name, which core's ENT_NOQUOTES handling leaves unescaped. The plugin (Wp Social Login and Register Social Counter ≤3.2.1) must be installed and active. Impact is realized only when another user - ideally a privileged one - views a page rendering the malicious avatar, so a victim must browse to the affected page for the stored script to fire.

Impact

This is a moderate-severity stored XSS (CVSS 6.4, CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N) that sits well below the top-priority tier despite being network-reachable. The CVSS vector confirms low attack complexity and that only subscriber-level (PR:L) authentication is required, with a scope change (S:C) reflecting that the injected script executes in other users' browser sessions - including potentially administrators. No EPSS score, KEV listing, or public POC was supplied in the intelligence, so exploitation status is 'no public exploit identified at time of analysis'; the finding comes from Wordfence/Wordfence Threat Intel research rather than observed in-the-wild activity. The notable real-world friction is the two-step chaining requirement: an attacker must first abuse the nonce-only dismiss_ajax_call endpoint to set the xs_social_profile_image meta flag, then plant a script payload in their display name. This is a legitimate but conditional self-registered-user attack rather than a wormable, unauthenticated internet-wide threat, so prioritize patching on sites that permit open subscriber registration, but it does not warrant emergency out-of-band response. No signals conflict; the main gap is the absence of EPSS/KEV/POC data to gauge likelihood of weaponization.

Exploit ScenarioDerived

On a WordPress site allowing open user registration, an attacker registers a subscriber account, loads any wp-admin page to obtain the accessible nonce, and invokes the dismiss_ajax_call endpoint to set the xs_social_profile_image meta flag on their own account, activating the unescaped avatar img output branch. They then change their display name to a JavaScript payload, which executes in the browser of any user (e.g. an administrator) who views a page rendering that avatar. No public exploit code is identified at time of analysis, but the chain is fully described in the vendor advisory.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
No patch listed yet 0.2% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Oct 03, 2026

Stored cross-site scripting in the Wp Social Login and Register Social Counter WordPress plugin (all versions up to and including 3.2.1) lets any authenticated account with subscriber-level access or above plant a script payload that executes in the browser of anyone who later views the poisoned avatar. Exploitation is a two-step chain: the attacker first invokes the plugin's nonce-only dismiss_ajax_call AJAX endpoint (the nonce is exposed to subscribers on any wp-admin page) to set the xs_social_profile_image user-meta flag on their own account, then stores a script payload in their display name, which xs_social_get_avatar echoes unescaped into an img alt attribute because WordPress core's ENT_NOQUOTES handling preserves the quotes needed to break out. Scored CVSS 6.4 (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N), it is a moderate-severity issue; no public exploit code has been identified at time of analysis and it is not confirmed actively exploited (CISA KEV), and the impact only materializes when a victim - ideally a privileged user such as an administrator - browses a page rendering the attacker's avatar.

RemediationAI

The upstream fix is referenced by the plugin Trac changeset 3720423 (linked from the Wordfence advisory at https://www.wordfence.com/threat-intel/vulnerabilities/id/40e03292-c2dc-4d34-88f4-0d0631e7b981?source=cve), so the primary action is to update Wp Social Login and Register Social Counter past version 3.2.1 as soon as a tagged patched release is published - note that in the available data this is an upstream fix/commit and a released patched version number has not been independently confirmed, so verify the installed version against the plugin's changelog rather than assuming 3.2.1 is patched. If a fixed release is not yet available or cannot be deployed immediately, the highest-value compensating control is to remove the attacker's entry condition: disable public user registration (Settings > General > Membership) or gate it behind invitation/approval, because the exploit requires a subscriber-level account, though this is disruptive for sites whose business model depends on open sign-up. Where social login and avatar display are not needed, deactivating the plugin entirely eliminates both the nonce-only dismiss_ajax_call endpoint and the unescaped xs_social_get_avatar output branch, at the cost of losing those features. Additional hardening: audit the wp_usermeta table for unexpected xs_social_profile_image flags and review display names for quote characters or script-like strings, and consider restricting low-privilege accounts from appearing on page templates that privileged users frequent. Generic XSS WAF signatures offer limited protection here because the payload is stored in the database and emitted as ordinary attribute text; they should be treated as a stopgap, not a substitute for updating or disabling the plugin.

Affected VersionsENISA

Wp Social Login and Register Social Counter 0 ≤3.2.1

Affected Packages

euvd wp_social_login_and_register_social_counter 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

The root cause is CWE-79 (Improper Neutralization of Input During Web Page Generation, i.e. cross-site scripting) in the roxnor:wp_social_login_and_register_social_counter plugin (CPE cpe:2.3:a:roxnor:wp_social_login_and_register_social_counter). Two separate weaknesses combine. First, the plugin's dismiss_ajax_call handler in lib/notice/notice.php (around lines 384 and 422) is guarded only by a nonce, not by a capability check, so a low-privileged subscriber can reach it and write the xs_social_profile_image user-meta flag on their own account; that flag switches xs_social_get_avatar in app/avatar.php (around line 40) onto a code branch that emits an <img> tag without escaping its attribute values. Second, the payload itself rides in the WordPress display-name field, which core sanitizes with ENT_NOQUOTES; quote characters survive that filtering, so an attacker-controlled display name injected into the unescaped alt attribute breaks out of the attribute context and injects arbitrary markup/script. Because the malicious output is rendered by the plugin's shortcode/avatar path on pages served to other users, the stored script persists server-side until the account or meta is cleaned, and the CVSS scope-changed (S:C) rating reflects that a subscriber-level compromise can project script execution into the security context of higher-privileged viewers. There is no memory-corruption or remote-code-execution component; this is purely a client-side injection issue requiring an authenticated foothold and a second browsing victim.

Know when Wp Social Login And Register Social Counter 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 6.4 MEDIUM
AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N
vuln.today AI 6.4 MEDIUM

Network-reachable stored XSS needing only subscriber auth (PR:L, AC:L); script runs in other users' sessions (S:C) with limited confidentiality/integrity impact and no availability effect.

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

Primary rating from Vendor (Wordfence).

CVSS VectorVendor: Wordfence

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

DescriptionCVE.org

The Wp Social Login and Register Social Counter plugin for WordPress is vulnerable to Stored Cross-Site Scripting via Avatar Alt Attribute via Arbitrary User Meta Write in all versions up to, and including, 3.2.1 due to insufficient input sanitization and output escaping. This makes it possible for authenticated attackers, with subscriber-level access and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page. This requires the attacker to chain two steps: invoking the nonce-only dismiss_ajax_call endpoint (nonce accessible to Subscribers via any wp-admin page) to set the xs_social_profile_image meta flag on their own account, which activates the unescaped img output branch in xs_social_get_avatar, and then setting their display name to a script payload that core's ENT_NOQUOTES handling preserves unescaped.

Threat Intelligence Overview

EPSS Score
0.2%
Top 92% exploitable
Prevalence
Low
niche third-party WordPress social-login plugin, limited deployment footprint
Data Quality
5 sources
Confidence: Medium

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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available No
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
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
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

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

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

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