Back to skill

Security audit

publish-preflight-studio

Security checks across malware telemetry and agentic risk

Overview

The skill does the advertised copy and cover workflow, but it also requests broad Beatra powers and silently updates its own package by default.

Install only if you are comfortable giving Beatra a persistent shared device credential with broad media, wallet, artifact, and task access. Before using it, consider disabling automatic updates with the documented update command, avoid uploading sensitive local files, and revoke the Beatra device authorization when you no longer need the skill.

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
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (21)

Lp3

Medium
Category
MCP Least Privilege
Confidence
95% confidence
Finding
The skill declares itself as a copy-review workflow, but its documented execution requires shell, file, network, environment, and upload capabilities without any explicit permission framing or minimization. That mismatch increases the chance of over-privileged execution and user surprise, especially because the workflow can read local files, upload assets, and modify local package state.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding
The documented behavior materially exceeds the advertised purpose: beyond copy screening and cover rendering, it performs OAuth authorization, persistent credential storage, telemetry/registration, arbitrary remote tool access through an MCP client, local file upload, uninstall logic, and package lifecycle management. Hidden operational behaviors like these create a trust-boundary violation and can expose credentials, local content, and system integrity in ways a user would not reasonably expect from a writing-review skill.

Description-Behavior Mismatch

Medium
Confidence
94% confidence
Finding
The skill includes package self-update and local file replacement behavior even though its stated function is pre-publish copy review and optional cover generation. Introducing self-modifying installation behavior into an unrelated content workflow enlarges the attack surface and creates supply-chain and persistence risk on the host system.

Context-Inappropriate Capability

High
Confidence
99% confidence
Finding
Silent remote self-update is especially risky because it allows code on the local installation to change without explicit user approval in a skill that is not expected to administer software. Even with integrity checks, the behavior creates a strong supply-chain trust dependency and enables unanticipated capability changes after initial review.

Description-Behavior Mismatch

High
Confidence
99% confidence
Finding
The OAuth scope request is far broader than the skill’s stated purpose of copy checking and cover rendering. Requesting unrelated capabilities violates least privilege and increases blast radius if the credential is abused, leaked, or the service account is later used by other code paths.

Context-Inappropriate Capability

Critical
Confidence
98% confidence
Finding
The requested media and voice-generation scopes exceed what is needed for a preflight copy-checking tool, especially voices read/write, music generation, speech generation, and video generation. Overbroad capability grants make compromise more damaging and allow misuse of user-authorized tokens for unrelated content-generation actions.

Context-Inappropriate Capability

High
Confidence
98% confidence
Finding
The requested media and voice-generation scopes exceed what is needed for a preflight copy-checking tool, especially voices read/write, music generation, speech generation, and video generation. Overbroad capability grants make compromise more damaging and allow misuse of user-authorized tokens for unrelated content-generation actions.

Context-Inappropriate Capability

Medium
Confidence
94% confidence
Finding
`tasks:cancel` is not justified by the described review-and-fix workflow and grants operational control over tasks beyond what a simple preflight reviewer should need. While less severe than spending authority, it still expands the credential’s reach and could disrupt legitimate user operations if abused.

Description-Behavior Mismatch

High
Confidence
96% confidence
Finding
The file implements broad package self-update functionality that can fetch, validate, and replace installed package files, which is unrelated to the advertised copy-checking purpose of the skill. Even with integrity checks, self-modifying code materially expands the trust boundary and attack surface, and a compromise of the update channel or service operator would permit remote code replacement on the user's system.

Description-Behavior Mismatch

High
Confidence
98% confidence
Finding
The client exposes generic remote MCP tool listing and arbitrary tool invocation via 'tools' and 'call', rather than limiting operations to the narrow preflight functions described in the manifest. This creates a capability mismatch where installing a benign-seeming copy-review skill effectively grants a general remote command surface to whatever tools the backend chooses to expose.

Context-Inappropriate Capability

Medium
Confidence
88% confidence
Finding
The code fingerprints the execution environment using environment variables and host metadata to derive a platform identity, which is not necessary for checking marketing copy. This collects contextual device/agent information beyond the stated purpose and can support tracking, profiling, or differential backend behavior without clear user benefit.

Context-Inappropriate Capability

Medium
Confidence
93% confidence
Finding
The skill records a local inventory of installed skills and performs remote installation registration/telemetry, neither of which is justified by the manifest's copy-review purpose. This creates unnecessary data collection and persistence about the user's environment and usage, increasing privacy and supply-chain risk if the service or stored metadata is misused.

Description-Behavior Mismatch

High
Confidence
98% confidence
Finding
This uninstall script manages and potentially revokes a shared Beatra device credential and deletes global client state, behavior that is materially unrelated to the skill’s advertised purpose of social-media copy checking and cover rendering. Even if framed as cleanup logic, bundling credential lifecycle control into an unrelated skill increases the attack surface and gives the package authority over shared authentication state that could disrupt other skills or the host environment.

Context-Inappropriate Capability

High
Confidence
98% confidence
Finding
The code performs a network POST to revoke a device bearer token, granting this skill the ability to invalidate shared authentication for the host. In the context of a copy-review skill, this capability is unjustified and dangerous because compromise, misuse, or unexpected execution could disconnect the user from platform services and affect other installed skills.

Context-Inappropriate Capability

Medium
Confidence
95% confidence
Finding
The script enumerates and deletes files in the shared ~/.beatra state directory, including installation, host, inventory, registration, and credential-related metadata. Although it attempts to be cautious, this still gives an unrelated skill the power to remove cross-skill local state, which can break platform behavior, erase auditability, and interfere with other installed components.

Natural-Language Policy Violations

Medium
Confidence
97% confidence
Finding
Enabling automatic updates silently without prior opt-in undermines informed consent and can change the code and behavior of the skill after deployment. In a package with file, shell, and network capabilities, silent updates materially increase operational and supply-chain risk even if the vendor claims verification controls.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The document states that the client performs silent automatic updates by default and installs newer versions without separate confirmation. Even though it describes integrity checks and rollback protections, this is still security-relevant system-modifying behavior that can surprise users, alter local files unexpectedly, and increase supply-chain risk if the trusted update source or signing/checksum workflow is ever compromised.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The maybe_auto_update() path silently checks for and applies updates during normal command execution, modifying installed files without contemporaneous user approval. Silent self-modification is dangerous in a skill whose advertised function is simple content review because users are unlikely to expect code changes at runtime, and the behavior increases the blast radius of backend or update-channel compromise.

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
91% confidence
Finding
Referencing credentials.json as part of the uninstall state set indicates the skill is designed to handle shared credential material. For a social-media preflight skill, access to shared credential storage is over-privileged and raises the risk of unauthorized credential destruction or future credential misuse if the package is modified or abused.

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
The _device_token function reads an access token from ~/.beatra/credentials.json, meaning this skill can directly access bearer credentials for the shared device connection. Direct credential access is unnecessary for the declared copy-checking use case and is dangerous because any skill with token read access can revoke, reuse, or exfiltrate authentication material.

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
97% confidence
Finding
The CLI exposes a self-update capability that can replace package files on disk, giving this skill a code-modification mechanism beyond its declared purpose. In the context of a pre-publish copy checker, self-modification is especially risky because it is unexpected, can alter future behavior without review, and compounds the impact of any compromise in the remote update pipeline.

VirusTotal

VirusTotal findings are pending for this skill version.

View on VirusTotal

Static analysis

No suspicious patterns detected.