# Limit Login Attempts Reloaded <= 3.4.0 - Unauthenticated Two-Factor Authentication Bypass via Failed Two-Factor Handshake

- **ID:** WPSEC-2026-2633
- **Plugin:** Limit Login Attempts Security – Brute Force Protection, 2FA, Firewall & Login Security (`limit-login-attempts-reloaded`), https://wordpress.org/plugins/limit-login-attempts-reloaded/
- **Affected versions:** from 3.0.0 before 3.4.1
- **Fixed in:** 3.4.1 (Update to 3.4.1 or later.)
- **Severity:** High 7.4 (CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N)
- **Weakness:** CWE-636
- **Usage among sites WPSec scans:** plugin Medium, affected versions Medium (as of 2026-11-06)
- **Attack surface analysis:** https://attacksurface.wpsec.com/plugin/limit-login-attempts-reloaded
- **Fix released:** 2026-11-05
- **Published:** 2026-11-06
- **URL:** https://wpsec.com/vuln/WPSEC-2026-2633/

## Description

The Limit Login Attempts Security plugin for WordPress is vulnerable to Two-Factor Authentication Bypass via the two-factor login handshake in all versions up to, and including, 3.4.0, due to the two-factor flow failing open: whenever the handshake with the two-factor service did not succeed (handshake rate limit reached, repeated attempt in the same request, missing provider, a request payload that could not be encoded, or a rejected or unusable response), the check returned without an error and WordPress completed a password-only login. The handshake rate limit can be reached on purpose by repeating the login, and the raw X-Forwarded-For header was placed unsanitized into the handshake payload, so invalid UTF-8 caused JSON encoding to fail. This makes it possible for unauthenticated attackers who know the password of a 2FA-protected account to deliberately make the handshake fail and log in without the second factor. Exploitation requires two-factor authentication to be enabled for the targeted user's role and the attacker to know the account password.

## References

- https://wpsec.com/vuln/WPSEC-2026-2633/
- https://plugins.svn.wordpress.org/limit-login-attempts-reloaded/tags/3.4.1/
- https://wordpress.org/plugins/limit-login-attempts-reloaded/

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

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.
