CVE-2026-76877
WPML Multilingual CMS <= 4.9.7 - Unauthenticated Authentication Bypass in Language-per-Domain SSO via 'wpml_sso_token_domain' Parameter
The WPML Multilingual CMS plugin for WordPress is vulnerable to Authentication Bypass via Race Condition in versions up to, and including, 4.9.7. This is due to the process_iframe_request function's language-per-domain SSO handler generating the cross-domain sign-in token via wp_create_nonce('wpml_sso') on the logout landing page, where the browser has already discarded its authentication cookies — so wp_get_session_token() returns an empty string and the token collapses to the shared anonymous nonce for the current 12-hour tick rather than a user-bound secret — and then storing it in the wpml_sso_user_<token>_<sha256('wpml_sso'.$domain)> transient mapped to the victim's user_id with no binding to the specific sign-out action or requesting client. Because an unauthenticated attacker can independently derive the identical token by triggering the logout confirmation flow on wp-login.php?action=logout, and because the is_iframe_request() gate conditions (the per-domain SSO started transient and domain-hash derived from the public constant SSO_NONCE) are fully computable within the 60-second SSO_TIMEOUT window, an unauthenticated attacker can submit the forged wpml_sso_token_domain parameter with a wpml_user_signed_in status to a secondary language-domain endpoint before the legitimate wpml_user_signed_out iframe fires, causing WordPress authentication cookies to be issued for the victim. This makes it possible for unauthenticated attackers to gain access to accounts of users — including administrators — who are actively in the process of logging out during the race window.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- High
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- High
- Integrity
- High
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
8.1
WPML Multilingual CMS <= 4.9.7 - Unauthenticated Authentication Bypass in Language-per-Domain SSO via 'wpml_sso_token_domain' Parameter
The WPML Multilingual CMS plugin for WordPress is vulnerable to Authentication Bypass via Race Condition in versions up to, and including, 4.9.7. This is due to the process_iframe_request function's language-per-domain SSO handler generating the cross-domain sign-in token via wp_create_nonce('wpml_sso') on the logout landing page, where the browser has already discarded its authentication cookies — so wp_get_session_token() returns an empty string and the token collapses to the shared anonymous nonce for the current 12-hour tick rather than a user-bound secret — and then storing it in the wpml_sso_user_<token>_<sha256('wpml_sso'.$domain)> transient mapped to the victim's user_id with no binding to the specific sign-out action or requesting client. Because an unauthenticated attacker can independently derive the identical token by triggering the logout confirmation flow on wp-login.php?action=logout, and because the is_iframe_request() gate conditions (the per-domain SSO started transient and domain-hash derived from the public constant SSO_NONCE) are fully computable within the 60-second SSO_TIMEOUT window, an unauthenticated attacker can submit the forged wpml_sso_token_domain parameter with a wpml_user_signed_in status to a secondary language-domain endpoint before the legitimate wpml_user_signed_out iframe fires, causing WordPress authentication cookies to be issued for the victim. This makes it possible for unauthenticated attackers to gain access to accounts of users — including administrators — who are actively in the process of logging out during the race window.
- Record
CVE-2026-76877- CVSS 3.1
- 8.1 High
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-287
- Updated
- 2026-11-11
EUVDEUVD-2026-120823
8.1
The WPML Multilingual CMS plugin for WordPress is vulnerable to Authentication Bypass via Race Condition in versions up to, and including, 4.9.7. This is due to the process_iframe_request function's language-per-domain SSO handler generating the cross-domain sign-in token via wp_create_nonce('wpml_sso') on the logout landing page, where the browser has already discarded its authentication cookies — so wp_get_session_token() returns an empty string and the token collapses to the shared anonymous nonce for the current 12-hour tick rather than a user-bound secret — and then storing it in the wpml_sso_user_<token>_<sha256('wpml_sso'.$domain)> transient mapped to the victim's user_id with no binding to the specific sign-out action or requesting client. Because an unauthenticated attacker can independently derive the identical token by triggering the logout confirmation flow on wp-login.php?action=logout, and because the is_iframe_request() gate conditions (the per-domain SSO started transient and domain-hash derived from the public constant SSO_NONCE) are fully computable within the 60-second SSO_TIMEOUT window, an unauthenticated attacker can submit the forged wpml_sso_token_domain parameter with a wpml_user_signed_in status to a secondary language-domain endpoint before the legitimate wpml_user_signed_out iframe fires, causing WordPress authentication cookies to be issued for the victim. This makes it possible for unauthenticated attackers to gain access to accounts of users — including administrators — who are actively in the process of logging out during the race window.
- Record
EUVD-2026-120823- CVSS 3.1
- 8.1 High
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-11
GitHub AdvisoriesGHSA-2mcx-4x33-hmm3
8.1
The WPML Multilingual CMS plugin for WordPress is vulnerable to Authentication Bypass via Race...
The WPML Multilingual CMS plugin for WordPress is vulnerable to Authentication Bypass via Race Condition in versions up to, and including, 4.9.7. This is due to the process_iframe_request function's language-per-domain SSO handler generating the cross-domain sign-in token via wp_create_nonce('wpml_sso') on the logout landing page, where the browser has already discarded its authentication cookies — so wp_get_session_token() returns an empty string and the token collapses to the shared anonymous nonce for the current 12-hour tick rather than a user-bound secret — and then storing it in the wpml_sso_user_<token>_<sha256('wpml_sso'.$domain)> transient mapped to the victim's user_id with no binding to the specific sign-out action or requesting client. Because an unauthenticated attacker can independently derive the identical token by triggering the logout confirmation flow on wp-login.php?action=logout, and because the is_iframe_request() gate conditions (the per-domain SSO started transient and domain-hash derived from the public constant SSO_NONCE) are fully computable within the 60-second SSO_TIMEOUT window, an unauthenticated attacker can submit the forged wpml_sso_token_domain parameter with a wpml_user_signed_in status to a secondary language-domain endpoint before the legitimate wpml_user_signed_out iframe fires, causing WordPress authentication cookies to be issued for the victim. This makes it possible for unauthenticated attackers to gain access to accounts of users — including administrators — who are actively in the process of logging out during the race window.
- Record
GHSA-2mcx-4x33-hmm3- CVSS 3.1
- 8.1 High
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-287
- Updated
- 2026-11-11
NVD
8.1
The WPML Multilingual CMS plugin for WordPress is vulnerable to Authentication Bypass via Race Condition in versions up to, and including, 4.9.7. This is due to the process_iframe_request function's language-per-domain SSO handler generating the cross-domain sign-in token via wp_create_nonce('wpml_sso') on the logout landing page, where the browser has already discarded its authentication cookies — so wp_get_session_token() returns an empty string and the token collapses to the shared anonymous nonce for the current 12-hour tick rather than a user-bound secret — and then storing it in the wpml_sso_user_<token>_<sha256('wpml_sso'.$domain)> transient mapped to the victim's user_id with no binding to the specific sign-out action or requesting client. Because an unauthenticated attacker can independently derive the identical token by triggering the logout confirmation flow on wp-login.php?action=logout, and because the is_iframe_request() gate conditions (the per-domain SSO started transient and domain-hash derived from the public constant SSO_NONCE) are fully computable within the 60-second SSO_TIMEOUT window, an unauthenticated attacker can submit the forged wpml_sso_token_domain parameter with a wpml_user_signed_in status to a secondary language-domain endpoint before the legitimate wpml_user_signed_out iframe fires, causing WordPress authentication cookies to be issued for the victim. This makes it possible for unauthenticated attackers to gain access to accounts of users — including administrators — who are actively in the process of logging out during the race window.
- Record
CVE-2026-76877- CVSS 3.1
- 8.1 High
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-287
- Updated
- 2026-11-11
Affected products
History
| Recorded | Changed | Sources |
|---|---|---|
| references | GitHub Advisories | |
| references | CVE List, NVD | |
| published | EUVD | |
| published | EUVD | |
| aliases, references | GitHub Advisories | |
| aliases, published | EUVD | |
| first indexed | CVE List |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-76877 is a high vulnerability (CVSS 8.1) in Wpml Multilingual Cms, published November 10, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.33%, the 26th percentile. No source names a fixed version.