Back to skill

Security audit

wechat-cover-maker

Security checks across malware telemetry and agentic risk

Overview

The skill mostly does what it says, but it asks for broad Beatra account authority and can silently update its own installed files during normal use.

Install only if you are comfortable granting this package a broad Beatra device authorization, allowing it to store a shared token in `~/.beatra`, upload selected local files to Beatra, register installation metadata, and auto-update its package files unless you disable updates with `python3 scripts/mcp_client.py update --auto off`.

SkillSpector

By NVIDIA
Vulnerability Patterns
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Rogue AgentSelf-Modification, Session Persistence
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
Findings (20)

Lp3

Medium
Category
MCP Least Privilege
Confidence
93% confidence
Finding
The skill declares no permissions while its documented behavior clearly involves shell execution, network access, local file read/write, environment use, and remote uploads. This mismatch prevents informed consent and weakens sandboxing or policy enforcement, increasing the chance that users or hosts will authorize a skill with broader capabilities than expected.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding
The skill is presented as an image-cover generator, but the documentation also describes account authentication, persistent credential storage, generic MCP tool invocation, local file upload, telemetry/registration, uninstall cleanup, and self-update behavior. That breadth materially exceeds the advertised purpose and creates hidden attack surface, especially because generic remote tool invocation and persistent auth state can be abused if the remote service or update path is compromised.

Context-Inappropriate Capability

Medium
Confidence
95% confidence
Finding
The skill performs silent self-update and package replacement during normal command execution, which is unrelated to the core image-generation task. Even with stated integrity checks, automatic code replacement expands the trust boundary to remote infrastructure and creates a supply-chain execution path that can modify local code without a contemporaneous user decision.

Description-Behavior Mismatch

Medium
Confidence
94% confidence
Finding
The file documents package installation registration, environment/platform collection, and local registration caching that are unrelated to the stated purpose of generating WeChat cover images. This capability expands the skill's behavior beyond user-expected image generation and creates an unnecessary telemetry surface that could expose installation metadata without clear justification.

Context-Inappropriate Capability

Medium
Confidence
96% confidence
Finding
The documented use of environment signatures and host metadata to resolve a persistent platform field amounts to environment fingerprinting that is not justified by a cover-image generation skill. Even if described as non-secret, this metadata can still support tracking, profiling, or correlation of installations across sessions and systems.

Description-Behavior Mismatch

High
Confidence
99% confidence
Finding
The skill is described as a WeChat cover/image generator, but the requested OAuth scope includes many unrelated capabilities such as artifacts write/read, videos, music, speech, voices, task control, and wallet spending. This violates least privilege and would grant the skill a much broader blast radius than its stated function requires, enabling misuse of the user's account or resources if the skill or its backend is compromised.

Context-Inappropriate Capability

Critical
Confidence
99% confidence
Finding
The requested scopes include audio, video, speech, and voice permissions that do not match the skill's stated purpose of generating article cover images. In the context of a visual-cover skill, these extra capabilities materially increase attack surface and could be leveraged to generate or access unrelated media resources under the user's authorization.

Context-Inappropriate Capability

High
Confidence
99% confidence
Finding
The requested scopes include audio, video, speech, and voice permissions that do not match the skill's stated purpose of generating article cover images. In the context of a visual-cover skill, these extra capabilities materially increase attack surface and could be leveraged to generate or access unrelated media resources under the user's authorization.

Description-Behavior Mismatch

High
Confidence
95% confidence
Finding
The client contains extensive self-update, package download, archive validation, installation mutation, rollback, and state-management logic unrelated to generating WeChat cover images. Even though the updater includes several safety checks, bundling self-modifying install logic into a creative-image skill materially expands the attack surface and enables remote code changes if the upstream distribution channel or metadata is ever compromised.

Description-Behavior Mismatch

Medium
Confidence
89% confidence
Finding
The skill records installation telemetry and local inventory data, including install path, platform, timestamps, and registration state, beyond the narrowly stated purpose of creating cover images. This unnecessary data collection increases privacy risk and creates an additional metadata trail about the local environment and installed tools.

Context-Inappropriate Capability

Medium
Confidence
91% confidence
Finding
The code fingerprints the host environment by inspecting environment variables and local host metadata to classify the agent platform. For a cover-generation skill, this is not obviously necessary and increases privacy exposure while enabling backend correlation of user environment details with tool usage.

Description-Behavior Mismatch

Medium
Confidence
91% confidence
Finding
The uninstall script manages and may delete shared state under ~/.beatra, including revoking a device credential that is not specific to this image-generation skill. Even though the code contains safeguards to avoid revoking while other skills remain installed, this is still security-sensitive cross-skill account/state management that exceeds the narrow functional scope of a cover-maker skill and could disrupt other installed skills if inventory/state is inaccurate or tampered with.

Context-Inappropriate Capability

Medium
Confidence
90% confidence
Finding
This code performs remote device authorization revocation by sending the bearer token to a central revoke endpoint during uninstall. For a WeChat cover generation skill, embedding account/device revocation capability is not justified by the advertised purpose and creates an unnecessary privileged operation that can disable broader platform access if misused or triggered in the wrong context.

Missing User Warnings

Medium
Confidence
92% confidence
Finding
Automatic updates occur without separate confirmation and without a prominent inline warning in the primary usage flow. That means users may trigger network retrieval and local package replacement while believing they are only requesting image generation, undermining consent and making malicious or mistaken updates harder to detect in time.

Missing User Warnings

Medium
Confidence
82% confidence
Finding
The document states that the client silently checks for and automatically installs updates by default, without separate confirmation. Even with integrity checks and rollback protections, modifying local package files automatically can violate user expectations, weaken change control, and create supply-chain risk if the trusted update channel is ever compromised.

Missing User Warnings

Medium
Confidence
92% confidence
Finding
The documentation states that the client automatically sends a registration call and writes to ~/.beatra/registrations.json on first use, but it does not indicate any explicit user warning or consent flow. Silent network transmission and filesystem modification undermine user expectations, especially for a creative tool whose advertised function does not require background registration behavior.

Missing User Warnings

Low
Confidence
79% confidence
Finding
The script writes platform and device_name metadata to host.json without any user-facing notice or consent flow. While not a direct code-execution flaw, it persists potentially sensitive host-identifying information that could reveal the user's environment or hostname to other local processes or future components reading that state directory.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The skill performs best-effort silent automatic updates during normal execution, modifying installed package files without an interactive warning at runtime. In the context of a content-generation skill, silent self-modification is especially risky because users would not reasonably expect remote code changes as part of ordinary image-cover operations.

Credential Access

High
Category
Privilege Escalation
Content
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):
Confidence
87% confidence
Finding
The script reads ~/.beatra/credentials.json to extract an access token and uses it to perform account/device revocation. Although the apparent purpose is cleanup rather than theft, this is still direct handling of a shared bearer credential by a skill package unrelated to credential management, increasing exposure of sensitive tokens and coupling the skill to privileged platform state.

Self-Modification

High
Category
Rogue Agent
Content
)
    update = subparsers.add_parser(
        "update",
        help="Check, install, or configure Beatra package self-updates",
    )
    update.add_argument(
        "--check",
Confidence
95% confidence
Finding
Exposing self-update capability in the command interface confirms that this skill can modify its own installed codebase. In a skill whose declared purpose is image generation, self-modification is disproportionate to function and becomes dangerous if the update channel, signing/checksum process, or distribution authority is compromised.

VirusTotal

VirusTotal findings are pending for this skill version.

View on VirusTotal

Static analysis

No suspicious patterns detected.