CVE-2026-86148
Executive Summary
CVE-2026-86148 is a critical, unauthenticated command injection vulnerability affecting the Tenda CP3 IP camera (firmware version 27.5.57.101). The flaw resides in the SystemAsh function of the /Apis/system.c file within the Kylin component, where improper sanitization of the AlarmVoiceURL argument permits remote OS command execution. With a CVSS score of 9.1 (Critical), the vulnerability allows an attacker with high privileges to execute arbitrary system commands, leading to full device compromise, network pivoting, and potential lateral movement into internal corporate networks. As of this writing, the vulnerability remains unpatched (patch confidence 0/4), with no vendor advisory, CISA KEV listing, or public exploit available, indicating that affected devices are exposed and vulnerable to targeted attacks the moment exploit code becomes public. Security teams should treat any Tenda CP3 camera on the perimeter or internal network as an immediate risk.
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
Technical Analysis
Affected Component & Attack Surface
The vulnerability is located in the web-based administrative interface of the Tenda CP3 camera. The affected firmware version is 27.5.57.101, which employs the "Kylin" subsystem — a component responsible for managing system alert and audio-visual alarm functionality. The vulnerable code path is reachable via the SystemAsh function, implemented in the file Apis/system.c. This API endpoint accepts a parameter named AlarmVoiceURL, which is designed to provide a URL from which the device may fetch an audio alert file or message.
Vulnerability Mechanism
Per the NVD description, the AlarmVoiceURL argument is passed without adequate sanitization or context-aware validation before being processed by a system-level command or shell invocation. This is a classic OS command injection vulnerability (CWE-77). Because the argument ultimately reaches an operating system shell, an attacker can embed shell metacharacters (e.g., semicolons, pipes, ampersands, or command substitution syntax) within the AlarmVoiceURL value. When the underlying system call constructs a command such as a media player invocation or a URL-fetching utility, the injected payload would be interpreted by the shell and executed with the privileges of the camera's web daemon process.
It is important to note that the NVD description does not explicitly state the precise shell command construction pattern; the absence of input sanitization at the API boundary is sufficient to categorize this as CWE-77. In a typical router/IP-camera implementation of this class, the application might internally execute a command like wget <AlarmVoiceURL> or curl <AlarmVoiceURL> to download the audio clip. An attacker who supplies http://evil.com/audio.wav;reboot (hypothetical — not provided in NVD data) could cause the injected command to execute after the URL fetch.
Privilege Model & Preconditions
The CVSS vector is: CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H.
- Attack Vector: Network — The vulnerable API is reachable over the network, meaning the function is exposed via the camera's network interface (HTTP API) and is not limited to local access.
- Attack Complexity: Low — No special conditions such as race windows or unusual system states are required; the attack succeeds reliably when crafted input is delivered.
- Privileges Required: High — The attacker must hold a valid, high-privilege account on the device web interface (administrator credentials) to reach the
SystemAshendpoint. This requirement significantly narrows the pool of would-be attackers, but criticality remains high because default credentials are often unchanged in field-deployed devices, and brute-forcing weak admin passwords over the network is feasible in many deployments. - Scope: Changed — Compromise of the camera can expand blast radius: a shell on the camera can lead to pivoting to other subnet hosts.
- Impact: High on Confidentiality, Integrity, and Availability — Full OS command execution grants control over the device's filesystem, configuration, audio/video streams, and ability to brick the device or deploy persistent malware.
Network Exposure Angle
Tenda CP3 cameras are typically deployed in enterprise and small-business premises as low-cost surveillance units. They frequently reside on internal management VLANs and are exposed to the internet when users enable remote viewing (P2P/cloud access) without adequate firewall rules. The API is served over HTTP, and in many cases, the administrative console remains accessible on TCP port 80/8080. The remote reachability of the API combined with the critical command execution flaw makes this an attractive target for botnets (e.g., Mirai variants), which routinely scan for exposed IoT cameras with known administrative weaknesses.
Exploitation Scenarios
Note: No public PoC, exploit code, or Nuclei template exists at the time of this report. The attack chain below is inferred strictly from the vulnerability class, the CVSS preconditions, and the documented file/function paths provided by the NVD.
1. Reconnaissance & Target Identification
An attacker would first scan network address space for Tenda CP3 devices using services such as Shodan. Identification is typically based on HTTP banners, device web-interface login pages bearing the "Tenda" brand, or specific TR-069/UPnP fingerprints. Because this CVE requires authenticated access (PR:H), the attacker simultaneously enumerates for devices that:
- Have the default admin/admin credentials unchanged, or
- Permit dictionary/brute-force attacks at the admin login (often no lockout policies on embedded devices), or
- Are exposed to the internet, enabling credential stuffing and brute force from distributed hosts.
2. Triggering the Vulnerability (Authentication & API Call)
Once valid admin credentials are obtained:
- The attacker authenticates to the camera's web management interface.
- The attacker crafts an HTTP request to the vulnerable endpoint. The request targets the
SystemAshfunction, which is mapped within the/Apis/system.chandler (the file path is referenced in the NVD description). The endpoint processes theAlarmVoiceURLquery or POST parameter. - The attacker injects shell metacharacters into
AlarmVoiceURL. At a class level, the payload may include:- Command chaining (
;,&&,||, newline) to execute commands sequentially, or - Command substitution (
$(command)or backticks) to nest a command, or - Pipe redirection to send command output to a network listener.
- Command chaining (
- Because the underlying application constructs a shell command that incorporates this unfiltered value, the operating system executes the attacker's injected command along with the originating logic (e.g., downloading the alarm voice file).
3. Payload Execution & Persistence
At the class level, an attacker with shell access can:
- Download and execute arbitrary binaries (Mirai botnet payload, coin miner, proxy/SSH tunneling tool) onto the camera's storage file system.
- Overwrite the firmware or configuration to ensure persistence across reboots.
- Disable logging and security features to evade detection.
- Exfiltrate stored audio/video clips or retrieve saved admin credentials used by the camera for other network services.
4. Post-Exploitation Impact
Because the CVSS scope is "Changed" and the camera sits on an internal management network, the attacker can use the compromised device as a foothold and perform network reconnaissance: ARP scanning, TCP port scanning of adjacent hosts, and attempts to pivot toward higher-value servers (domain controllers, database servers). Since the camera OS is stripped-down Linux, tools like nc, iptables, or busybox (if present) allow for the creation of reverse tunnels that bypass the perimeter firewall.
Impact Assessment
Business Impact
- Confidentiality (High): Full shell access yields access to stored video footage, which can constitute a serious privacy/regulatory breach (GDPR, HIPAA, workplace surveillance laws). Private network segments become iterable for additional data collection.
- Integrity (High): The attacker can alter the camera's alarm configuration, disable motion detection/recording, inject fake video feeds, or lock the original administrator out.
- Availability (High): The attacker can brick the device via firmware corruption, reboot-loop it for denial-of-service, or recruit it as a bot in DDoS armies.
Affected Systems
- Tenda CP3 running firmware version 27.5.57.101 — any device on this exact version is exploitable once credentials for the admin interface are obtained.
- Devices running other firmware versions may share the same vulnerable code path; without a vendor patch or changelog from Tenda, the affected-version range cannot be positively constrained.
Blast Radius & Risk Assessment
- CVSS 9.1 (Critical) reflects the high overall impact despite the High Pre-Requisite of Privileged Access. The practical severity remains high because default admin credentials (often
admin/adminon low-end Tenda cameras) drastically lower the barrier for attackers, making automated exploitation campaigns feasible once a public PoC emerges. - The lack of a KEV listing from CISA indicates no known in-the-wild exploitation has been officially recorded at time of publication — but with the EPSS not yet scored and zero patch availability, the window of exposure is expanding.
- Supply chain risk is limited as there are no OSV package dependencies, but the physical security function (camera/surveillance) means a compromised device directly undermines physical security programs that rely on its integrity.
Detection Guidance
The following detection content is tailored to identify exploitation attempts targeting the vulnerable AlarmVoiceURL parameter. These are realistic prototypes intended to baseline detection for all command injection payloads against this API.
Sigma Rule
title: Tenda CP3 AlarmVoiceURL Command Injection Attempt
id: 6fb4d7bc-9a2b-4e91-a4f5-c3d5a8b0a4c1
status: experimental
description: Detects crafted HTTP requests targeting the Tenda CP3 SystemAsh API endpoint with shell metacharacters in the AlarmVoiceURL parameter.
references:
- https://nvd.nist.gov/vuln/detail/CVE-2026-86148
author: Valtersit Threat Intelligence
date: 2026/06/01
logsource:
category: webserver
product: generic
detection:
selection_path:
cs-uri-query|contains:
- 'SystemAsh'
- 'AlarmVoiceURL='
selection_payload:
cs-uri-query|contains:
- ';'
- '&&'
- '|'
- '$('
- '`'
- '%3B' # URL-encoded semicolon
- '%26%26' # URL-encoded &&
- ';reboot'
- ';cat /etc/passwd'
- ';wget '
- ';curl '
- ';id'
condition: selection_path and selection_payload
fields:
- clientip
- cs-uri-query
- cs-method
falsepositives:
- Legitimate URL parameters to AlarmVoiceURL containing semicolons (unlikely but possible in rare URL scheme usage)
- High false-positive potential on generic '|' character; analysts should correlate with username/admin account activity
level: high
tags:
- attack.t1190
- cve.2026-86148
- cwe.77
YARA Rule
rule Tenda_CP3_AlarmVoiceURL_Command_Injection
{
meta:
author = "Valtersit Threat Intelligence"
description = "Detects command injection payloads targeting the Tenda CP3 SystemAsh API function"
date = "2026-06-01"
cve_id = "CVE-2026-86148"
severity = "critical"
reference = "https://nvd.nist.gov/vuln/detail/CVE-2026-86148"
strings:
$path = "SystemAsh" nocase
$param = "AlarmVoiceURL=" nocase
$semicolon = ";" ascii
$double_ampersand = "&&" ascii
$pipe = "|" ascii
$cmd_subst_a = "$(" ascii
$cmd_subst_b = "`" ascii
$url_encoded_semicolon = "%3B" ascii
$reboot = "reboot" nocase ascii
$passwd = "/etc/passwd" ascii
$id_cmd = "/bin/id" ascii
$wget = "wget" nocase ascii
$curl = "curl" nocase ascii
$tool_nc = "nc " ascii
condition:
uint16(0) == 0x0d0a and $path and $param and
(
any of ($semicolon, $double_ampersand, $pipe, $cmd_subst_a, $cmd_subst_b, $url_encoded_semicolon) or
any of ($reboot, $passwd, $id_cmd, $wget, $curl, $tool_nc)
)
}
Suricata IDS Rule
alert http any any -> $HOME_NET any (
msg:"CVE-2026-86148 Tenda CP3 SystemAsh AlarmVoiceURL Command Injection Attempt";
flow:established,to_server;
http.uri;
content:"SystemAsh"; nocase; http_uri;
content:"AlarmVoiceURL"; nocase; http_uri;
pcre:"/AlarmVoiceURL=.*(?:;|\|\||&&|\$\(|`|%3B|%7C)/Ui";
sid:202686148;
rev:1;
metadata:created_at 2026_06_01, updated_at 2026_06_01, cve CVE-2026-86148, cwe CWE-77;
reference:url,nvd.nist.gov/vuln/detail/CVE-2026-86148;
classtype:attempted-admin;
)
Elastic Detection
// Elastic EQL - Detection of HTTP request targeting Tenda CP3 vulnerable API
// Assumes web access logs indexed into Elasticsearch with common fields (url.path, url.query, user.name, source.ip)
sequence by source.ip
[ network where network.protocol == "http" and
url.path like~ "*SystemAsh*" and
url.query like~ "*AlarmVoiceURL*" and
(url.query like~ "*;*" or
url.query like~ "*|*" or
url.query like~ "*&&*" or
url.query like~ "*$(*" or
url.query like~ "*`*")
]
[ authentication where event.outcome == "success" and user.name == "admin" ]
Splunk SPL Query
index=web sourcetype=access_combined
| where like(uri_path, "%SystemAsh%")
| where like(uri_query, "%AlarmVoiceURL%")
| regex uri_query="(?i)(AlarmVoiceURL=.*(;|\|\||&&|\$\(|\{|`|%3B|%7C))"
| stats count earliest(_time) latest(_time) by src_ip, uri_query, user, status
| where count > 0
Wazuh OSSEC Rule
<group name="cve-2026-86148,">
<rule id="788026" level="15">
<decoded_as>json</decoded_as>
<field name="url">\.SystemAsh\.</field>
<field name="url">AlarmVoiceURL</field>
<regex>\;|\|\||\&\&|\$\(|`|\%3B|\%7C</regex>
<description>Tenda CP3 (CVE-2026-86148) - AlarmVoiceURL OS command injection attempt detected</description>
<group>attack,execution,</group>
<mitre>
<id>T1059</id>
</mitre>
<options>no_full_log</options>
</rule>
</group>
Mitigation & Patch Guidance
Patch Status: UNPATCHED — Patch Confidence 0/4. No vendor fix from Tenda, no third-party backport, no OSV patched package, and no workaround documented by the vendor. The CVE was published with no coordinated disclosure date, leaving device owners without formal remediation guidance.
Immediate Mitigations (until vendor issues firmware update):
Restrict Network Access to Admin Interface:
- Block inbound and outbound access to camera's management ports (HTTP 80/8080, HTTPS 443) at the perimeter firewall.
- Place cameras on a dedicated IoT VLAN with strict ACLs; forbid internet egress except to the P2P/cloud service domains required for remote monitoring — and only if telemetry is strictly business-critical, consider disabling remote cloud access entirely.
Harden Administrative Credentials:
- Immediately replace default admin credentials with strong unique passwords (no common default
admin/admin). - If the device supports it, enable account lockout policies to prevent brute-force; if not, front the management API with an authentication proxy (e.g., reverse proxy enforcing MFA) so raw camera web server is not directly reachable.
- Immediately replace default admin credentials with strong unique passwords (no common default
Segmentation & Peripheral Controls:
- Ensure cameras cannot initiate outbound shells (
telnet,ssh, raw TCP to arbitrary ports) — block outbound ports 22, 23, 4444, and all ephemeral traffic not destined for known monitoring/NTP/DNS servers.
- Ensure cameras cannot initiate outbound shells (
Network Monitoring:
- Deploy the Suricata/Sigma/Wazuh detection content above on the network choke points or web logs where camera traffic might transit. Alert on any request to
SystemAshcontaining shell metacharacters.
- Deploy the Suricata/Sigma/Wazuh detection content above on the network choke points or web logs where camera traffic might transit. Alert on any request to
Patch/Upgrade Steps:
- Monitor Tenda’s official firmware support page for the CP3 and apply the security update immediately when released for version 27.5.57.101 (or newer).
- Since no patch verifiable from the NVD data exists, download only from the vendor’s signed channel; validate checksums to avoid trojanized firmware.
- Maintain a remediation timeline: if firmware remains unpatchable after 30 days from public disclosure of an exploit, physically isolate the camera from production networks until a replacement device (with maintained firmware lineage) is deployed.
Long-term Hardening:
- Replace affected CP3 cameras with enterprise-grade camera firmware that receives timely maintenance updates and has built-in input validation at the API layer (encode-all-output, strict allowlist for URL values).
- Adopt a zero-trust architecture for IoT: each camera authenticates to the management plane with per-device certificates, not shared passwords.
- Procure surveillance equipment only from vendors with demonstrated security response SLAs and CVE-coordinated disclosure programs.
- Implement centralized logging for the web interface and periodic auditing of camera settings for injected configuration artifacts.
References
- NVD Entry: https://nvd.nist.gov/vuln/detail/CVE-2026-86148 — Primary CVE metadata, CVSS, CWE mapping (CWE-77).
- MITRE CWE-77: https://cwe.mitre.org/data/definitions/77.html — Command Injection weakness ontology.
- Tenda Product Page (tenda.com / tendacn.com) — Search for firmware updates / advisory for CP3; no formal advisory posted as of writing (need to validate manually via secure channel).
- CISA Known Exploited Vulnerabilities Catalog: https://www.cisa.gov/known-exploited-vulnerabilities-catalog — CVE-2026-86148 is not listed at this time.
- Shodan Search Guidance: Use search string
http.title:"Tenda"orproduct:"Tenda CP3"to identify exposed devices for exposure reduction. Note: device model may not always be present in network fingerprints.
Threat Actor Campaign Evidence: No public information ties CVE-2026-86148 to any specific threat actor campaign or in-the-wild exploitation at the time of this writing. The absence of a CISA KEV entry and EPSS score placeholder indicate the vulnerability likely predates active weaponization — but given the historical pattern of IoT command-injection vulnerabilities being folded into botnet exploits (e.g., Mirai variants targeting routers/cameras), the emergence of public exploit code should be expected and treated as an emergency triggering immediate deployment of the detection rules above.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.