Back to skill

Security audit

ai-logo-maker

Security checks across malware telemetry and agentic risk

Overview

The skill appears to support logo generation, but it also requests broad Beatra account powers and silently updates local package files, so it needs user review before installation.

Install only if you are comfortable granting Beatra a persistent shared device authorization that covers more than logo generation, including other media tools and wallet spending, and if you accept default silent package updates. Consider disabling auto-updates with the documented command after install and revoking the device in the Beatra Console when done.

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
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
Findings (26)

Lp3

Medium
Category
MCP Least Privilege
Confidence
95% confidence
Finding
The skill advertises a narrow logo-generation function, yet its instructions require shell execution, filesystem access, network calls, environment access, and file writes via a bundled client and update flow. Undeclared capabilities weaken user and platform transparency, making it easier to conceal sensitive operations such as credential handling, uploads, or local modification behind an apparently simple creative tool.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding
This is a strong description-behavior mismatch: the visible description promises logo creation, while the documented behavior includes OAuth sign-in, persistent credential storage, generic remote tool access, uploads, telemetry/registration, uninstall logic, and self-update with package replacement. That mismatch materially increases security risk because users may consent to a design workflow without realizing the skill can authenticate, persist tokens, transmit files, and modify its own installation.

Context-Inappropriate Capability

Medium
Confidence
96% confidence
Finding
The skill includes self-updating package-management behavior unrelated to its core logo-making purpose, including automatic download, installation, rollback, and file replacement. Any self-update path expands the trusted computing base and creates a supply-chain and local-integrity risk: if the update channel, signing assumptions, or client logic are compromised, the skill can alter local code without task-specific approval.

Description-Behavior Mismatch

Medium
Confidence
94% confidence
Finding
The documented behavior extends beyond logo generation into software maintenance and local file replacement operations, which are not reasonably implied by the manifest. Even if integrity checks are described, embedding installation-management behavior inside a creative skill increases attack surface and obscures the real risk profile from users and reviewers.

Description-Behavior Mismatch

Medium
Confidence
93% confidence
Finding
The document describes first-use installation telemetry that sends package slug, version, platform, and a stable external installation reference, even though the skill's stated purpose is logo generation. Collecting and transmitting operational metadata unrelated to the user-facing function expands the skill's data footprint and creates unnecessary privacy and supply-chain tracking risk, especially because it occurs automatically on first use.

Context-Inappropriate Capability

Medium
Confidence
91% confidence
Finding
The documented use of a real agent environment/platform value resolved from environment signatures or a host file constitutes environment fingerprinting beyond what is needed for a logo-making skill. Such host characterization can aid tracking, correlation across runs, and targeting of environment-specific behavior, making the skill more dangerous because the metadata collection is not justified by the declared creative use case.

Description-Behavior Mismatch

High
Confidence
99% confidence
Finding
The requested OAuth scope set is far broader than the advertised purpose of a logo-making skill. In addition to image generation, it requests artifacts, tasks, speech, music, video, voice, and wallet spending permissions, violating least privilege and creating unnecessary blast radius if the token is misused or the service is compromised.

Context-Inappropriate Capability

Critical
Confidence
99% confidence
Finding
The scope includes audio, video, music, and voice capabilities that do not align with a logo generator's stated function. These excess privileges expand what an attacker or buggy downstream component can do with the token, including generating unrelated media or consuming billable resources without user expectation.

Context-Inappropriate Capability

High
Confidence
99% confidence
Finding
The scope includes audio, video, music, and voice capabilities that do not align with a logo generator's stated function. These excess privileges expand what an attacker or buggy downstream component can do with the token, including generating unrelated media or consuming billable resources without user expectation.

Context-Inappropriate Capability

Medium
Confidence
83% confidence
Finding
The code detects host platform and device name, then persists local inventory information about installed skill paths. While this appears intended for operational tracking and shared-credential management, it collects metadata beyond what users would reasonably infer from a logo-maker and increases privacy sensitivity if exposed or later transmitted.

Description-Behavior Mismatch

Medium
Confidence
90% confidence
Finding
The skill includes a full self-update mechanism that downloads remote manifests and archives and then replaces files in its own installation directory. Even though it performs substantial validation, this capability is outside the declared logo-making behavior and materially expands the trust boundary: compromise of the vendor update infrastructure or signing/release pipeline would give the remote service code-execution-by-update over local skill files.

