Back to skill

Security audit

Byted Las Video Resize

Security checks for vulnerabilities and agentic risk

Overview

The skill mostly fits a Volcengine video-resize workflow, but it automatically installs remote SDK code and includes unsafe or mismatched helper scripts that should be reviewed before use.

Review this skill before installing. Use it only if you are comfortable sending video inputs and task data to Volcengine LAS, providing LAS credentials, and allowing the skill to create a virtual environment and install an SDK from a remote URL. Prefer running it in a restricted workspace, avoid using an untrusted .env file, and consider pinning or independently verifying the SDK wheel before use.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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
Findings (3)

T03 · Remote Payload Retrieval and Execution

Error
Location
scripts/env_init.sh:31
Finding

Unverified Remote SDK Retrieval and Installation

Content
View full analysis
/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 initialization script retrieves a mutable remote manifest and automatically installs a Python wheel from an external URL. Neither the manifest nor the wheel is verified against a pinned cryptographic digest or trusted signature. HTTPS protects the connection in transit but does not guarantee that the artifact stored at the URL remains identical to the artifact reviewed with the Skill. If the hosting account, storage object, DNS path, TLS trust chain, or release process is compromised, the wheel can be replaced without changing this repository. A malicious wheel can install executable modules, command entry points, or Python startup files. The installed `lasutil` package is subsequently invoked by the Skill, allowing the remotely supplied implementation to execute with the privileges of the user or Agent running the initialization. The manifest can also force repeated installation because its unverified `sdk_version` value controls whether the update branch executes. ### Attack Path 1. An attacker compromises or gains unauthorized write access to the remot ...[truncated 1162 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/poll_background.sh:19
Finding

Arbitrary Shell Execution Through Sourced Environment File

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/poll_background.sh:37
Finding

Unbounded Background Polling Allows Persistent Resource Consumption

Content
View full analysis
"${OUTPUT_DIR}/last_poll.json" # Extract status STATUS=$(echo "$FULL_OUTPUT" | python3 -c " import json import sys try: data = json.load(sys.stdin) print(data['metadata']['task_status']) except Exception as e: print('ERROR') ") echo "$(date): Attempt $ATTEMPT, status = ${STATUS}, next poll in ${SLEEP}s" >> "${OUTPUT_DIR}/poll.log" if [ "$STATUS" = "COMPLETED" ] || [ "$STATUS" = "FAILED" ] || [ "$STATUS" = "TIMEOUT" ] || [ "$STATUS" = "CANCELED" ]; then # Save final result echo "$FULL_OUTPUT" > "${OUTPUT_DIR}/result.json" # Create completion flag echo "$STATUS" > "${OUTPUT_DIR}/COMPLETED" echo "$(date): Poll completed, final status = ${STATUS}" >> "${OUTPUT_DIR}/poll.log" exit 0 fi sleep "$SLEEP" done ``` ### Technical Analysis The polling process uses an unconditional `while true` loop and exits only when the remote response contains one of four recognized terminal statuses. It has no maximum attempt count, wall-clock deadline, consecutive-error threshold, or explicit cancellation mechanism. If `lasutil` repeatedly fails, returns malformed JSON, or returns a status not included in the terminal-state list, the parser emits `ERROR`. That value is not terminal, so the process continues indefinitely. Persistent `PENDING` or `RUNNING` responses have the same effect. The `lasutil poll` invocation also has no visible command- ...[truncated 1217 chars]
Remediation
View remediation
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
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (19)

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The skill is presented as a video-resize utility, but its documented workflow performs environment initialization, network retrieval, virtualenv management, and automatic SDK update/install via shell scripts. Hidden or under-declared install/update behavior is dangerous because it expands the attack surface to remote code retrieval and execution, which users may not expect from a media-processing skill.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill is presented as a video-resize utility, but its documented workflow performs environment initialization, network retrieval, virtualenv management, and automatic SDK update/install via shell scripts. Hidden or under-declared install/update behavior is dangerous because it expands the attack surface to remote code retrieval and execution, which users may not expect from a media-processing skill.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill is presented as a video-resize utility, but its documented workflow performs environment initialization, network retrieval, virtualenv management, and automatic SDK update/install via shell scripts. Hidden or under-declared install/update behavior is dangerous because it expands the attack surface to remote code retrieval and execution, which users may not expect from a media-processing skill.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The script clearly generates ASR/transcription-oriented output (# ASR 识别结果, transcript.txt, language and audio duration fields) even though the skill is declared as a video-resize tool. This mismatch is dangerous because it can mis-handle outputs, expose unrelated transcript data, and indicates possible code reuse from another skill without proper adaptation, which raises the risk of data leakage across task types.

Content

No source excerpt is available for this finding.

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · scripts/poll_background.sh (reported line 19)May include surrounding context.

sh
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "${SCRIPT_DIR}/../../.." && pwd)"

