
Non-destructive security assessment tool for CVE-2026-73296, checking authentication boundaries on exposed Mobile MCP HTTP servers (ports 8020/8021) to detect potential unauthorized Android device access.
UFO-Vuln 💥
Unauthenticated Mobile MCP access can expose Android screen data and provide remote UI-control capabilities through ADB.
This repository is intended for authorized security research, vulnerability validation, defensive testing, and controlled laboratory environments only.
The included checker is designed to perform non-destructive authentication-boundary checks.
It does not:
CVE: CVE-2026-73296
Product: Microsoft UFO
Component: Mobile MCP HTTP Servers
Severity: Critical
CVSS v3.1: 9.4
Affected versions: <= v3.0.7
Officially patched versions: None listed by the Microsoft UFO advisory at the time of this documentation.
CWE:
The vulnerability affects UFO's Mobile MCP data-collection and action servers when they are exposed over a network without appropriate authentication.
The official advisory identifies the vulnerable implementation as:
ufo/client/mcp/http_servers/mobile_mcp_server.py
The affected services expose Streamable HTTP MCP interfaces that can interact with an ADB-connected Android device.
If the services are remotely reachable and authentication is not enforced, an unauthenticated network client may be able to access sensitive device information and invoke Android UI-control functionality.
Microsoft UFO is an AI-agent framework designed for intelligent automation and multi-device orchestration.
Its Mobile MCP functionality provides MCP servers for interacting with Android devices through ADB.
The vulnerable configuration exposes two important network services:
| Service | Port | Function |
|---|---|---|
| Mobile Data Collection MCP | 8020 | Android information and screen data |
| Mobile Action MCP | 8021 | Android interaction and control |
In affected versions, the Mobile MCP servers could be created without an authentication provider or request-level authorization check.
Consequently:
Remote Client
│
│ HTTP / MCP
▼
┌──────────────────────┐
│ Mobile MCP Server │
│ │
│ Authentication: │
└──────────┬───────────┘
│
▼
ADB Interface
│
▼
Android Device
The security boundary between the remote network client and the ADB-backed functionality is therefore insufficiently protected.
9.4 CRITICAL
Vector:
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:L
The vulnerability is particularly significant because exploitation does not inherently require:
The official advisory states that a network client able to reach the exposed service can initialize an MCP session and invoke its tools without presenting a credential.
According to the official Microsoft UFO security advisory:
Affected:
<= v3.0.7
Patched:
None listed
The official repository currently lists 3.0.7 as a release.
Important: Do not claim that
3.0.8is an officially patched release unless Microsoft publishes that information. The official security advisory currently lists no patched version.
The vulnerable functionality is implemented in:
ufo/client/mcp/http_servers/mobile_mcp_server.py
Important functions identified by the official advisory include:
create_mobile_data_collection_server
capture_screenshot
get_ui_tree
get_device_info
get_mobile_app_target_info
get_app_window_controls_target_info
create_mobile_action_server
tap
swipe
type_text
launch_app
press_key
click_control
The two HTTP services are associated with:
TCP/8020
TCP/8021
The advisory specifically identifies these services as the Mobile data-collection and action MCP servers.
The fundamental security problem is:
Powerful functionality
+
Network exposure
+
Missing authentication
=
Unauthorized access
At the affected implementation, the Mobile MCP FastMCP servers were constructed without an authentication provider or equivalent request-level authorization enforcement.
Conceptually:
mcp = FastMCP(
"Mobile MCP Server",
host=host,
port=port,
)
The problem is not simply the existence of MCP.
The problem is that a network-accessible interface exposes security-sensitive operations without requiring the caller to establish an authenticated identity.
A simplified attack chain looks like this:
┌───────────────────┐
│ Unauthenticated │
│ Network Client │
└─────────┬─────────┘
│
│ HTTP
▼
┌─────────────────────────┐
│ Mobile MCP :8020/:8021 │
│ │
│ Authentication missing │
└───────────┬─────────────┘
│
│ MCP Tool
▼
┌─────────────────────────┐
│ Mobile MCP Tool │
└───────────┬─────────────┘
│
│ ADB operation
▼
┌─────────────────────────┐
│ Android Device / ADB │
└─────────────────────────┘
The important security transition is:
Unauthenticated network request
↓
MCP functionality
↓
ADB-backed action
↓
Android device
The data-collection server can expose functionality associated with:
capture_screenshot
get_ui_tree
get_device_info
get_mobile_app_target_info
get_app_window_controls_target_info
Potentially exposed information includes:
This creates a significant confidentiality risk.
The action server exposes functionality associated with:
tap
swipe
type_text
launch_app
press_key
click_control
These operations can provide a remote caller with Android UI interaction capabilities.
Depending on the device state and accessible applications, this can potentially allow:
Remote input
↓
UI navigation
↓
Application interaction
↓
Device-state modification
The official advisory specifically describes these capabilities as remotely injectable Android UI actions.
Unauthorized access to screen and UI information can potentially expose:
The exact impact depends on the Android device and applications accessible through the connected ADB environment.
Unauthorized mobile actions may allow an attacker to:
Tap
Swipe
Type text
Press keys
Launch applications
Click UI controls
This can potentially modify application state or interact with workflows running on the device.
Repeated automated actions could:
The CVSS assessment assigns Low availability impact, while confidentiality and integrity are rated High.
This repository includes:
cve-2026-73296.py
The checker is intentionally designed as a non-destructive security assessment tool.
It checks:
TCP reachability
↓
HTTP response
↓
Authentication boundary
↓
SAFE / VULNERABLE / UNKNOWN
It does not invoke Mobile MCP tools.
A SAFE result means the tested HTTP endpoint returned an authentication/authorization barrier such as:
HTTP 401
HTTP 403
Example:
[SAFE] Port 8020: authentication/authorization
barrier detected
A VULNERABLE result means the tested HTTP endpoint responded successfully without presenting an authentication challenge.
Example:
[VULNERABLE] Port 8021:
HTTP endpoint responded without an authentication challenge
This should be treated as a potential exposure requiring confirmation.
An UNKNOWN result means the checker could not reliably determine the authentication state.
Examples:
TCP unreachable
TLS error
HTTP timeout
Unexpected HTTP response
Redirect
UNKNOWN should not be interpreted as either secure or vulnerable.
This checker intentionally does not claim to prove exploitation.
A green result means:
Authentication protection was observed on the tested HTTP boundary.
It does not mathematically prove that the entire UFO deployment is secure.
Likewise, a red result indicates:
The tested endpoint responded without an authentication challenge.
It should be correlated with:
Clone the repository:
git clone https://github.com/0xBlackash/CVE-2026-73296.git
cd CVE-2026-73296
Install dependency:
python3 -m pip install requests
Syntax check:
python3 -m py_compile cve-2026-73296.py
Run against an authorized test system:
python3 cve-2026-73296.py 127.0.0.1
Example lab target:
python3 cve-2026-73296.py 192.168.56.10
For HTTPS with a laboratory/self-signed certificate:
python3 cve-2026-73296.py https://192.168.56.10 --no-verify-tls
════════════════════════════════════════════════════════
SECURITY ASSESSMENT
────────────────────────────────────────────────────────
SAFE : 2
VULNERABLE : 0
UNKNOWN : 0
✓ AUTHENTICATION CHECK PASSED
════════════════════════════════════════════════════════
SECURITY ASSESSMENT
────────────────────────────────────────────────────────
SAFE : 0
VULNERABLE : 2
UNKNOWN : 0
⚠ POTENTIAL CVE-2026-73296 EXPOSURE
→ TCP/8020 responded without an authentication challenge.
→ TCP/8021 responded without an authentication challenge.
The vulnerability can be understood as a source-to-sink security failure:
SOURCE
│
│ Unauthenticated network request
▼
MCP HTTP Server
│
│ Missing authentication/authorization
▼
MCP Tool
│
▼
ADB-backed operation
│
▼
ANDROID DEVICE
The intended security boundary should instead be:
Network Request
│
▼
Authentication
│
├──── INVALID ────► REJECT
│
▼
Authorization
│
├──── DENIED ─────► REJECT
│
▼
MCP Tool
│
▼
ADB
The primary remediation is to enforce authentication at the Mobile MCP HTTP transport boundary.
Recommended security architecture:
┌──────────────────┐
│ Authorized MCP │
│ Client │
└────────┬─────────┘
│
Bearer Token
│
▼
┌──────────────────┐
│ Authentication │
│ Middleware │
└────────┬─────────┘
│
Authorized?
/ \
NO YES
│ │
▼ ▼
REJECT MCP Tool
│
▼
ADB
The official advisory recommends an authentication design based around:
UFO_MCP_API_KEY
The security model should ensure:
Avoid exposing:
0.0.0.0:8020
0.0.0.0:8021
directly to untrusted networks.
Prefer:
127.0.0.1
for local-only deployments.
For legitimate remote access, consider:
Client
│
▼
TLS / Private Tunnel
│
▼
Authenticated Reverse Proxy
│
▼
UFO MCP
│
▼
ADB
Possible security controls include:
A proper security regression suite should verify:
Request
↓
No Authorization header
↓
REJECT
↓
ADB not reached
Expected:
PASS
Bearer: invalid-token
↓
REJECT
↓
ADB not reached
Expected:
PASS
Bearer: valid-token
↓
ACCEPT
↓
MCP Tool
↓
ADB
Expected:
PASS
UFO_MCP_API_KEY = missing
Expected:
Server fails closed
Unresolved environment variables should not accidentally become authentication credentials.
Expected:
Client initialization fails
Authentication alone should not be considered sufficient.
Recommended controls:
Internet
│
X
│
Firewall/VPN
│
▼
TLS / Proxy
│
▼
API Authentication
│
▼
Authorization
│
▼
MCP Server
│
▼
ADB
│
▼
Android Device
Security teams should monitor for unexpected access to:
TCP/8020
TCP/8021
Look for:
Useful network telemetry:
source_ip
destination_ip
destination_port
timestamp
HTTP_method
HTTP_status
user_agent
authorization_present
request_frequency
If an exposed vulnerable instance is discovered:
Immediately limit access to:
8020
8021
If the service is not required, disconnect the associated ADB device.
Look for:
Unknown source IPs
Unexpected MCP sessions
Unexpected device interactions
Unexpected application launches
If authentication secrets may have been exposed:
Generate a new high-entropy API key
Check:
Follow the latest Microsoft UFO security advisory and release information.
Run the safe checker again after remediation.
This project follows a defensive vulnerability-validation methodology:
1. Identify vulnerable component
↓
2. Determine network attack surface
↓
3. Identify missing security boundary
↓
4. Map exposed capabilities
↓
5. Build non-destructive detection
↓
6. Validate authentication behavior
↓
7. Document impact
↓
8. Apply remediation
↓
9. Regression test
Recommended project structure:
CVE-2026-73296/
│
├── README.md
│
├── poc/
│ └── cve-2026-73296.py
│
├── docs/
│ ├── technical-analysis.md
│ ├── remediation.md
│ └── detection.md
│
├── screenshots/
│ ├── safe.png
│ └── vulnerable.png
│
├── tests/
│ └── README.md
│
├── LICENSE
└── .gitignore
MCP servers should not be treated as harmless local utilities when they expose powerful operations over a network.
An MCP endpoint connected to ADB can become a bridge between:
Network
↓
Agent protocol
↓
ADB
↓
Android
The security requirements therefore need to cover the entire chain.
A service bound to:
127.0.0.1
has a fundamentally different exposure profile from:
0.0.0.0
Network binding should therefore be treated as a security configuration.
The critical invariant is:
UNTRUSTED REQUEST
↓
AUTHENTICATION
↓
AUTHORIZATION
↓
MCP TOOL
↓
ADB
Never:
UNTRUSTED REQUEST
↓
MCP TOOL
↓
ADB
CVE-2026-73296 demonstrates the security risk created when powerful agent automation interfaces are exposed over a network without an appropriate authentication and authorization boundary.
The vulnerable Mobile MCP architecture creates a path from:
Unauthenticated Network Client
↓
MCP Server
↓
MCP Tools
↓
ADB
↓
Android Device
The resulting impact can include both confidentiality loss, through screen/UI/device information, and integrity impact, through remote Android UI interaction.
The most important defensive controls are:
Authentication
Authorization
TLS
Network isolation
Least privilege
Secure defaults
Continuous monitoring
Regression testing
Official Microsoft UFO repository:
https://github.com/microsoft/UFO
Official security advisory:
https://github.com/microsoft/UFO/security/advisories/GHSA-24fq-m9rr-g3mm
This project is provided for:
Do not test systems or devices without explicit authorization.
The safe checker intentionally avoids executing the vulnerable Mobile MCP capabilities against real Android devices.
CVE-2026-73296 • Microsoft UFO • Mobile MCP Security Research
| Metric | Value |
|---|
| Attack Vector | Network |
| Attack Complexity | Low |
| Privileges Required | None |
| User Interaction | None |
| Scope | Unchanged |
| Confidentiality | High |
| Integrity | High |
| Availability | Low |
| Property | Value |
|---|
| CVE | CVE-2026-73296 |
| Product | Microsoft UFO |
| Component | Mobile MCP |
| Severity | Critical |
| CVSS | 9.4 |
| Attack Vector | Network |
| Complexity | Low |
| Privileges | None |
| User Interaction | None |
| Confidentiality | High |
| Integrity | High |
| Availability | Low |
| CWE-306 | Missing Authentication |
| CWE-862 | Missing Authorization |
| Data MCP | TCP/8020 |
| Action MCP | TCP/8021 |
| Affected | ≤ v3.0.7 |
| Official patched version | None listed |