T05 · Unauthorized Access and Privilege Escalation
- Location
scripts/authorize.py:34- Finding
Overprivileged Device Token Combined with Unrestricted MCP Tool Dispatch
- Content
View full analysis
dict[str, Any]: session = _session_with_registration( state_dir=Path.home() / ".beatra", post_json=_default_post_json, ) if command == "tools": return session.request(2, "tools/list", {}) try: arguments = json.load(os.sys.stdin) except json.JSONDecodeError as exc: raise RuntimeError("Tool arguments on stdin must be one JSON object") from exc if not isinstance(arguments, dict): raise RuntimeError("Tool arguments on stdin must be one JSON object") assert tool_name is not None return session.request( 2, "tools/call", {"name": tool_name, "arguments": arguments}, ) ``` ```python call = subparsers.add_parser("call", help="Call one tool with a JSON object on stdin") call.add_argument("tool_name") ``` ### Technical Analysis The declared Skill workflow requires image generation, image transformation, model discovery, artifact upload, and task inspection. The authorization helper nevertheless requests additional capabilities for video, music, speech, voice modification, wallet spending, and task cancellation. The bundled client compounds this overprivilege by accepting an arbitrary MCP tool name from the command line and forwarding it directly to `tools/call`. There is no package-level allowlist restricting calls to the tools required by this Skill. This violates least privilege. Although the remote service may perform additional au ...[truncated 1445 chars]- Remediation
View remediation