if [ -f "${PROJECT_ROOT}/.env" ]; then
  source "${PROJECT_ROOT}/.env"
  export LAS_API_KEY LAS_REGION
fi

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · scripts/poll_background.sh (reported line 20)May include surrounding context.

sh
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "${SCRIPT_DIR}/../../.." && pwd)"

if [ -f "${PROJECT_ROOT}/.env" ]; then
  source "${PROJECT_ROOT}/.env"
  export LAS_API_KEY LAS_REGION
fi

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
97% confidence
Finding

The skill invokes shell commands such as source .../scripts/env_init.sh, lasutil file-upload, lasutil submit, and lasutil poll, but does not declare any permissions or allowed-tools scope. This creates an undeclared capability boundary: reviewers and runtimes cannot clearly constrain shell execution, increasing the risk of unintended command execution, environment manipulation, or future abuse if the skill is modified.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill documentation and required user-facing outputs are written exclusively in Chinese, including a mandatory disclaimer the agent 'must include' in Chinese. This imposes a specific language on user interactions without any opt-in or alternative language path, which matches the language/locale policy violation criterion.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The natural-language content in the evals is entirely specified in Chinese, and the expected outputs are described accordingly. For a generally applicable video-resize skill, this imposes a language/locale expectation without user opt-in or an explicit documented regional justification.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The script fetches a remote manifest and conditionally installs a wheel from the network during environment initialization. This creates a supply-chain trust boundary in a local setup step for a video-resizing skill: if the remote host, manifest path, or delivered package is compromised, arbitrary code can be executed when the user sources the script. The skill context does not require silent code retrieval to resize video, so this behavior is riskier than functionally necessary.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The script automatically runs pip install --upgrade against a remote wheel after only printing an update message, with no interactive confirmation or safer approval gate. Because pip installation executes untrusted package code in the user's environment, this can lead to arbitrary code execution if the package source is tampered with or unexpectedly changed. In a skill meant for video resizing, silent package installation is an unnecessary and dangerous privilege expansion.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
84% confidence
Finding

The opening comment describes a generic "result display markdown template," which implies alignment with the enclosing skill, but the body hardcodes ASR-specific sections and fields such as recognition statistics, transcript preview, language ID, and utterances. This documentation is misleading because it obscures that the script is for transcription output rather than video-resize output.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The script directly embeds the first 500 bytes of transcript.txt into the generated markdown without any warning, consent check, or masking. If the transcript contains sensitive spoken content, names, credentials, or other private data, this behavior can unintentionally expose that information in logs, UI output, or shared artifacts.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

This shell script sources the project's .env file and exports LAS_API_KEY and LAS_REGION, which is access to sensitive credentials. Although the code comments note that the environment is being loaded, there is no user-facing warning, prompt, or disclosure that credentials will be read and used.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
87% confidence
Finding

The script calls an external command to poll task status and saves the full response to output files, which may transmit or persist user/system data. While the log mentions polling has started, it does not clearly disclose that network-backed polling occurs and that full responses are written to disk.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
77% confidence
Finding

The natural-language content and headings are entirely in Chinese, and the file does not state that the user can choose another language or that the locale is intentionally restricted. Under the language/locale policy check, forcing a single language without opt-in can be a policy concern when no justification is provided.

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 contains its title, usage feedback, and warning/error output entirely in Chinese, which imposes a specific language on users. The file does not offer a language choice or document that the skill is intentionally limited to a Chinese-speaking or region-specific context.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
94% confidence
Finding

All natural-language comments and user-visible echo output are in Chinese, with no indication that users can select another language or locale. This creates a language policy concern when the skill may be used by operators who have not opted into that locale.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

This file contains user-facing natural-language text in Chinese, including the script description and error messaging elsewhere in the file, without any indication that the locale is optional or region-specific. That can violate a language-choice policy when users are not given an opt-in or alternative locale.

Content

No source excerpt is available for this finding.