Overview
I found an improperly exported, system-privileged Miracast service while researching a PEAQ Android TV. A caller can supply an intent extra that makes the service change Wi-Fi Direct state using its own privileges.
MediaTek published the issue in its September 2026 security bulletin and credits Davide Di Matteo in its security acknowledgements. This write-up and the original ADB reproduction are published after coordinated disclosure and vendor approval.
AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H. This replaces
the preliminary 5.1 estimate from the original private report.
The trust boundary, step by step
Who supplies the authority?
An overview of the behaviour documented in the original ADB reproduction. Select a stage to follow the request.
1. The caller provides the request
The recorded ADB command starts the exported MiracastService
with a screen_share extra. This demonstrates a
request from the Android shell identity; it is not a
separately tested ordinary-app reproduction.
2. The service crosses the trust boundary
The analyzed service accepts the extra without checking whether the caller is authorized to control Miracast. The application declares the system shared UID. The missing check lets the caller influence work performed in the service's privileged context.
3. The service uses its own authority
Under the documented state conditions, the service calls
WifiP2pManager.createGroup(). The original log
records a successful group-creation callback. The caller does
not gain a system UID or root shell.
Vulnerability summary
| CVE | CVE-2026-20516 |
|---|---|
| Component |
com.mediatek.androidbox.MiracastService
|
| Vendor severity | Medium |
| Official weakness | CWE-926: Improper Export of Android Application Components |
| Mechanism | Confused deputy / missing access control |
| Vendor-described impact | Local denial of service through a possible escalation of privilege |
| Attack prerequisites | Local code execution with user privileges; no user interaction required |
| Patch identifiers |
ALPS11060069 / DTV04881615
|
| MediaTek issue | MSV-7882 |
| Vendor publication | 7 September 2026 |
| Write-up publication | 11 September 2026 |
Tested environment
| Device | PEAQ Smart TV, model AI PONT |
|---|---|
| OEM / platform | Changhong / MediaTek |
| Operating system | Android TV 11 |
| Security patch level | June 2025 |
| Build | RTMA.250416.192 |
| Kernel | 4.19.116++ |
| Software | V03.06037 |
| Package | com.mediatek.androidbox |
| APK | WFDSinkTest_CH.apk |
| Application version | 1.0.0.16 |
| Declared shared UID | android.uid.system |
These details identify the device used for the original research, not all vulnerable or fixed firmware versions.
Root cause
The manifest analysis recorded in the original report shows that
MiracastService is exported with
android:exported="true", without a permission
protecting access to the service. The application declares
android:sharedUserId="android.uid.system".
The service's onStartCommand() reads the boolean
screen_share intent extra without checking whether
the caller is authorized to control Miracast. The service then
performs operations in its own privileged context. This is the
confused deputy: the caller supplies the request, while the
system service supplies the authority.
In the analyzed implementation, the
screen_share=false path can call
WifiP2pManager.createGroup(). The call is
conditional: screen sharing must be disabled in the service
state, Wi-Fi P2P must be enabled, and no group must already
exist.
The report also records a write to
Settings.Global.putInt(..., "miracast_enable", 1)
in onCreate(). That is an implementation
observation; the log excerpt below does not independently
demonstrate that write.
What the evidence establishes
MediaTek describes a local denial-of-service risk. On the tested
TV, the recorded ADB session shows the service accepting
screen_share=false and successfully creating a
Wi-Fi Direct group.
ADB shell runs as the Android shell identity, not as an ordinary application UID. These commands and logs demonstrate the service behavior from ADB; they do not, by themselves, prove execution from a zero-permission application. This publication does not include a separately tested app-based reproduction.
The excerpt does not establish arbitrary code execution, a root shell, a completed connection from a nearby device, or successful group removal. The caller does not acquire the service's system UID; it induces the service to act on its behalf.
Reproduction
Prerequisites
- The tested vulnerable firmware, or an equivalent build exposing the same component.
- ADB installed on the host and an authorized debugging connection to a TV you own or are authorized to test.
- Wi-Fi and Wi-Fi Direct available on the TV.
- Two terminals. The host commands below use Bash or WSL with access to ADB.
Monitor the service
adb logcat | grep -i -E 'screen_share|createGroup|removeGroup'
Prepare the receiver state
adb shell am startservice -n com.mediatek.androidbox/.MiracastService --ez screen_share true
sleep 3
adb shell am force-stop com.mediatek.androidbox
sleep 2
This is the reset sequence used in the original reproduction. A package force-stop does not guarantee that the Android Wi-Fi subsystem has removed an existing group.
Request group creation
adb shell am startservice -n com.mediatek.androidbox/.MiracastService --ez screen_share false
Look for Enter createGroup followed by
createGroup success. If only
Received screen_share tag appears, the intent was
processed, but group creation has not been demonstrated.
Request cleanup and verify the TV
adb shell am startservice -n com.mediatek.androidbox/.MiracastService --ez screen_share true
Verify that casting and Wi-Fi Direct have returned to the intended state using the TV's controls. Receipt of the intent alone is not proof that cleanup succeeded.
Original logcat evidence
The following logcat excerpt was captured on the tested TV on 10 March 2026. It is evidence from the original research, not a new test performed for this publication.
03-10 19:40:27.458 30288 30288 I MiracastService: Received screen_share tag: false
03-10 19:40:27.460 30288 30288 D MiracastService: Enter createGroup
03-10 19:40:27.530 30288 30288 D MiracastService: createGroup success
03-10 19:41:19.148 30288 30288 I MiracastService: Received screen_share tag: true
The first three lines show parameter receipt, entry into the
group-creation path and a successful callback. The last line
shows receipt of true; it does not include a
removal-success callback.
Remediation
Device owners should obtain firmware containing the relevant fix
from their TV manufacturer. MediaTek identifies the fixes as
ALPS11060069 / DTV04881615; no fixed
PEAQ firmware version has been verified as part of this
write-up.
For maintainers of the component, remove external exposure with
android:exported="false" if external callers are
unnecessary. If trusted cross-application access is required,
protect the service with an appropriate signature-level
permission and enforce authorization before changing receiver
state.
Disclosure timeline
| 10 March 2026 | Original on-device reproduction and logcat capture. |
|---|---|
| 7 September 2026 | MediaTek published its September bulletin containing CVE-2026-20516. |
| 11 September 2026 | Public write-up and PoC, following the disclosure period and vendor approval. |