Back to skill

Security audit

live-commerce-script-studio

Security checks across malware telemetry and agentic risk

Overview

The skill’s live-commerce workflow is coherent, but it also installs broad Beatra credentials and silently self-updates package code by default.

Review this carefully before installing. It will use a shared Beatra device token in ~/.beatra, can spend Beatra credits after the skill’s approval step, records install metadata, and silently updates itself unless disabled with `python3 scripts/mcp_client.py update --auto off`. The core workflow is not deceptive, but the broad OAuth scopes and default self-update behavior are more authority than a simple script-writing skill needs.

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
94% confidence
Finding
The skill declares itself as a script-writing workflow but instructs the agent to use shell, network, file, and environment capabilities without declaring or constraining them. That gap weakens user consent and review because the skill can perform credentialed remote operations, local state changes, and file modifications that are broader than expected from the description.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding
The documented behavior substantially exceeds the advertised purpose by adding OAuth login, persistent credential storage, generic remote tool invocation, uploads, telemetry/registration, uninstall logic, and self-update. This is dangerous because users may authorize a seemingly narrow content-creation skill while unknowingly granting a broader software management and networked execution surface.

Description-Behavior Mismatch

Medium
Confidence
89% confidence
Finding
The skill is presented as writing scripts, but its execution path includes remote media generation and package self-updating. Even if those features are legitimate, bundling them into a content-authoring skill expands the attack surface and makes risk harder for users and reviewers to assess.

Context-Inappropriate Capability

High
Confidence
98% confidence
Finding
Automatic self-update with silent checks and in-place replacement is a high-risk capability that is not necessary for the core job of producing live-commerce scripts. Any compromise of the update channel, validation logic, or package ownership boundaries could turn a content skill into a code delivery mechanism with persistent local impact.

Description-Behavior Mismatch

High
Confidence
98% confidence
Finding
The OAuth scope string requests a very broad set of capabilities, including images, videos, music, speech, voice management, artifact access, task control, and wallet spending, while the skill is described primarily as a live-commerce script generation tool. This violates least-privilege and means a compromise or misuse of the skill's credential could grant access far beyond script-writing needs.

Context-Inappropriate Capability

Critical
Confidence
88% confidence
Finding
The inclusion of voices:read and voices:write goes beyond simple spoken-line generation, which would typically only require speech generation. These administrative voice permissions could allow enumeration or modification of voice assets not necessary for the skill's core purpose.

Context-Inappropriate Capability

High
Confidence
88% confidence
Finding
The inclusion of voices:read and voices:write goes beyond simple spoken-line generation, which would typically only require speech generation. These administrative voice permissions could allow enumeration or modification of voice assets not necessary for the skill's core purpose.

Context-Inappropriate Capability

Medium
Confidence
88% confidence
Finding
The inclusion of voices:read and voices:write goes beyond simple spoken-line generation, which would typically only require speech generation. These administrative voice permissions could allow enumeration or modification of voice assets not necessary for the skill's core purpose.

Description-Behavior Mismatch

High
Confidence
97% confidence
Finding
The file implements a full remote self-update mechanism that downloads manifests and archives, validates them, and replaces installed package files on disk. Even with checksum and path validation, this materially exceeds the declared live-commerce scripting purpose and creates a supply-chain execution path where compromise of the vendor update infrastructure or signing/distribution process can silently alter local code.

Description-Behavior Mismatch

Medium
Confidence
90% confidence
Finding
The client records local skill inventory and sends installation telemetry unrelated to generating live-commerce scripts. This creates unnecessary data collection about installed packages, platform, and installation identifiers, expanding privacy and tracking risk without clear user benefit.

Context-Inappropriate Capability

Medium
Confidence
88% confidence
Finding
The code fingerprints the host environment by inspecting environment variables and local host metadata to classify the agent platform. For a script-writing skill, this is not necessary for core functionality and increases privacy risk while enabling environment-aware behavior that could differ across hosts.

Description-Behavior Mismatch

High
Confidence
98% confidence
Finding
This file implements uninstall logic that inspects shared state under ~/.beatra, deletes local files, and may revoke a shared device authorization token, which is unrelated to the stated purpose of generating live-commerce scripts. In a skill whose business function is content/script creation, hidden credential and uninstall management is risky because it expands privileges and can disrupt other installed skills or the host environment.

Context-Inappropriate Capability

High
Confidence
99% confidence
Finding
The code reads shared credential material from ~/.beatra/credentials.json and can send that bearer token to a remote revocation endpoint, even though the skill’s declared functionality does not justify any credential lifecycle control. Handling shared device credentials inside an unrelated skill creates unnecessary access to sensitive tokens and introduces the possibility of revoking authentication used by other components, causing denial of service or unauthorized credential handling.

Missing User Warnings

Medium
Confidence
89% confidence
Finding
The document states that the client silently checks for and automatically installs updates before ordinary commands, without separate confirmation. Even with integrity and origin checks described later, silent self-modifying behavior can surprise users, alter local files, and create operational or trust risks because system state changes occur without an explicit just-in-time warning or consent.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The normal command path invokes maybe_auto_update(), which can silently fetch and apply code updates before performing the requested operation. Silent modification of installed executable files is dangerous because users may not realize the code changed, and any compromise of the update source turns routine usage into a delivery channel for altered code.

Missing User Warnings

Low
Confidence
84% confidence
Finding
Installation telemetry and local inventory recording happen automatically during session setup and registration without a user-facing disclosure in the common path. While not directly enabling code execution, this undermines transparency and can expose metadata about local installations and usage patterns.

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
96% confidence
Finding
The declared state file set includes credentials.json, showing this script is designed to manipulate a shared credential store during uninstall. In the context of a live-commerce script generator, any code path that targets credential files is out of scope and dangerous because it normalizes access to secrets and can delete or interfere with authentication state beyond this skill’s legitimate needs.

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
99% confidence
Finding
The _device_token function reads and parses ~/.beatra/credentials.json to extract an access token, which is direct credential access. For a skill whose advertised purpose is script generation, reading bearer tokens is unjustified and materially increases the risk of credential misuse, accidental disclosure, or remote actions performed with shared authorization.

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
96% confidence
Finding
The exposed update command enables the package to modify its own installed files, which is self-modification behavior. In a skill whose purpose is live-commerce script generation, this significantly increases supply-chain and persistence risk because routine users are given a mechanism to replace executable package content from a remote source.

VirusTotal

VirusTotal findings are pending for this skill version.

View on VirusTotal

Static analysis

No suspicious patterns detected.