T05 · Unauthorized Access and Privilege Escalation
- Location
scripts/authorize.py:30- Finding
Authorization Requests Privileges Beyond the Skill's Declared Functionality
- 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 workflow requires public social-content lookup, image generation and editing, artifact upload/read access, task-status access, and billing operations associated with those activities. The requested bearer credential additionally grants: - Video generation - Music generation - Speech generation - Voice read and write operations - General wallet spending - Task cancellation These permissions are not necessary to produce Xiaohongshu parent-FAQ still images. Moreover, the generic `call` interface does not enforce a package-level allowlist of permitted Beatra tools. Consequently, any tool expose ...[truncated 1407 chars]- Remediation
View remediation
