T05 · Unauthorized Access and Privilege Escalation
- Location
scripts/authorize.py:30- Finding
Image-retouching Skill requests broad cross-media and account-level privileges
- 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 this Skill is image retouching. Its legitimate operations require image editing, user-selected asset upload, model discovery, task reads, and possibly user-requested task cancellation. The requested bearer-token scope goes substantially beyond those requirements. It includes video, music, speech, voice creation and modification, wallet spending, broad artifact reads, task listing, and task cancellation. This violates least privilege. The risk is increased by the generic `call` command, which does not enforce a package-specific allowlist. Any tool name supplied by the caller is forwarded to the MCP endpoint. Consequently, the unrelated permissions are op ...[truncated 1508 chars]- Remediation
View remediation
