Back to skill

Security audit

bilibili-publishing-pack

Security checks across malware telemetry and agentic risk

Overview

This Bilibili helper is not proven malicious, but it uses broad Beatra account permissions and silent self-updates beyond the narrow copy-and-thumbnail task.

Install only if you are comfortable giving this package a shared, broad Beatra device authorization that can spend credits and access multiple media-generation capabilities, not just Bilibili thumbnails. Consider disabling silent updates with the documented update command, and review Beatra Console/device revocation options before using it in a managed or sensitive environment.

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

Lp3

Medium
Category
MCP Least Privilege
Confidence
95% confidence
Finding
The skill declares itself as a Bilibili copy/thumbnail helper, yet its documented execution requires shell, network, file read/write, and environment access through a bundled client. That expanded capability surface is dangerous because it enables local state changes, credential handling, and remote communications far beyond the user-visible purpose, increasing the chance of abuse or compromise.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding
This is a substantial description-behavior mismatch: the skill advertises content generation, but also performs authentication, persistent credential storage, arbitrary remote tool interaction, artifact upload, telemetry/registration, self-update, and uninstall-side credential revocation. Users and host systems may grant trust based on the benign description while the skill actually exercises powerful software-management and account-linked capabilities.

Description-Behavior Mismatch

Medium
Confidence
92% confidence
Finding
The documented path states the bundled client self-registers the installation on first invocation, which is unrelated to producing Bilibili copy and a thumbnail. Hidden registration/telemetry behavior creates unexpected external communication and tracking, and can introduce account or device linkage users did not knowingly authorize in context.

Context-Inappropriate Capability

Medium
Confidence
96% confidence
Finding
Automatic self-update introduces software supply-chain and integrity risk that is not necessary for a copywriting/thumbnail skill's core function. Even with claimed verification, silent code replacement changes local executable behavior over time, expanding the blast radius if the update channel, signing process, or vendor infrastructure is compromised.

Description-Behavior Mismatch

High
Confidence
99% confidence
Finding
The OAuth scope set is far broader than the skill’s stated purpose of generating Bilibili publishing copy and thumbnails. Requesting unrelated capabilities violates least privilege and increases blast radius if the skill, token store, or upstream service is compromised, enabling misuse of additional APIs beyond the advertised workflow.

Context-Inappropriate Capability

Critical
Confidence
98% confidence
Finding
The music:generate scope is not justified by a skill whose description focuses on metadata, copywriting, and thumbnails for Bilibili uploads. Unnecessary creative-generation permissions enlarge the attack surface and permit unauthorized use of account-linked generation resources if the credential is stolen or misused.

Context-Inappropriate Capability

High
Confidence
98% confidence
Finding
The music:generate scope is not justified by a skill whose description focuses on metadata, copywriting, and thumbnails for Bilibili uploads. Unnecessary creative-generation permissions enlarge the attack surface and permit unauthorized use of account-linked generation resources if the credential is stolen or misused.

Context-Inappropriate Capability

High
Confidence
98% confidence
Finding
The music:generate scope is not justified by a skill whose description focuses on metadata, copywriting, and thumbnails for Bilibili uploads. Unnecessary creative-generation permissions enlarge the attack surface and permit unauthorized use of account-linked generation resources if the credential is stolen or misused.

Description-Behavior Mismatch

High
Confidence
96% confidence
Finding
The client for a Bilibili publishing skill implements broad extra capabilities including self-update, installation telemetry, local inventory tracking, and package state management that are unrelated to generating upload copy or thumbnails. This expands the trust boundary and gives the package authority to modify itself and persist local metadata, which is dangerous if the update or backend ecosystem is ever compromised and is disproportionate to the stated skill purpose.

Context-Inappropriate Capability

Medium
Confidence
93% confidence
Finding
The code fingerprints the host environment via environment variables and host.json, then transmits source_package_slug and source_platform on tool calls and installation registration. For a content-publishing skill, this collection is not necessary for core functionality and creates avoidable privacy and tracking risk across installations and agent environments.

Context-Inappropriate Capability

