T05 · Unauthorized Access and Privilege Escalation
- Location
scripts/authorize.py:34- Finding
Over-Privileged Shared Bearer Token and Unrestricted MCP Tool Dispatch
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The cover-image workflow is disclosed, but the package also uses broad Beatra account authority and silent self-updating code, so it should go through Review.
Review before installing. The skill appears intended to generate Beatra cover images, but installing it means trusting a broad shared Beatra device token, generic MCP tool dispatch, selected-file uploads through Beatra-provided destinations, and automatic replacement of the package's own code. Disable automatic updates if you need reviewed code to remain fixed, and use it only with a Beatra account where the broad media and wallet permissions are acceptable.
scripts/authorize.py:34Over-Privileged Shared Bearer Token and Unrestricted MCP Tool Dispatch
scripts/mcp_client.py:1031Silent Remote Replacement of Executable Skill Code Without Independent Release Signatures
scripts/mcp_client.py:223Remote MCP Response Can Direct User-Selected File Uploads to Any HTTPS Host
scripts/mcp_client.py:1100Windows Credential Confidentiality Relies on Unverified Inherited ACLs
The skill's stated cover-generation purpose does not prepare the user for uninstall flows, inspection of installed skill inventory, access to ~/.beatra state and credentials, token revocation, and deletion of local files. These are privileged lifecycle operations that can alter local system/application state and affect account access, so hiding them behind a creative-media skill materially increases user surprise and operational risk.
The skill's stated cover-generation purpose does not prepare the user for uninstall flows, inspection of installed skill inventory, access to ~/.beatra state and credentials, token revocation, and deletion of local files. These are privileged lifecycle operations that can alter local system/application state and affect account access, so hiding them behind a creative-media skill materially increases user surprise and operational risk.
The skill's stated cover-generation purpose does not prepare the user for uninstall flows, inspection of installed skill inventory, access to ~/.beatra state and credentials, token revocation, and deletion of local files. These are privileged lifecycle operations that can alter local system/application state and affect account access, so hiding them behind a creative-media skill materially increases user surprise and operational risk.
Referenced artifact was not completely inspected
Submit once through bundled `scripts/mcp_client.py`. Poll
Referenced artifact was not completely inspected
Submit once through bundled `scripts/mcp_client.py`. Poll
Referenced artifact was not completely inspected
Submit once through bundled `scripts/mcp_client.py`. Poll
Referenced artifact was not completely inspected
Submit once through bundled `scripts/mcp_client.py`. Poll
Referenced artifact was not completely inspected
Submit once through bundled `scripts/mcp_client.py`. Poll
Referenced artifact was not completely inspected
Submit once through bundled `scripts/mcp_client.py`. Poll
Referenced artifact was not completely inspected
Submit once through bundled `scripts/mcp_client.py`. Poll
The manifest explicitly references a local bearer credential file at ~/.beatra/credentials.json for MCP authentication. While using credentials is expected, binding the skill to a concrete local credential path increases the chance of unintended credential exposure or misuse if the skill runtime, logs, or downstream tooling expose filesystem paths or permit unauthorized access to MCP-backed actions.
},
"mcp": {
"authentication": "device-bearer",
"credential_file": "~/.beatra/credentials.json",
"name": "beatra",
"transport": "streamable-http",
"url": "https://mcp.beatra.ai/mcp"
The bundled MCP client is documented as a general remote invocation interface supporting tool discovery and arbitrary tools/call execution, which is far broader than a narrowly scoped cover-generation skill requires. In a skill package, this creates a capability escalation path where the installed credential can be used to access unexpected remote functions, especially if other files or prompts later instruct the agent to call them.
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 OAuth scope request is dramatically broader than the skill’s stated purpose of generating a still cover set. In addition to image/artifact access, it requests wallet spending, music/video/speech generation, voice read/write, and task cancellation, which violates least privilege and would grant the skill account capabilities unrelated to its advertised function if the credential were later misused or the skill expanded maliciously.
This helper obtains authorization for financially and operationally sensitive capabilities that are unjustified by a wealth cover image-set tool. The inclusion of wallet spending is especially dangerous because compromise, misuse, or later code changes could convert a simple media skill into one that incurs charges or accesses unrelated services under a user-approved token.
This client contains broad non-functional behaviors—self-update, installation registration, host platform detection, local inventory recording, and credential handling—that substantially exceed the stated purpose of generating wealth-cover still sets. In a skill context, such hidden system-management and telemetry behavior increases attack surface and trust risk because the package can alter itself and report environment metadata unrelated to the user-facing task.
The code downloads manifests and archives and then replaces files under its own installation root, including silent update paths via maybe_auto_update(). Even with checksum and path validations, self-modifying code is dangerous in a content-generation skill because compromise of the vendor update channel, signing process, or discovery origin would yield arbitrary code replacement on the host.
The exposed CLI includes an update command for self-updating behavior, confirming that this package is designed to modify its own installed code. Self-modification is high risk in a narrowly scoped skill because it creates an unnecessary route from remote content delivery to local code execution if the update trust chain is ever subverted.
)
update = subparsers.add_parser(
"update",
help="Check, install, or configure Beatra package self-updates",
)
update.add_argument(
"--check",
The script hard-codes a remote authorization origin and revocation endpoint for shared device credentials, functionality that is unrelated to the stated purpose of generating cover stills. Even if intended as package lifecycle logic, embedding credential-revocation behavior in a creative media skill expands the trust boundary and gives the skill the ability to affect other installed skills by touching shared authentication state.