T05 · Unauthorized Access and Privilege Escalation
- Location
scripts/authorize.py:34- Finding
Overbroad Authorization Scopes and Unrestricted MCP Tool Invocation
- 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 functionality is limited to creating local-business image posts, including image generation, transformation, editing, source uploads, model discovery, and task monitoring. However, the device authorization requests permissions for unrelated capabilities: - Video generation - Music generation - Speech generation - Voice reading and writing - General wallet spending - Task cancellation The requested `wallet:spend` scope increases the significance of the issue because the resulting bearer credential can authorize billable operations. The same credential is shared across Beatra Skills and has a sliding idle lifet ...[truncated 1800 chars]- Remediation
View remediation
