무슨 일이 있었나
2.0.0 이전의 mac-shell-mcp에는 execute_command에 OS 명령 주입이 있습니다: 명령 허용 목록은 기본 명령만 검사하는 반면, 인수는 셸에 전달됩니다. 공격자(직접 또는 에이전트를 조종하는 악성 프롬프트)는 ';' 구분자와 함께 pwd와 같은 안전한 명령을 호출하고 승인 단계 없이 서버 사용자로 금지된 명령을 실행할 수 있습니다.
왜 중요한가
셸 실행 MCP 서버는 가장 위험한 에이전트 도구 표면입니다 — 모델을 OS에 직접 연결합니다. 여기서의 허용 목록 우회는 에이전트가 읽는 모든 프로젝트 파일, 웹페이지 또는 이메일의 프롬프트 주입이 개발자의 macOS 머신에서 임의 명령 실행으로 이어짐을 의미합니다.
공격 경로
MCP 클라이언트는 허용된 명령(예: pwd)을 셸 메타문자(';')를 포함하는 인수와 함께 호출하므로, 명령 이름에 대한 허용 목록 검사는 승인 없이 서버 사용자로 주입된 후속 명령이 실행되는 것을 막지 못합니다.
영향받는 시스템
mac-shell-mcp (cfdude) < 2.0.0 (execute_command 인수)
완화 방안
mac-shell-mcp 2.0.0으로 업그레이드하세요 (커밋 932ce733cde07bb30b1f186303e6692dbb5d087a; 이슈 #45). 명령 인수가 셸 없이 실행되거나 허용 목록에 대해 검증되도록 하세요.