T05 · Unauthorized Access and Privilege Escalation
- Location
scripts/authorize.py:29- Finding
Excessive Full-Scope Authorization for a Note-Research Skill
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill can perform the advertised note research, but it also grants broad Beatra account powers, supports generic remote tool calls and local file upload, and silently self-updates executable files.
Review this before installing in a sensitive environment. Use it only if you are comfortable granting Beatra a reusable broad device token that can reach capabilities beyond note research, and consider disabling automatic updates with scripts/mcp_client.py update --auto off. Do not use the generic upload command for private files, and prefer pasted notes when you do not need paid lookup.
scripts/authorize.py:29Excessive Full-Scope Authorization for a Note-Research Skill
scripts/mcp_client.py:1437Unrestricted Remote Tool Invocation and Generic Local-File Upload
scripts/authorize.py:340Collection and Transmission of Hostname and Agent-Environment Metadata
scripts/mcp_client.py:969Silent Remote Self-Update Replaces Executable Skill Files by Default
The package presents itself as a research tool but also includes uninstall and credential/installation-state deletion behavior, plus remote revocation and shared connection lifecycle management. These administrative operations are security-sensitive and can affect local system state and account access, making the description-behavior gap especially risky if invoked unexpectedly or by a user who did not intend to manage credentials.
The package presents itself as a research tool but also includes uninstall and credential/installation-state deletion behavior, plus remote revocation and shared connection lifecycle management. These administrative operations are security-sensitive and can affect local system state and account access, making the description-behavior gap especially risky if invoked unexpectedly or by a user who did not intend to manage credentials.
The package presents itself as a research tool but also includes uninstall and credential/installation-state deletion behavior, plus remote revocation and shared connection lifecycle management. These administrative operations are security-sensitive and can affect local system state and account access, making the description-behavior gap especially risky if invoked unexpectedly or by a user who did not intend to manage credentials.
Referenced artifact was not completely inspected
Invoke every remote Beatra tool only through the bundled `scripts/mcp_client.py`, with the tool name as the CLI argument and its arguments as JSON on standard i
Referenced artifact was not completely inspected
Invoke every remote Beatra tool only through the bundled `scripts/mcp_client.py`, with the tool name as the CLI argument and its arguments as JSON on standard i
Referenced artifact was not completely inspected
Invoke every remote Beatra tool only through the bundled `scripts/mcp_client.py`, with the tool name as the CLI argument and its arguments as JSON on standard i
Referenced artifact was not completely inspected
Invoke every remote Beatra tool only through the bundled `scripts/mcp_client.py`, with the tool name as the CLI argument and its arguments as JSON on standard i
Referenced artifact was not completely inspected
Invoke every remote Beatra tool only through the bundled `scripts/mcp_client.py`, with the tool name as the CLI argument and its arguments as JSON on standard i
Automatic download and replacement of package files is not necessary for performing note research, so it introduces avoidable supply-chain and persistence risk. If the update channel, signing, or ownership checks fail in practice, an attacker could gain code execution under the guise of routine research functionality.
The file is entirely about installing and authenticating a Beatra platform integration rather than performing Xiaohongshu note research, which is a strong scope mismatch. That mismatch is dangerous because it can conceal a secondary control plane, cause users to authorize an unrelated service, and make reviewers overlook privileged networked behavior embedded in a seemingly harmless research skill.
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
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 capabilities unrelated to Xiaohongshu note research such as media generation, artifact access, task control, and wallet spending. This violates least-privilege and means that if the token is misused, compromised, or the skill later invokes other MCP features, the account could be exposed far beyond the user’s expected note-research workflow.
Requesting wallet:spend plus multiple generation capabilities is especially dangerous because it can directly enable financial spend and high-cost API actions that are unrelated to the stated purpose of competitor note research. In the context of a research skill, these permissions are unjustified and materially increase the blast radius of token theft, backend misuse, or deceptive post-install behavior.
The client includes a full self-update mechanism that downloads manifests and archives, then replaces installed package files on disk. Even with checksum and path validation, this materially exceeds the stated Xiaohongshu research purpose and creates a software-supply-chain attack surface: compromise of the update service, signing/discovery pipeline, or package channel could lead to arbitrary code replacement in the local installation.
The exposed update command enables self-modification of the installed package, allowing the skill to replace its own codebase. In a research skill, self-modification is especially risky because it is unrelated to the advertised functionality and magnifies any compromise of remote update infrastructure into local code execution or persistent tampering.
)
update = subparsers.add_parser(
"update",
help="Check, install, or configure Beatra package self-updates",
)
update.add_argument(
"--check",
The skill declares broad executable capabilities without any explicit tool scoping or allowlist, while the documented workflow includes shell, network, file, and environment access. In a skill that is presented as content research, this creates unnecessary authority and increases blast radius if the skill is modified, misused, or chained with adversarial input.