T05 · Unauthorized Access and Privilege Escalation
- Location
scripts/authorize.py:31- Finding
Image-Only Skill Requests and Can Exercise Excessive Cross-Media Permissions
- 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 image generation, image transformation, and image editing. The requested bearer-token scope additionally permits video, music, speech, and voice operations, artifact and task reads, task cancellation, and wallet spending. These permissions exceed the minimum privileges required by the Skill. The issue is operationally significant because the bundled client does not restrict `call` to image-related tools. It forwards an arbitrary caller-supplied tool name and JSON arguments to the remote MCP endpoint using the broadly scoped bearer credential. Although the documentation discloses that one authorization covers multiple media ...[truncated 1290 chars]- Remediation
View remediation
