T05 · Unauthorized Access and Privilege Escalation
- Location
scripts/authorize.py:31- Finding
Device Token Is Granted Capabilities Unrelated to Song-Cover Generation
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill performs the advertised song-cover workflow, but it also keeps broad shared Beatra credentials and can silently replace its own code, so it belongs in Review before installation.
Install only if you are comfortable granting Beatra a shared broad Device Token, uploading reference audio to its service, allowing some device/platform metadata, and accepting default silent package updates. Consider disabling automatic updates with the documented command after installation and review Beatra account revocation controls before use.
scripts/authorize.py:31Device Token Is Granted Capabilities Unrelated to Song-Cover Generation
scripts/authorize.py:344Local Hostname and Agent-Platform Information Are Collected and Transmitted
scripts/mcp_client.py:231Server-Supplied Upload URL Is Not Restricted to Trusted Hosts
scripts/mcp_client.py:1044Windows Bearer Credential Is Used Without Enforcing the Documented Owner-Only ACL
scripts/mcp_client.py:969Silent Automatic Updates Can Replace Executable Skill Code Without Per-Update Approval
The skill includes package uninstall and credential revocation workflows that read local installation inventory and credential files and delete state under ~/.beatra, despite presenting itself as an audio-generation skill. This mismatch can surprise users and increases risk of unintended destructive actions or misuse of sensitive local state-management capabilities.
The skill includes package uninstall and credential revocation workflows that read local installation inventory and credential files and delete state under ~/.beatra, despite presenting itself as an audio-generation skill. This mismatch can surprise users and increases risk of unintended destructive actions or misuse of sensitive local state-management capabilities.
The skill includes package uninstall and credential revocation workflows that read local installation inventory and credential files and delete state under ~/.beatra, despite presenting itself as an audio-generation skill. This mismatch can surprise users and increases risk of unintended destructive actions or misuse of sensitive local state-management capabilities.
Referenced artifact was not completely inspected
python3 scripts/mcp_client.py upload ./reference-song.mp3 --mime-type audio/mpeg
Referenced artifact was not completely inspected
python3 scripts/mcp_client.py upload ./reference-song.mp3 --mime-type audio/mpeg
Referenced artifact was not completely inspected
python3 scripts/mcp_client.py upload ./reference-song.mp3 --mime-type audio/mpeg
Referenced artifact was not completely inspected
python3 scripts/mcp_client.py upload ./reference-song.mp3 --mime-type audio/mpeg
Referenced artifact was not completely inspected
python3 scripts/mcp_client.py upload ./reference-song.mp3 --mime-type audio/mpeg
Referenced artifact was not completely inspected
python3 scripts/mcp_client.py upload ./reference-song.mp3 --mime-type audio/mpeg
Referenced artifact was not completely inspected
python3 scripts/mcp_client.py upload ./reference-song.mp3 --mime-type audio/mpeg
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
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 authorization helper requests a very broad OAuth scope set, including wallet spending, artifact access, image/video/music/speech generation, voice management, and task operations that are not necessary for a single song-cover generation workflow. Over-scoped tokens violate least privilege and materially increase blast radius if the token is compromised or if the skill misuses the shared credential.
The skill exposes self-modification/update capability as a built-in command and also invokes auto-update on ordinary runs. In the context of a creative song-cover skill, embedding code-replacement behavior materially increases supply-chain risk because a tool expected to transform audio can also rewrite its own local codebase.
)
update = subparsers.add_parser(
"update",
help="Check, install, or configure Beatra package self-updates",
)
update.add_argument(
"--check",
The script reads an access token from ~/.beatra/credentials.json and uses it in a bearer Authorization header for remote revocation. Accessing shared credentials inside an application skill is security-sensitive because compromise, modification, or repurposing of this code could expose or misuse tokens that affect other skills on the device.
def _device_token(state_dir: Path) -> str | None:
path = state_dir / "credentials.json"
try:
value = json.loads(path.read_text(encoding="utf-8"))
except (OSError, ValueError):
The skill declares broad effective capabilities such as shell, network, file access, and environment access but does not scope or constrain them in its manifest. That increases the attack surface and makes it harder for users or hosts to understand what the skill is allowed to do, especially because it performs uploads, credential handling, and local state changes.
The skill authorizes silent self-updating and package replacement during ordinary use, which creates a supply-chain and code-integrity risk far beyond what users expect from a song-cover workflow. Even with verification claims, automatic replacement of local package files expands the trust boundary and can introduce new behavior without explicit approval.
Enabling silent automatic updates by default without prominent upfront disclosure means the skill may change its code and behavior unexpectedly during normal use. In a skill that already has network, shell, and file-write capabilities, that substantially increases operational and trust risk.
No suspicious patterns detected.