Back to skill

Security audit

抖音视频总结

Security checks for vulnerabilities and agentic risk

Overview

The skill has a coherent Douyin transcription purpose, but its run instructions can place untrusted webpage text into a shell command in a way that could run unintended commands.

Review before installing. Only use this with Douyin links you trust, because the current instructions could let malicious page metadata affect a shell command. The maintainer should replace the documented shell command with a shell-free process call or strict escaping and validation, and should clearly document the external audio and metadata processing plus API key handling.

Vulnerability Patterns
  • 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
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:47
Finding

Command Injection Through Untrusted Douyin Page Metadata

Content
View full analysis
' \ DOUYIN_TITLE='' \ DOUYIN_AUTHOR='<author>' \ node '<技能目录>/scripts/transcribe.js' '<用户消息中的最后一个抖音链接>' ``` ### Technical Analysis The values substituted for `audioUrl`, `title`, and `author` originate from a remote webpage and must therefore be treated as untrusted input. The documented command places those values inside single-quoted shell strings without specifying a safe escaping procedure. A single quote in any substituted value terminates its shell string. The remainder of a malicious value can then introduce shell operators or command substitutions. For example, a title conceptually shaped as: ```text '; attacker_command; # ``` would cause the generated shell command to execute `attacker_command` rather than treating the entire title as data. The positional Douyin source URL is interpolated using the same unsafe pattern. Although legitimate Douyin URLs normally contain a limited character set, the instructions do not establish strict URL parsing and validation before command construction. The JavaScript implementation in `scripts/transcribe.js` does not itself invoke a shell. The flaw is in the Skill instructions directing the Agent to construct and execute an unsafe shell ...[truncated 1478 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (11)

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 43)May include surrounding context.

md
脚本位于本技能目录的 `scripts/transcribe.js`。在命令环境中传入页面提取结果:

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
92% confidence
Finding

The skill clearly requires network access and environment-variable handling to pass sensitive values such as DOUYIN_API_KEY and extracted audio URLs into a script, but it declares no explicit tool scope or allowed-tools policy. That creates an overbroad execution model where the runtime may grant more capability than users or reviewers expect, reducing transparency and making misuse or accidental data exposure harder to control.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The skill sends extracted audio and metadata to external infrastructure and states that the supporting service temporarily uploads the audio as a publicly readable OSS object before forwarding it to Tencent Cloud, yet the user-facing description does not clearly warn about this disclosure. This is dangerous because users may provide links containing sensitive spoken content without informed consent, and public object exposure materially increases confidentiality risk if the URL is guessed, logged, or retained by third parties.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

All user-facing status and error strings in the script are hardcoded in Chinese, including failures, completion notices, and configuration errors. The policy requires avoiding forced language/locale behavior unless the user is given a choice or the locale restriction is clearly documented and justified.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The script sends audio_url, source_url, title, and author to an external transcription API, which is a data transfer to a third party. In a skill that processes user-provided Douyin content, failing to clearly disclose that this metadata and referenced media are transmitted off-platform can create privacy, consent, and compliance risks, especially if URLs or metadata reveal user activity or private content.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

This test suite asserts that user-visible error and duration strings must be returned in Chinese, such as '余额不足' and later '秒'. That indicates the skill behavior is forced to a specific locale without any visible user opt-in or documented regional constraint in this file.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The assertion requires duration text to be formatted as '61.2 秒', which hard-codes a Chinese locale for a user-facing string. Under the policy, forcing a specific language without user choice or explicit justified documentation is a natural-language policy concern.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

This test requires the actionable insufficient-balance response to be displayed in Chinese, including the prefix text and recharge label. That reinforces a mandatory Chinese locale for user-facing communication with no evidence of opt-in or alternative locale support in this file.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
91% confidence
Finding

The file instructs the agent to tell the user a fixed Chinese sentence when the support service fails. This hard-codes a specific language for user-facing output without offering a language choice or tying it to an explicitly documented locale requirement.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
79% confidence
Finding

The skill name is entirely in Chinese ("抖音视频总结"), which suggests a language-specific presentation without any indication of user opt-in or documented regional justification in this file. The policy requires flagging natural-language locale constraints when the skill appears to force a specific language without offering a choice.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
76% confidence
Finding

The script reads DOUYIN_API_KEY from the environment and uses it to authenticate outbound API requests, but there is no comment, docstring, or user-visible message noting that the skill depends on and consumes a credential. Access to sensitive environment variables is in scope for missing-warning review when no disclosure is present.

Content

No source excerpt is available for this finding.

Static analysis

Detected: suspicious.env_credential_access

Environment variable access combined with network send.

Critical
Code
suspicious.env_credential_access
Location
scripts/transcribe.js:9