T05 · Unauthorized Access and Privilege Escalation
- Location
scripts/authorize.py:34- Finding
Overprivileged Shared Bearer Token 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 functionality is creating census-notice voice clips, optionally cloning an authorized voice sample, uploading that sample, and reading the resulting tasks and artifacts. The authorization request nevertheless includes unrelated capabilities for image, video, and music generation, broad voice-writing access, wallet spending, and task cancellation. This violates least privilege. The issue is amplified because `mcp_client.py` does not restrict `tool_name` to operations required by the Skill. Any process or agent action able to invoke the bundled client can request an arbitrary server-exposed MCP tool, subject only to the broad permissions attached to the sha ...[truncated 2085 chars]- Remediation
View remediation
