Mobile Next is an MCP server for mobile development and automation. Prior to 0.0.50, the mobile_open_url tool in mobile-mcp passes…
GitHub_M·CWE-939·Published 2026-04-04
Mobile Next is an MCP server for mobile development and automation. Prior to 0.0.50, the mobile_open_url tool in mobile-mcp passes user-supplied URLs directly to Android's intent system without any scheme validation, allowing execution of arbitrary Android intents, including USSD codes, phone calls, SMS messages, and content provider access. This vulnerability is fixed in 0.0.50.
Mobile Next is an MCP server for mobile development and automation. Prior to 0.0.50, the mobile_open_url tool in mobile-mcp passes user-supplied URLs directly to Android's intent system without any scheme validation, allowing execution of arbitrary Android intents, including USSD codes, phone calls, SMS messages, and content provider access. This vulnerability is fixed in 0.0.50.
### Summary The `mobile_open_url` tool in mobile-mcp passes user-supplied URLs directly to Android's intent system without any scheme validation, allowing execution of arbitrary Android intents, including USSD codes, phone calls, SMS messages, and content provider access. ### Details The vulnerable code passes URLs directly to `adb shell am start -a android.intent.action.VIEW -d <url>` without checking the URL scheme. This can enable malicious schemes such as `tel:`, `sms:`, `mailto:`, `content://`, and `market://` to be executed. Since MCP servers are designed to be operated by AI agents, which are vulnerable to prompt injection attacks, a malicious document or website could inject instructions that cause the AI to execute dangerous intents on a connected mobile device. ### Impact An attacker via prompt injection can: - Execute USSD codes (e.g., `tel:*#06#` to display IMEI - confirmed on Pixel 7a, behavior varies by device; or device-specific factory reset codes) - Initiate phone calls to premium rate numbers - Draft SMS messages with attacker-controlled content - Access content providers (contacts, SMS, call logs) - Open app installation prompts ### Proof of Concept ```json {"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"mobile_open_url","arguments":{"device":"<id>","url":"tel:*#06#"}}} ``` Result: IMEI displayed on device. ```json {"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"mobile_open_url","arguments":{"device":"<id>","url":"sms:1234567890?body=HACKED"}}} ``` Result: SMS app opens with a pre-filled message. ### Remediation Upgrade to version 0.0.50 or later, which restricts `mobile_open_url` to `http://` and `https://` schemes by default. Users who require other URL schemes can opt in by setting `MOBILEMCP_ALLOW_UNSAFE_URLS=1`.
### Summary The `mobile_open_url` tool in mobile-mcp passes user-supplied URLs directly to Android's intent system without any scheme validation, allowing execution of arbitrary Android intents, including USSD codes, phone calls, SMS messages, and content provider access. ### Details The vulnerable code passes URLs directly to `adb shell am start -a android.intent.action.VIEW -d <url>` without checking the URL scheme. This can enable malicious schemes such as `tel:`, `sms:`, `mailto:`, `content://`, and `market://` to be executed. Since MCP servers are designed to be operated by AI agents, which are vulnerable to prompt injection attacks, a malicious document or website could inject instructions that cause the AI to execute dangerous intents on a connected mobile device. ### Impact An attacker via prompt injection can: - Execute USSD codes (e.g., `tel:*#06#` to display IMEI - confirmed on Pixel 7a, behavior varies by device; or device-specific factory reset codes) - Initiate phone calls to premium rate numbers - Draft SMS messages with attacker-controlled content - Access content providers (contacts, SMS, call logs) - Open app installation prompts ### Proof of Concept ```json {"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"mobile_open_url","arguments":{"device":"<id>","url":"tel:*#06#"}}} ``` Result: IMEI displayed on device. ```json {"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"mobile_open_url","arguments":{"device":"<id>","url":"sms:1234567890?body=HACKED"}}} ``` Result: SMS app opens with a pre-filled message. ### Remediation Upgrade to version 0.0.50 or later, which restricts `mobile_open_url` to `http://` and `https://` schemes by default. Users who require other URL schemes can opt in by setting `MOBILEMCP_ALLOW_UNSAFE_URLS=1`.
Mobile Next es un servidor MCP para desarrollo y automatización móvil. Antes de 0.0.50, la herramienta mobile_open_url en mobile-mcp pasa URLs proporcionadas por el usuario directamente al sistema de intents de Android sin ninguna validación de esquema, permitiendo la ejecución de intents de Android arbitrarios, incluyendo códigos USSD, llamadas telefónicas, mensajes SMS y acceso a proveedores de contenido. Esta vulnerabilidad está corregida en 0.0.50.
| Version | Type | Source | Base | Exp | Impact | Vector |
|---|---|---|---|---|---|---|
| 3.1 | Primary | NVD | 8.8 | 2.8 | 5.9 | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H |
| 3.1 | Primary | cve.org | 8.3 | — | — | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:H/A:H |
| 3.1 | Primary | cve.org | 8.3 | — | — | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:H/A:H |
| 3.1 | Secondary | GHSA | 8.3 | — | — | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:H/A:H |
| 3.1 | Secondary | NVD | 8.3 | 2.8 | 5.5 | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:H/A:H |