Description-Behavior Mismatch

Medium
Confidence
89% confidence
Finding
The code records local skill inventory and sends installation registration data to a remote service, including package slug, version, platform, and installation reference, without this behavior being apparent from the skill's logo-generation description. This creates undisclosed telemetry and metadata exposure that can be used for user/device tracking and violates least surprise.

Context-Inappropriate Capability

Medium
Confidence
87% confidence
Finding
The skill fingerprints the host environment by inspecting agent-specific environment variables and persisted host metadata to derive a platform identifier. For a logo-maker skill, this is unrelated to core functionality and increases privacy risk by enabling environment identification and correlation across requests and installations.

Description-Behavior Mismatch

Medium
Confidence
97% confidence
Finding
The uninstall script manages a shared Beatra device connection, local credential state, and possible remote token revocation even though the skill is presented as an AI logo maker. That mismatch expands the skill’s privilege footprint beyond user expectations and creates unnecessary access to authentication material, which is dangerous in a low-trust plugin ecosystem.

Context-Inappropriate Capability

Medium
Confidence
96% confidence
Finding
This code issues an authenticated POST to revoke a device token and later deletes local state, giving the skill active control over shared authorization. In the context of a logo-generation skill, that capability is unrelated to the advertised function and could be abused to disrupt other installed skills or interfere with account/device access if the package is modified or invoked unexpectedly.

Missing User Warnings

Medium
Confidence
97% confidence
Finding
Automatic installation updates without separate confirmation are dangerous because they permit code changes during ordinary use of a public command, outside the user's immediate approval context. Even with fixed sources and hash checks, silent updates can introduce unexpected behavior, break trust boundaries, and magnify the impact of any compromise of the publisher, discovery metadata, or bundled updater.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The document states that the client silently checks for updates and automatically installs newer releases by default before ordinary commands, without an explicit up-front warning in the normal user flow that local files will be modified. Even with integrity checks and rollback protections, silent self-modifying behavior increases supply-chain and user-consent risk because users may not realize the tool can change installed code during unrelated operations.

Missing User Warnings

Low
Confidence
84% confidence
Finding
The documentation states that the client performs a network registration call and writes a local cache file, but it does not clearly present this as a user-facing warning or consent boundary. Silent data transmission and filesystem modification undermine user expectations and informed consent, particularly in a skill whose advertised purpose is purely creative.

Missing User Warnings

Medium
Confidence
86% confidence
Finding
`write_host_config` writes platform and optional device name to disk without any user-facing notice. Even if stored locally, this is host fingerprinting metadata that can reveal environment details and persist longer than users expect for a simple logo-generation skill.

Missing User Warnings

Medium
Confidence
87% confidence
Finding
The skill records a local inventory of installed skill paths and platform values without informing the user. Full installation paths may reveal usernames, directory structures, or enterprise naming conventions, which makes this more privacy-invasive than expected for the stated product purpose.

Missing User Warnings

Medium
Confidence
92% confidence
Finding
The device authorization request sends platform, package metadata, external installation reference, and optionally device name to the remote service without explicit disclosure to the user. This creates avoidable privacy and tracking risk because the transmitted metadata exceeds what is obviously necessary for a logo-creation workflow.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
maybe_auto_update() performs silent, best-effort updates that can modify local package files during normal command execution without a contemporaneous user warning. Silent code replacement is dangerous because it changes what the skill will execute in future runs and can turn a network or supply-chain compromise into persistent local code modification.

Missing User Warnings

Medium
Confidence
90% confidence
Finding
register_installation() sends installation metadata to a remote backend on use as 'best effort' telemetry, without any user-facing notice in this code path. Hidden outbound registration increases privacy risk and can enable tracking of installs and usage patterns beyond the logo-making function users expect.

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
94% confidence
Finding
The declared state files include credentials.json, showing the skill is designed to touch shared credential storage under ~/.beatra. Access to shared credentials is highly sensitive, and in a logo-maker skill this is unjustified and increases the blast radius if the skill is compromised, repurposed, or simply misused.

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
98% confidence
Finding
The _device_token function reads access_token from credentials.json, which is direct credential access. For a skill whose purpose is logo generation, this is unrelated to core functionality and materially raises the risk of credential theft, misuse, or unauthorized account/device actions.

VirusTotal

VirusTotal findings are pending for this skill version.

View on VirusTotal

Static analysis

No suspicious patterns detected.