🇰🇷 한글 설명
iOS Simulator MCP Server 1.3.3 이전 버전의 ui_tap 도구가 Node.js exec() API를 사용하면서 duration, udid, x, y 파라미터를 검증하지 않아 셸 메타문자(;, &&)를 통한 명령어 주입 공격에 취약합니다. 프롬프트 인젝션으로 LLM을 속인 공격자는 idb 명령어 대신 임의의 명령어를 MCP 서버 호스트에서 실행할 수 있습니다.
💡 쉬운 설명
iOS 시뮬레이터 도구가 사용자 입력을 안전하게 검증하지 않아 악의적인 명령어 실행에 악용될 수 있습니다. 공격자가 프롬프트 주입으로 LLM을 속여 특수문자가 포함된 입력을 보내면 서버에서 의도하지 않은 명령어가 실행됩니다.
🇺🇸 원문 (English)
iOS Simulator MCP Server (ios-simulator-mcp) is a Model Context Protocol (MCP) server for interacting with iOS simulators. Versions prior to 1.3.3 are written in a way that is vulnerable to command injection vulnerability attacks as part of some of its MCP Server tool definition and implementation. The MCP Server exposes the tool `ui_tap` which relies on Node.js child process API `exec` which is an unsafe and vulnerable API if concatenated with untrusted user input. LLM exposed user input for `duration`, `udid`, and `x` and `y` args can be replaced with shell meta-characters like `;` or `&&` or others to change the behavior from running the expected command `idb` to another command. When LLMs are tricked through prompt injection (and other techniques and attack vectors) to call the tool with input that uses special shell characters such as `; rm -rf /tmp;#` and other payload variations, the full command-line text will be interepted by the shell and result in other commands except of `ps` executing on the host running the MCP Server. Version 1.3.3 contains a patch for the issue.
📍 영향받는 시스템
iOS Simulator MCP Server (ios-simulator-mcp) 버전 1.3.3 미만
⚔️ 공격 벡터
LLM 프롬프트 인젝션을 통해 ui_tap 도구의 파라미터에 셸 메타문자(; && | `) 포함
🛡️ 대응 방법
ios-simulator-mcp 패키지를 1.3.3 이상으로 업그레이드
🔧 검증 코드
출력에서 버전이 1.3.3 이상이면 안전, 1.3.3 미만이거나 설치되지 않으면 취약함
npm list ios-simulator-mcp 2>/dev/null | grep ios-simulator-mcp