Back to skill

Security audit

AI Headshot Studio

Security checks across malware telemetry and agentic risk

Overview

This headshot skill appears to perform the advertised image workflow, but it also requests broad Beatra account permissions and silently updates its local package by default.

Install only if you are comfortable granting this skill a broad Beatra device authorization, allowing your selected face images to be uploaded to Beatra for processing, and accepting silent package updates unless you disable them with the documented update --auto off command.

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 (21)

Lp3

Medium
Category
MCP Least Privilege
Confidence
92% confidence
Finding
The skill advertises a simple headshot-generation workflow but documents capabilities spanning shell, network, file read/write, environment access, and local package modification. Even if these capabilities are used for legitimate support functions, they materially expand the attack surface and violate least privilege when no explicit permissions are declared to the user.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding
The documented behavior goes well beyond transforming selfies: it includes persistent credential handling, arbitrary remote tool invocation through an MCP client, local file upload, registration/telemetry, uninstall actions, and self-update/package replacement. This description-behavior mismatch is dangerous because users may authorize a seemingly narrow media tool while unintentionally granting a much broader operational footprint with account and filesystem consequences.

Description-Behavior Mismatch

Medium
Confidence
95% confidence
Finding
The skill enables automatic package installation/replacement during normal command execution, which is a form of self-modifying behavior unrelated to the immediate user request. Even with integrity checks, silent code replacement increases supply-chain risk and can change local executable behavior without a fresh trust decision at the moment of use.

Context-Inappropriate Capability

Medium
Confidence
90% confidence
Finding
Automatic self-update and package replacement are not necessary to fulfill the narrow business purpose of generating professional headshots. Unnecessary code-modification capability broadens the blast radius of compromise, especially if the update channel, signing keys, or distribution path are ever abused.

Context-Inappropriate Capability

High
Confidence
99% confidence
Finding
The requested OAuth scope is far broader than what an AI headshot skill needs: beyond image generation it asks for videos, music, speech, voice read/write, wallet spending, and task/artifact access. This violates least privilege and, if the skill or its backend is abused, grants an attacker unnecessary access to billable actions and unrelated user data/capabilities.

Description-Behavior Mismatch

High
Confidence
98% confidence
Finding
The authorization flow actively sends an over-privileged scope during device authorization, enabling capabilities far outside the stated purpose of transforming selfies into professional headshots. In the context of a narrowly described image-editing skill, this mismatch is especially risky because users are likely to consent expecting only photo-related access.

Description-Behavior Mismatch

High
Confidence
95% confidence
Finding
For a headshot-generation skill, this file contains broad remote execution plumbing, installation telemetry, credential-backed MCP access, file upload, and a full self-update mechanism that rewrites local package files. That mismatch materially increases supply-chain and abuse risk because the skill can change itself and invoke unrelated remote tools far beyond the declared photo-editing purpose.

Context-Inappropriate Capability

Medium
Confidence
84% confidence
Finding
The code fingerprints the runtime environment using environment variables and local host metadata to classify the host platform. In a selfie-to-headshot skill, this collection is unnecessary to core functionality and increases privacy and tracking risk, especially when paired with remote registration telemetry.

Context-Inappropriate Capability

Medium
Confidence
93% confidence
Finding
The script persists a local inventory of installed skills and registers installation details to a remote service on use. That behavior is unrelated to headshot transformation and creates unnecessary privacy, tracking, and operational risk by maintaining device-local surveillance state and transmitting installation metadata.

Intent-Code Divergence

Low
Confidence
76% confidence
Finding
The function is described as best-effort telemetry that should not affect the creative operation, but it also mutates persistent local inventory state. This discrepancy weakens informed consent and transparency, making the behavior more suspicious in a skill whose declared purpose is image enhancement rather than local state management.

Description-Behavior Mismatch

Medium
Confidence
92% confidence
Finding
This uninstall script manages shared Beatra device credentials and server-side revocation logic, which is outside the stated purpose of an AI headshot generation skill. Even though the code is framed as cleanup, it gives the package authority over shared authentication state for other skills, increasing the blast radius if the script is triggered unexpectedly or modified maliciously.

Context-Inappropriate Capability

Medium
Confidence
90% confidence
Finding
The inventory parsing and last-skill decision logic lets this skill inspect global installation state and participate in decisions about whether shared credentials remain valid. For a headshot tool, this is unjustified privileged behavior and creates an unnecessary trust boundary where a content-focused package can influence authentication persistence and revocation.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The skill states that updates may install automatically without separate confirmation, but this local modification behavior is not prominently surfaced in the main description before use. Silent modification of local files undermines informed consent and makes users less able to assess the trust implications of invoking the skill.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The document states that the client performs silent automatic update checks during ordinary commands and installs higher versions automatically without separate confirmation. Even with integrity checks and rollback protections, modifying an installed package by default during unrelated user actions creates a supply-chain and user-consent risk because code on the system can change unexpectedly and without explicit approval at the time of execution.

Missing User Warnings

Medium
Confidence
92% confidence
Finding
The routing guide instructs use of a remote upload path for local image files but does not require a clear user-facing disclosure that the selfie bytes will be transmitted to an external service. Because this skill processes highly sensitive biometric data in the form of face photos, omission of an explicit transmission warning and consent step can cause users to unknowingly expose personal images to third-party systems.

Missing User Warnings

Medium
Confidence
87% confidence
Finding
The documentation describes automatic outbound installation registration and writes to a local cache file without clearly warning users that package metadata, platform information, and a stable external installation reference may be transmitted and persisted automatically. While the data described is limited and non-secret, silent telemetry and filesystem modification can undermine user consent, violate privacy expectations, and create compliance issues in restricted or regulated environments.

Missing User Warnings

Medium
Confidence
82% confidence
Finding
The authorization request includes host platform, device name, installation reference, package metadata, and then stores credentials locally, but the user-facing messaging only discusses opening the approval page. While these actions may be operationally legitimate, the lack of explicit notice reduces informed consent and can expose identifying device metadata and persistent tokens without the user understanding that collection/storage is occurring.

Missing User Warnings

Medium
Confidence
96% confidence
Finding
The code performs silent automatic self-updates that can replace local installation files during normal operation without contemporaneous user notice. Even with checksum and manifest validation, unattended code mutation expands supply-chain risk and makes a benign-looking headshot skill capable of changing behavior after installation.

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
88% confidence
Finding
Referencing credentials.json as part of the state this skill removes indicates the package is aware of and authorized to manipulate shared credential material. In the context of a headshot-generation skill, touching a shared credential store is over-privileged and dangerous because compromise or misuse could disrupt or abuse account-level access across multiple skills.

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
95% confidence
Finding
The _device_token function reads an access token from ~/.beatra/credentials.json so the skill can submit an authenticated revoke request. This is direct credential access by a skill whose advertised function is image transformation, making the behavior highly suspicious and expanding the consequences of package compromise to include token misuse, account disruption, or unintended revocation.

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
94% confidence
Finding
Self-modification is especially dangerous in a skill whose stated purpose is headshot generation because it grants the package ongoing ability to alter its own code and behavior locally. Although this updater includes several integrity checks, the capability itself materially increases the blast radius of any compromise of the update channel, signing process, or upstream service.

VirusTotal

VirusTotal findings are pending for this skill version.

View on VirusTotal

Static analysis

No suspicious patterns detected.