T05 · Unauthorized Access and Privilege Escalation
- Location
scripts/authorize.py:31- Finding
Overprivileged Shared Device Credential and Unrestricted 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 Skill's declared functionality requires image generation or editing, user-selected asset uploads, model discovery, task management, wallet spending for approved work, and optional Xiaohongshu lookup. The requested bearer-token scope also grants unrelated video generation, music generation, speech generation, voice reading, and voice writing. The credential is a shared device credential stored under `~/.beatra`, rather than a narrowly scoped credential dedicated to this package. In addition, the bundled client exposes a generic `call` command that forwards any supplied MCP tool name. No local allowlist limits calls to the operations required by this Skill. This ...[truncated 1769 chars]- Remediation
View remediation
