UFO-Vuln 💥
未经身份验证的移动端 MCP 访问可能暴露 Android 屏幕数据,并通过 ADB 提供远程 UI 控制能力。
本仓库仅用于授权的安全研究、漏洞验证、防御性测试以及受控实验室环境。
所包含的检测工具旨在执行非破坏性的身份验证边界检查。
它不会:
CVE: CVE-2026-73296
产品: Microsoft UFO
组件: 移动端 MCP HTTP 服务器
严重性: 严重
CVSS v3.1: 9.4
受影响版本: <= v3.0.7
官方已修补版本: 截至本文档编写时,Microsoft UFO 公告中未列出任何已修补版本。
CWE:
该漏洞影响 UFO 的移动端 MCP 数据收集和操作服务器,当它们通过网络暴露且未进行适当身份验证时即会受到影响。
官方公告将易受攻击的实现标识为:```text ufo/client/mcp/http_servers/mobile_mcp_server.py
受影响的服务暴露了可交互式HTTP MCP接口,这些接口能够与通过ADB连接的Android设备进行交互。
如果这些服务可远程访问且未强制实施身份验证,则未经身份验证的网络客户端可能能够访问敏感的设备信息,并调用Android UI控制功能。
---
# 🎯 执行摘要
Microsoft UFO是一个AI智能体框架,专为智能自动化和多设备编排而设计。
其Mobile MCP功能提供了用于通过ADB与Android设备交互的MCP服务器。
易受攻击的配置暴露了两个重要的网络服务:
| 服务 | 端口 | 功能 |
| -------------------------- | -----: | --------------------------------- |
| 移动数据采集MCP | `8020` | Android信息和屏幕数据 |
| 移动操作MCP | `8021` | Android交互与控制 |
在受影响版本中,Mobile MCP服务器可能在未配置身份验证提供程序或请求级授权检查的情况下被创建。
因此:```text
Remote Client
│
│ HTTP / MCP
▼
┌──────────────────────┐
│ Mobile MCP Server │
│ │
│ Authentication: │
└──────────┬───────────┘
│
▼
ADB Interface
│
▼
Android Device
远程网络客户端与基于ADB的功能之间的安全边界因此保护不足。
9.4 CRITICAL
向量:
向量:```py
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:L
| 指标 | 值 |
|---|---|
| 攻击向量 | 网络 |
| 攻击复杂度 | 低 |
| 所需权限 | 无 |
| 用户交互 | 无 |
| 影响范围 | 不变 |
| 机密性 | 高 |
| 完整性 | 高 |
| 可用性 | 低 |
该漏洞之所以特别严重,是因为利用它本身并不需要:
官方公告指出,能够访问暴露服务的网络客户端可以初始化 MCP 会话并调用其工具,而无需出示任何凭据。
根据微软官方 UFO 安全公告:```py Affected: <= v3.0.7
Patched: None listed
官方仓库目前将 `3.0.7` 列为发布版本。
> **重要提示:** 除非微软发布了相关信息,否则不要声称 `3.0.8` 是官方修复版本。官方安全公告目前未列出任何已修复版本。
---
# 🏗️ 易受攻击的架构
易受攻击的功能实现于:```py
ufo/client/mcp/http_servers/mobile_mcp_server.py
官方公告中识别出的重要功能包括:
create_mobile_data_collection_server capture_screenshot get_ui_tree get_device_info get_mobile_app_target_info get_app_window_controls_target_info
### 移动端操作```py
create_mobile_action_server
tap
swipe
type_text
launch_app
press_key
click_control
两个HTTP服务与以下内容相关联:```py TCP/8020 TCP/8021
该公告特别将这些服务标识为移动数据收集和操作 MCP 服务器。
---
# 🔬 根本原因
根本的安全问题在于:```py
Powerful functionality
+
Network exposure
+
Missing authentication
=
Unauthorized access
在受影响的实现中,Mobile MCP FastMCP 服务器在构建时未配置认证提供程序或等效的请求级授权强制机制。
概念上:```python mcp = FastMCP( "Mobile MCP Server", host=host, port=port, )
问题不仅仅在于MCP的存在。
问题在于,一个可网络访问的接口暴露了安全敏感的操作,却未要求调用方建立经过认证的身份。
---
# 🔗 攻击流程
简化的攻击链如下所示:```py
┌───────────────────┐
│ 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:
重要的安全过渡是:```py Unauthenticated network request ↓ MCP functionality ↓ ADB-backed action ↓ Android device
---
# 📡 暴露的服务
## 端口 8020 — 数据收集
数据收集服务器可以暴露与以下内容相关的功能:```py
capture_screenshot
get_ui_tree
get_device_info
get_mobile_app_target_info
get_app_window_controls_target_info
可能暴露的信息包括:
这会造成严重的机密性风险。
操作服务器暴露与以下内容相关的功能:```text tap swipe type_text launch_app press_key click_control
这些操作可以为远程调用者提供Android UI交互能力。
根据设备状态和可访问的应用程序,这可能允许:```text
Remote input
↓
UI navigation
↓
Application interaction
↓
Device-state modification
官方公告特别将这些能力描述为可远程注入的 Android UI 操作。
未经授权访问屏幕和 UI 信息可能潜在地暴露:
具体影响取决于通过所连接的 ADB 环境可访问的 Android 设备和应用程序。
未经授权的移动操作可能允许攻击者:```text Tap Swipe Type text Press keys Launch applications Click UI controls
这可能潜在地修改应用状态或与设备上运行的工作流进行交互。
---
# 💥 可用性影响
重复的自动化操作可能导致:
* 中断自动化
* 切换应用程序
* 导航离开工作流
* 触发意外的UI操作
* 干扰测试环境
* 中断Android自动化会话
CVSS评估将**可用性影响**评为**低**,而机密性和完整性被评为**高**。
---
# 🧪 安全检测
此仓库包含:```text
cve-2026-73296.py
该检查器被有意设计为一种非破坏性安全评估工具。
它检查:```text TCP reachability ↓ HTTP response ↓ Authentication boundary ↓ SAFE / VULNERABLE / UNKNOWN
它**不会**调用 Mobile MCP 工具。
---
# 🟢 安全
`SAFE` 结果表示被测试的 HTTP 端点返回了身份验证/授权屏障,例如:```text
HTTP 401
HTTP 403
示例:
# 使用默认设置运行
python3 tool.py
# 指定目标
python3 tool.py --target example.com
``````text
[SAFE] Port 8020: authentication/authorization
barrier detected
VULNERABLE 结果表示被测试的 HTTP 端点成功响应,且未呈现身份验证挑战。
示例:```text [VULNERABLE] Port 8021: HTTP endpoint responded without an authentication challenge
此结果应视为**需要确认的潜在暴露**。
---
# 🟡 未知
`UNKNOWN`(未知)结果表示检查器无法可靠地确定认证状态。
示例:```text
TCP unreachable
TLS error
HTTP timeout
Unexpected HTTP response
Redirect
UNKNOWN 不应被解释为安全或易受攻击。
此检查器有意不声称能够证明可利用性。
绿色结果意味着:
在测试的 HTTP 边界上观察到了身份验证保护。
它并不在数学上证明整个 UFO 部署是安全的。
同样,红色结果表示:
测试的端点响应时未要求身份验证。
它应与以下内容相关联:
克隆仓库:```bash git clone https://github.com/0xBlackash/CVE-2026-73296.git cd CVE-2026-73296
安装依赖:```bash
python3 -m pip install requests
语法检查:```bash python3 -m py_compile cve-2026-73296.py
对已授权的测试系统运行:```bash
python3 cve-2026-73296.py 127.0.0.1
示例实验室目标:```bash python3 cve-2026-73296.py 192.168.56.10
对于使用实验室/自签名证书的HTTPS:```bash
python3 cve-2026-73296.py https://192.168.56.10 --no-verify-tls
════════════════════════════════════════════════════════ SECURITY ASSESSMENT ────────────────────────────────────────────────────────
SAFE : 2 VULNERABLE : 0 UNKNOWN : 0
✓ AUTHENTICATION CHECK PASSED
### 潜在暴露风险```py
════════════════════════════════════════════════════════
SECURITY ASSESSMENT
────────────────────────────────────────────────────────
SAFE : 0
VULNERABLE : 2
UNKNOWN : 0
⚠ POTENTIAL CVE-2026-73296 EXPOSURE