T05 · Unauthorized Access and Privilege Escalation
- Location
scripts/authorize.py:31- Finding
Overprivileged device authorization and unrestricted MCP tool routing
- 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 purpose of the Skill is to create bank desk board images from user-supplied text. Its legitimate operations require image generation and editing, optional artifact upload, model discovery, task polling, and limited billing information. The authorization request nevertheless includes capabilities unrelated to that purpose: - Video generation - Music generation - Speech generation - Voice-resource reading and writing - General wallet spending - Task cancellation The package does not enforce a local allowlist of tools permitted for this Skill. The command-line interface accepts any `tool_name` and sends it throug ...[truncated 1900 chars]- Remediation
View remediation
