T05 · Unauthorized Access and Privilege Escalation
- Location
scripts/authorize.py:30- Finding
Overbroad OAuth Scope Combined with Unrestricted Remote 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 requires artifact upload and retrieval, model and voice discovery, optional voice cloning, speech synthesis, video generation, task inspection, user-requested cancellation, and billing-related operations. The authorization scope additionally grants unrelated image and music generation permissions. The bundled client does not restrict `tool_name` to the operations documented for this Skill. Any locally supplied tool name is forwarded to the Beatra MCP endpoint using the shared bearer credential. The remote service remains responsible for enforcing the token scope, but the token itself has broader authority than the Skill’s legitimate task requires. Credential validation als ...[truncated 1825 chars]- Remediation
View remediation
