T05 · Unauthorized Access and Privilege Escalation
- Location
scripts/authorize.py:30- Finding
Overprivileged Shared Device Token and 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}, ) ``` ### Technical Analysis The declared Skill workflow produces a written storyboard and optionally generates one to four image key frames. Its legitimate remote requirements are limited to model discovery, image generation or transformation, selected artifact uploads, task inspection, and user-requested task cancellation. The authorization request instead obtains a shared Device Token containing unrelated privileges, including: - Video generation - Music generation - Speech generation - Voice read and write operations - General wallet spending authority The bundled client compounds this overprivilege by accepting an arbitrary `tool_name` and arbitrary JSON arguments from standard input. It does ...[truncated 1875 chars]- Remediation
View remediation
