Back to skill

Security audit

wechat-article-visual-pack

Security checks across malware telemetry and agentic risk

Overview

The skill can perform its advertised image-pack workflow, but it also uses broad account permissions, telemetry, shared credentials, and silent self-updates that deserve review before installation.

Install only if you are comfortable granting this Beatra skill a shared device authorization with paid spending ability and broader media scopes than images. Consider disabling automatic updates with `python3 scripts/mcp_client.py update --auto off`, review what is stored under `~/.beatra`, and revoke the device from the Beatra Console if you no longer trust the integration.

SkillSpector

By NVIDIA
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Rogue AgentSelf-Modification, Session Persistence
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
Findings (19)

Lp3

Medium
Category
MCP Least Privilege
Confidence
95% confidence
Finding
The skill declares no permissions, yet its documented behavior requires shell execution, network access, local file access, file writes, and likely environment access through the bundled client. This creates a transparency and trust problem: users and hosting systems cannot accurately assess or constrain the skill’s real capabilities, increasing the chance of unexpected data access or remote actions.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding
The skill’s stated purpose is image pack creation, but the bundled workflow also includes authentication flows, persistent credential storage, arbitrary remote tool invocation through an MCP client, uploads, telemetry/registration, uninstall logic, and package updating. That gap materially increases attack surface and can mislead users into authorizing a much more privileged and stateful integration than the description suggests.

Context-Inappropriate Capability

Medium
Confidence
93% confidence
Finding
The skill includes a self-updating client installation mechanism that is unrelated to the core task of generating WeChat visuals. Even if updates are described as verified and limited to official sources, self-update logic introduces a software supply-chain risk: compromise of the update channel, manifest process, or package ownership checks could lead to code execution on the host.

Description-Behavior Mismatch

High
Confidence
99% confidence
Finding
The OAuth scope string requests a much broader permission set than is justified by a skill described as creating WeChat visual packs. In particular, wallet spending plus speech, voices, music, and video capabilities materially expand the blast radius if the credential is misused, compromised, or the backend later invokes capabilities the user did not reasonably expect.

Context-Inappropriate Capability

High
Confidence
96% confidence
Finding
The skill requests audio, voice, music, and video generation permissions despite being presented as a WeChat article visual-pack tool. These excess permissions are inconsistent with user expectations and increase exposure if the token is abused, even if the code itself only intends to support image generation today.

Context-Inappropriate Capability

Medium
Confidence
96% confidence
Finding
The skill requests audio, voice, music, and video generation permissions despite being presented as a WeChat article visual-pack tool. These excess permissions are inconsistent with user expectations and increase exposure if the token is abused, even if the code itself only intends to support image generation today.

Description-Behavior Mismatch

Medium
Confidence
96% confidence
Finding
The client includes broad non-core behavior—self-update, installation registration, inventory management, and telemetry—that materially exceeds the stated purpose of generating WeChat visual packs. In a skill context, this expanded capability increases attack surface and trust requirements, especially because the code can modify local files and maintain persistent state unrelated to the creative task.

Context-Inappropriate Capability

Medium
Confidence
94% confidence
Finding
The code fingerprints the host environment using environment variables and persisted host metadata to attribute requests to a specific agent platform. That data collection is unrelated to creating article visuals and creates unnecessary privacy and behavioral-tracking risk inside an agent ecosystem.

Context-Inappropriate Capability

Medium
Confidence
97% confidence
Finding
The skill records a local inventory of installed skills and sends installation registration telemetry on normal use, neither of which is justified by the declared content-generation purpose. This creates undisclosed local tracking and outbound metadata flow that could reveal user environment details or be repurposed for broader monitoring.

Description-Behavior Mismatch

Medium
Confidence
93% confidence
Finding
The script is explicitly designed to manage shared device credentials and perform remote OAuth revocation during uninstall, which is outside the skill's declared visual-content purpose and gives the package authority over account/session state. Even though the code is cautious and not overtly malicious, this creates a meaningful trust-boundary mismatch: installing or uninstalling a content-generation skill should not require handling shared authentication material for other skills.

Context-Inappropriate Capability

Medium
Confidence
95% confidence
Finding
This code reads an access token from ~/.beatra/credentials.json and uses it to call a remote OAuth revocation endpoint. Accessing and acting on bearer tokens from a skill package is dangerous because any compromise, modification, or misuse of this script could revoke shared authorization or be repurposed to exfiltrate credentials, and the behavior is unrelated to generating WeChat visual assets.

Missing User Warnings

Medium
Confidence
96% confidence
Finding
The bundled client is documented to auto-install newer releases during normal command execution without separate user confirmation. Silent updates weaken user control and change the executed code after approval, which is especially risky in a skill that also has network, shell, file, and credential-handling capabilities.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The document states that the client silently checks for and automatically installs updates by default, without separate confirmation. Even though the update path includes integrity checks and rollback protections, default silent modification of installed package files increases supply-chain and user-consent risk because software behavior can change without an explicit user action at the time of modification.

Missing User Warnings

Medium
Confidence
83% confidence
Finding
The document states that on first use the bundled client makes an automatic network registration call transmitting package slug, version, platform, and a stable external installation reference, but it does not present this as a user-facing warning or consent requirement. Even if the data is described as non-secret and non-billable, the behavior creates a privacy-relevant telemetry channel and persistent installation tracking risk, especially because the installation reference is stable across time.

Missing User Warnings

Medium
Confidence
98% confidence
Finding
The client performs silent automatic self-updates that can replace local package files during normal command execution without contemporaneous user approval. Even though the implementation includes integrity checks, silent self-modification is high risk in a skill because any compromise of the update channel, release process, or vendor account could push new code onto the host unexpectedly.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
Installation telemetry is sent automatically as part of session setup, with failures intentionally hidden so the primary operation continues. This makes the data flow non-transparent to users and harder to monitor, which is risky given the skill's stated purpose does not require telemetry.

Credential Access

High
Category
Privilege Escalation
Content
#: these and then removes the directory only if it is empty — the script
#: never recursively deletes a directory it does not fully understand.
_STATE_FILES = (
    "credentials.json",
    "installation.json",
    "host.json",
    "skills.json",
Confidence
89% confidence
Finding
The presence of credentials.json in the managed state files indicates the uninstall flow deletes shared credential material from ~/.beatra. Even though deletion is intended for cleanup, touching credential files from a skill package is sensitive because it affects authentication state beyond the skill's stated function and could disrupt other installed skills if the inventory logic fails or is tampered with.

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
97% confidence
Finding
Reading credentials.json to extract an access_token is direct credential access. In the context of a visual-pack skill, this is especially suspicious because the skill has no business need to inspect shared bearer tokens; if abused, such access could enable account actions, token misuse, session disruption, or future credential exfiltration.

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
98% confidence
Finding
The skill exposes a self-update capability that can rewrite files in its installation root, which is a direct self-modification mechanism. In the context of a creative skill, this is unusually dangerous because it allows code changes on the host outside the core task scope and combines with silent update paths elsewhere in the file.

VirusTotal

VirusTotal findings are pending for this skill version.

View on VirusTotal

Static analysis

No suspicious patterns detected.