Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Unauthenticated, low-complexity injection of the silent parameter into os.system yields full code execution (C/I/A:H); AV:N is retained per the input though the LAN-only API service could arguably be AV:A.
Primary rating from Vendor (TuranSec).
CVSS VectorVendor: TuranSec
Lifecycle Timeline
2DescriptionCVE.org
An OS command injection vulnerability in duhow/xiaoai-patch through commit fb07049 allows a remote attacker to execute arbitrary system commands on Xiaomi smart speakers running the patch. The /mute and /unmute endpoint handlers in api/main.py pass the user-supplied silent query parameter directly to os.system() without sanitization, enabling command injection via shell metacharacters.
AnalysisAI
OS command injection in duhow/xiaoai-patch (through commit fb07049), a community firmware-patch project for Xiaomi smart speakers, lets remote attackers run arbitrary shell commands on the device. The /mute and /unmute HTTP handlers in api/main.py pass the attacker-controlled silent query parameter straight into os.system(), so shell metacharacters break out of the intended command. Rated CVSS 9.8, but there is no public exploit identified at time of analysis and it is not on CISA KEV.
Technical ContextAI
The affected component is the on-device REST API (api/main.py) shipped with xiaoai-patch, a Python service that exposes device-control endpoints on Xiaomi (Xiao AI) smart speakers. The root cause is CWE-78 (Improper Neutralization of Special Elements used in an OS Command): user input from the silent query parameter is concatenated into a string handed to Python's os.system(), which invokes /bin/sh -c and therefore interprets shell metacharacters such as ;, |, &&, backticks, and $(). Because the value is never validated, escaped, or passed via a safe argument-array API (e.g. subprocess with a list and no shell), any injected metacharacter is executed by the shell with the privileges of the API process, which on an embedded speaker is typically root or a highly privileged account.
RemediationAI
No vendor-released patch identified at time of analysis - the references point only to the project repository (https://github.com/duhow/xiaoai-patch) and the vulnerable file (https://github.com/duhow/xiaoai-patch/blob/main/api/main.py), with no fixed version or advisory. The concrete code fix is to stop passing the silent parameter to os.system(): replace the shell call with a no-shell argument array (e.g. subprocess.run([...], shell=False)) and strictly validate silent against an allowlist (it should only ever be a boolean/enumerated state, so reject anything other than expected values). As compensating controls until a fix is applied: restrict network access to the API so only trusted local management hosts can reach the /mute and /unmute endpoints (host firewall / bind to loopback), ensure the speaker's API port is not port-forwarded or exposed to the internet or untrusted Wi-Fi segments, and place the device on an isolated IoT VLAN - the trade-off is that legitimate remote/automation control of mute state will also be blocked until the endpoints are secured. Given it is a community patch, monitor the upstream repository for a corrected commit and rebuild from a fixed revision.
More in Xiaoai Patch
View allSame weakness CWE-78 – OS Command Injection
View allSame technique Command Injection
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-55226
GHSA-r5pv-g2v7-cgpc