T05 · Unauthorized Access and Privilege Escalation
- Location
scripts/authorize.py:34- Finding
Authorization Requests Capabilities Beyond the Skill's Declared Image-Generation Purpose
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill does the advertised image work, but it also requests and persists broader Beatra account powers than an ecommerce image skill needs.
Install only if you are comfortable giving this Beatra package a shared full-scope device credential and allowing default silent updates. Consider disabling auto-updates with the documented command and revoking the device from the Beatra Console when you no longer need the skill.
scripts/authorize.py:34Authorization Requests Capabilities Beyond the Skill's Declared Image-Generation Purpose
scripts/mcp_client.py:1044Windows Credential File Confidentiality Is Assumed but Not Enforced
The authorization scope includes voice, speech, music, and video generation even though the skill advertises only product listing image creation. These unrelated generative permissions unnecessarily enlarge what a stolen or abused token can do, including spending resources on additional media generation and accessing capabilities users would not reasonably expect to grant.
The skill's documented references include uninstalling local packages, deleting local state under ~/.beatra, inspecting installed skill inventory, revoking authorization, and managing shared device credentials—administrative lifecycle actions unrelated to generating listing images. Bundling these capabilities into a creative skill increases the chance of unintended destructive actions and makes abuse more impactful if the package or its client is compromised.
The skill's documented references include uninstalling local packages, deleting local state under ~/.beatra, inspecting installed skill inventory, revoking authorization, and managing shared device credentials—administrative lifecycle actions unrelated to generating listing images. Bundling these capabilities into a creative skill increases the chance of unintended destructive actions and makes abuse more impactful if the package or its client is compromised.
The skill's documented references include uninstalling local packages, deleting local state under ~/.beatra, inspecting installed skill inventory, revoking authorization, and managing shared device credentials—administrative lifecycle actions unrelated to generating listing images. Bundling these capabilities into a creative skill increases the chance of unintended destructive actions and makes abuse more impactful if the package or its client is compromised.
Referenced artifact was not completely inspected
`scripts/mcp_client.py`. Put the MCP tool name after `call` and send one JSON
Referenced artifact was not completely inspected
`scripts/mcp_client.py`. Put the MCP tool name after `call` and send one JSON
Referenced artifact was not completely inspected
`scripts/mcp_client.py`. Put the MCP tool name after `call` and send one JSON
Referenced artifact was not completely inspected
`scripts/mcp_client.py`. Put the MCP tool name after `call` and send one JSON
Referenced artifact was not completely inspected
`scripts/mcp_client.py`. Put the MCP tool name after `call` and send one JSON
Referenced artifact was not completely inspected
`scripts/mcp_client.py`. Put the MCP tool name after `call` and send one JSON
Automatic remote update and package replacement is unjustified in the context of an image-listing generation skill because it grants code replacement capability unrelated to the seller's task. This becomes especially dangerous when paired with shell, network, and file-write access, since a compromised update channel or logic flaw could alter local executable behavior without fresh review.
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
```
They share the one full-scope Device Token stored in
`~/.beatra/credentials.json`. Installing or switching packages must not trigger
another authorization when that credential is already valid. Do not add,
enable, trust, or configure a host Beatra Connector. Never print or move the
token into command arguments, environment variables, logs, chat, or another
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
They share the one full-scope Device Token stored in
`~/.beatra/credentials.json`. Installing or switching packages must not trigger
another authorization when that credential is already valid. Do not add,
enable, trust, or configure a host Beatra Connector. Never print or move the
token into command arguments, environment variables, logs, chat, or another
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
They share the one full-scope Device Token stored in
`~/.beatra/credentials.json`. Installing or switching packages must not trigger
another authorization when that credential is already valid. Do not add,
enable, trust, or configure a host Beatra Connector. Never print or move the
token into command arguments, environment variables, logs, chat, or another
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
They share the one full-scope Device Token stored in
`~/.beatra/credentials.json`. Installing or switching packages must not trigger
another authorization when that credential is already valid. Do not add,
enable, trust, or configure a host Beatra Connector. Never print or move the
token into command arguments, environment variables, logs, chat, or another
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
They share the one full-scope Device Token stored in
`~/.beatra/credentials.json`. Installing or switching packages must not trigger
another authorization when that credential is already valid. Do not add,
enable, trust, or configure a host Beatra Connector. Never print or move the
token into command arguments, environment variables, logs, chat, or another
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
```
They share the one full-scope Device Token stored in
`~/.beatra/credentials.json`. Installing or switching packages must not trigger
another authorization when that credential is already valid. Do not add,
enable, trust, or configure a host Beatra Connector. Never print or move the
token into command arguments, environment variables, logs, chat, or another
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
```
They share the one full-scope Device Token stored in
`~/.beatra/credentials.json`. Installing or switching packages must not trigger
another authorization when that credential is already valid. Do not add,
enable, trust, or configure a host Beatra Connector. Never print or move the
token into command arguments, environment variables, logs, chat, or another
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
```
They share the one full-scope Device Token stored in
`~/.beatra/credentials.json`. Installing or switching packages must not trigger
another authorization when that credential is already valid. Do not add,
enable, trust, or configure a host Beatra Connector. Never print or move the
token into command arguments, environment variables, logs, chat, or another
The skill is described as an ecommerce listing image generator, but the requested OAuth scope includes many unrelated privileges such as videos:generate, music:generate, speech:generate, voices:read, voices:write, wallet:spend, tasks:read, tasks:cancel, and broad artifact access. This violates least privilege and materially expands blast radius: if the skill, its runtime, or stored token is abused, an attacker could invoke unrelated paid or sensitive platform capabilities far beyond image creation.
The authorization scope includes voice, speech, music, and video generation even though the skill advertises only product listing image creation. These unrelated generative permissions unnecessarily enlarge what a stolen or abused token can do, including spending resources on additional media generation and accessing capabilities users would not reasonably expect to grant.
The client contains broad non-core capabilities: silent self-update, installation registration, local skill inventory management, and generic remote MCP tool access. For a skill whose stated purpose is generating ecommerce listing images, these behaviors materially expand the trust boundary and create a supply-chain and remote-capability risk surface unrelated to the advertised function.
The CLI exposes generic tools/list and arbitrary tools/call functionality against the remote MCP endpoint, allowing the package to act as a general-purpose remote tool proxy rather than a narrowly scoped ecommerce image skill. In context, this is especially dangerous because it permits capability expansion beyond the declared purpose and could be used to invoke unrelated or sensitive backend actions if the account is authorized for them.
The package explicitly supports self-update and includes code paths that replace its own installed files. Self-modifying behavior is high risk in agent skills because it bypasses the expectation that reviewed code remains stable after installation; if the update channel or publisher is compromised, the skill can become a vehicle for malicious code delivery.
)
update = subparsers.add_parser(
"update",
help="Check, install, or configure Beatra package self-updates",
)
update.add_argument(
"--check",
This uninstall script handles shared device authorization and calls a remote revocation endpoint even though the skill’s declared purpose is ecommerce image generation. That mismatch expands the skill’s operational scope into credential and device-management territory, increasing the risk of unexpected account disruption or abuse if the package is installed under a broader-trust model.
No suspicious patterns detected.