Medium
Confidence
92% confidence
Finding
The skill maintains a device-local skills inventory with install path, platform, and timestamps, despite this being unrelated to Bilibili publishing output generation. Persistent local inventory increases privacy exposure and creates hidden coupling to uninstall and credential-revocation workflows beyond the user's expected feature set.

Intent-Code Divergence

Medium
Confidence
88% confidence
Finding
The module presents itself as a minimal credential-backed HTTP client, but it also performs self-updating, telemetry/registration, host fingerprinting, and local inventory management. This mismatch reduces transparency and can mislead reviewers and users about the code's actual authority and behavior, which materially increases supply-chain and trust risk.

Description-Behavior Mismatch

High
Confidence
95% confidence
Finding
The uninstall script makes an external POST request to revoke a shared device authorization token, which is behavior unrelated to the advertised Bilibili content-generation purpose of the skill. Even though this occurs during uninstall and includes safety checks, it still exercises security-sensitive account/device control over shared Beatra state and can affect other installed skills if inventory/state is incorrect or manipulated.

Description-Behavior Mismatch

High
Confidence
96% confidence
Finding
This code deletes shared files under ~/.beatra, including credentials and installation metadata, which exceeds the least-privilege expectations for a skill whose stated purpose is generating Bilibili publishing materials. Although deletion is gated on being the last installed skill, compromise or corruption of the shared inventory could lead to loss of credentials and disruption of unrelated skills on the device.

Context-Inappropriate Capability

Medium
Confidence
90% confidence
Finding
The function reads an access token from credentials.json and uses it for authorization management, a sensitive capability not justified by the skill’s published function. Access to bearer tokens increases the blast radius of any package compromise, because a modified or trojanized skill script could exfiltrate, misuse, or revoke shared device credentials.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The skill says newer releases install automatically without separate confirmation, but this system-changing behavior is not clearly disclosed in the front-facing description. Silent modification of local package-owned files undermines informed consent and can lead users to run code that materially changes after trust was initially granted.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The documentation explicitly states that the client silently checks for updates and automatically installs them by default without separate confirmation. Even though the text describes integrity controls, silently modifying local package files can violate user expectations, change execution behavior unexpectedly, and increase supply-chain risk if the update channel or signing process is ever compromised.

Missing User Warnings

Low
Confidence
84% confidence
Finding
The documentation states that the bundled client automatically makes a network registration call on first use and records installation metadata, but it does not explicitly warn users about the privacy implications or obtain clear consent. Even though the transmitted data is described as non-secret and non-billable, silent background transmission can surprise users and may violate organizational expectations or privacy policies.

Missing User Warnings

Low
Confidence
87% confidence
Finding
The workflow instructs the agent to keep a private record of approval, frozen arguments, task IDs, and terminal results for paid calls, but it does not tell the user that this data will be retained. Even if the retained data is operationally useful for recovery and billing reconciliation, undisclosed retention can expose user content, prompts, or identifiers beyond user expectations and creates avoidable privacy/compliance risk.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
maybe_auto_update() performs silent best-effort self-update before normal command handling, meaning package files can be modified during routine use without execution-time user awareness. Even with checksum and manifest validation, silent code replacement is a significant supply-chain risk and is especially concerning in a skill whose declared purpose is just content/thumbnail generation.

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
84% confidence
Finding
The explicit targeting of credentials.json as part of the state owned by the uninstall flow indicates that the package is aware of and able to remove shared credential material. In the context of a content-generation skill, access to credential storage is unnecessary and dangerous because it permits denial of service against other skills and creates an opportunity for credential misuse if the package is altered.

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
92% confidence
Finding
This code reads credentials.json and extracts an access token, which is direct credential access. In a skill focused on Bilibili publishing copy and thumbnails, credential parsing is out of scope and materially increases risk because any future malicious change could silently exfiltrate or abuse the token.

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 package explicitly supports self-modification through an update command and related update machinery that can replace installation files. Self-updating code is a high-risk capability in a skill context because compromise of the update channel, signing/checking process, or backend trust chain can turn the package into a delivery path for arbitrary new behavior unrelated to the original reviewed code.

VirusTotal

VirusTotal findings are pending for this skill version.

View on VirusTotal

Static analysis

No suspicious patterns detected.