Severity
Medium
CVSS v3.1
5.5
Weakness
CWE-926
Published
Sep 7, 2026

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.

The public score is CVSS v3.1 5.5 with vector 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.

Step 1 of 3

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

davide@kali:~/CVE-2026-20516 [ADB]

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.

References