Back to skill

Security audit

Byted Las Long Video Understand

Security checks for vulnerabilities and agentic risk

Overview

The skill’s audio extraction purpose is coherent, but its mandatory setup can automatically install an unverified remote Python wheel while handling cloud credentials.

Review before installing. Use this only in a trusted workspace, avoid putting long-lived secrets in env.sh or version-controlled directories, prefer narrowly scoped temporary Volcengine credentials, and do not run the initialization script unless you accept that it may install or upgrade a remote SDK without hash verification.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Findings (1)

T03 · Remote Payload Retrieval and Execution

Error
Location
scripts/env_init.sh:31
Finding

Automatic Installation of an Unverified Remote Python Wheel

Content
View full analysis

Vulnerability Details

File Location: scripts/env_init.sh, lines 31–41
Vulnerability Type: Remote supply-chain code execution through an unverified dependency
Risk Level: High

bash
# 2. 获取远程 manifest
manifest_url="https://las-ai-cn-beijing-online.tos-cn-beijing.volces.com/operator_cards_serving/public/skills/sdk/manifest.json"
manifest=$(curl -sf "$manifest_url" || echo '{}')

# 3. 比较 SDK 版本并自动更新
local_ver=$(lasutil --version 2>/dev/null | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' || echo "0.0.0")
remote_ver=$(echo "$manifest" | jq -r '.sdk_version // "unknown"')

if [ "$local_ver" = "0.0.0" ] || [ "$local_ver" != "$remote_ver" ]; then
  echo "📦 SDK 更新: $local_ver → $remote_ver,正在安装..."
  pip install --quiet --upgrade https://las-ai-cn-beijing-online.tos-cn-beijing.volces.com/operator_cards_serving/public/skills/sdk/las_sdk-0.2.0-py3-none-any.whl
fi

Technical Analysis

The mandatory initialization workflow downloads and installs a Python wheel from a mutable external object-storage URL. The script does not verify a cryptographic hash, a package signature, or another locally pinned integrity value before invoking pip install.

The remote manifest controls whether the update branch executes, but the manifest itself is also fetched remotely without content authentication beyond ordinary TLS. Furthermore, a manifest retrieval failure is converted into {}, which produces remote_ver="unknown". Unless the local version is also reported as unknown, this state can trigger installation rather than failing closed.

Although the dependency has a versioned filename and comes from a domain apparently associated with the declared service, the reviewed project does not establish the integrity of its contents. Whoever can replace or maliciously publish the referenced wheel can change the effective code executed after this skill has passed review.

Attack Path

  1. An agent follows the mandatory initialization instructions in SKILL.md and sourc ...[truncated 1465 chars]
Remediation
View remediation

Remediation Suggestions

  1. Pin and verify the artifact

    • Record an independently reviewed SHA-256 digest in the repository.
    • Download the wheel as a separate step and verify its digest before installation.
    • Abort installation if verification fails.
  2. Use a locked dependency definition

    • Prefer an authenticated package repository and a lock file containing exact versions and hashes.
    • Install with hash enforcement, such as pip install --require-hashes.
    • Do not rely solely on a version embedded in a mutable URL.
  3. Fail closed

    • If the manifest cannot be retrieved or validated, retain the reviewed local version or stop with a clear error.
    • Do not map retrieval failures to a value that triggers an automatic update.
  4. Remove implicit updates from mandatory initialization

    • Separate environment activation from dependency updates.
    • Require explicit user or administrator approval before downloading or changing executable dependencies.
  5. Reduce exposure during installation

    • Perform dependency installation in a restricted build environment without cloud credentials.
    • Run the resulting package with least privilege and only the environment variables required for the operation.
  6. Strengthen provenance controls

    • Use signed release artifacts and verify signatures against a pinned trusted key.
    • Make dependency versions and integrity metadata part of the reviewed skill package.
Vulnerability Patterns
  • 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
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (14)

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The stated purpose is audio extraction/splitting, but the documented behavior includes environment bootstrapping, package installation, update checks, and downloading SDK components. That hidden expansion of behavior increases supply-chain and remote-code-execution risk because using the skill implicitly authorizes network retrieval and execution paths unrelated to the user-visible task.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
88% confidence
Finding

The skill invokes shell commands extensively (source, ffprobe, lasutil, helper scripts) but does not declare any explicit tool scope such as allowed-tools or permissions. This creates an authorization gap where a reviewer or runtime may not realize the skill needs command execution and network-capable tooling, increasing the chance of unintended shell access and weaker policy enforcement.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

L004 使用了大量宽泛表述,如“cut or trim audio files”“segment podcasts/lectures into clips”以及“do batch audio splitting”,但没有给出明确触发短语、边界条件或不适用示例。对于 manifest/markdown 文件,这种缺少约束的调用描述会扩大匹配范围,增加在普通对话中被意外触发的风险。

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The documentation tells the agent to have the user place secrets in a local shell script (env.sh) and then rely on automatic loading. Storing API keys in sourceable shell files in the working directory increases the chance of accidental disclosure, reuse by unrelated processes, inclusion in archives/repos, or execution-side secret exposure.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

L029 明确要求最终回复必须包含一段固定中文声明,并规定特定中文措辞的使用方式,但文档没有说明这是用户可选择的语言策略,也未声明该技能仅面向中文场景。该类自然语言约束可能违反语言/locale 需经用户选择或明确正当化的政策要求。

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill instructs collection and use of additional Volcengine/TOS credentials beyond the core LAS API key, including broad cloud access keys for download scenarios. Requesting broader credentials than necessary expands blast radius: if mishandled, those credentials may permit wider bucket or account access than the narrow audio-processing workflow requires.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The file is written entirely in Chinese, including the title, field descriptions, and error explanations, with no indication that language selection is optional or that the API is intentionally limited to a Chinese-speaking audience. This creates a natural-language locale policy concern because the skill documentation effectively enforces a single language without user opt-in.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The environment initialization script performs a remote manifest fetch and conditionally installs a package from a network location during setup, which exceeds the stated audio extraction and splitting functionality. This creates a supply-chain and unexpected-code-execution risk because running the skill can cause unreviewed external content to influence local behavior and package state.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The script includes an auto-update mechanism driven by remote manifest data and installs a wheel from a remote URL without local review. Even if the URL is legitimate, this introduces a supply-chain attack surface where compromised hosting, tampered artifacts, or unexpected upstream changes can execute code in the user's environment when the skill is initialized.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The script silently upgrades and installs a remote SDK package with only a generic status message, giving the user no meaningful chance to review or decline the action. Because Python package installation executes code as part of package handling and later use, this can lead to arbitrary code execution or persistent environment compromise if the remote artifact is malicious or altered.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
89% confidence
Finding

This markdown file contains user-facing instructions and pricing information entirely in Chinese, with no indication that the skill is region-specific or that users can opt into another language. That can violate the language/locale policy requirement when a specific language is effectively forced by default.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
95% confidence
Finding

This shell script includes user-facing text and descriptive comments in Chinese only, such as the usage/error output. The policy requires flagging language or locale constraints when a skill forces a specific language without user opt-in, and no alternative language option or justification is provided here.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
97% confidence
Finding

The script's natural-language comments and console messages are written in Chinese only, including usage and status output. This imposes a specific language on users without opt-in or documented locale justification, which matches the language/locale policy concern.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
97% confidence
Finding

The script's comments and all user-facing output strings are in Chinese, including usage/help text and generated markdown content. This imposes a specific language on users without any opt-in or indication that the skill is intentionally limited to a Chinese-speaking context.

Content

No source excerpt is available for this finding.