Back to skill

Security audit

Douyin Auto Publish 抖音自动上传发布

Security checks for vulnerabilities and agentic risk

Overview

This Douyin uploader is mostly transparent, but it needs Review because it can publish through a logged-in account and contains unsafe file-staging instructions.

Install only if you are comfortable letting the agent operate a Douyin creator account through a persistent browser profile. Use sandbox mode for stronger isolation, verify the file name, title, and visibility before every publish, and avoid supplying unusual or untrusted file paths until the staging command is made safer.

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

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:75
Finding

Command Injection Through Unquoted User-Provided Video Path

Content
View full analysis
/tmp/openclaw/uploads/ ``` The same unsafe operation is repeated in the workflow template: ```bash // mkdir -p /tmp/openclaw/uploads && cp /tmp/openclaw/uploads/ ``` The placeholder names above are English translations of the documented source-path placeholders; the command structure is unchanged. ### Technical Analysis The Skill instructs the Agent to insert a user-provided video path directly into a shell command. The path is not quoted, validated, or passed through a structured file operation. If an Agent performs textual substitution as directed, shell metacharacters contained in the path can be interpreted as command syntax. A path containing spaces or wildcard characters can also cause unintended argument splitting or pathname expansion. A path beginning with a hyphen may be interpreted by `cp` as an option because the command does not use the `--` end-of-options delimiter. The vulnerability is especially significant because the video path is explicitly identified as information supplied by the user. Consequently, an attacker who controls that input may be able to transform a file-copy operation into arbitrary shell execution under the Agent's operating-system identity. ### Attack Path 1. An attacker asks the Agent to upload a video to Douyin. 2. The attacker supplies a crafted value as the purported video path. The value includes shell syntax, argument-manipulation characters, or a leading command option. 3. The Agent substitutes the value into the documented `cp /tmp/openclaw/uploads/` command. 4. The shell parses the substituted value rather than treating it exclusively as a literal pathname. 5. Attacker-controlled shell operations execute with ...[truncated 864 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:72
Finding

Predictable Temporary Video Storage Without Isolation or Cleanup

Content
View full analysis
/tmp/openclaw/uploads/ ``` The staged file is subsequently uploaded from a predictable path: ```javascript browser(action="upload", target="host", profile="douyin-profile", paths=["/tmp/openclaw/uploads/"], ref="") ``` The workflow template repeats the same fixed staging directory: ```bash // mkdir -p /tmp/openclaw/uploads && cp /tmp/openclaw/uploads/ ``` The placeholder names above are English translations of the documented filename and element-reference placeholders; the path and command behavior are unchanged. ### Technical Analysis The Skill uses `/tmp/openclaw/uploads` as a fixed staging directory and preserves the source filename. It does not instruct the Agent to: - Create a unique directory for each operation. - Apply owner-only permissions. - Check whether the destination already exists. - Reject symbolic links. - Verify that the staged file still matches the selected source before upload. - Remove staged content after success, cancellation, or failure. A predictable directory and filename can enable collisions between concurrent or repeated uploads. On a multi-user or otherwise locally exposed host, another process may be able to monitor, replace, pre-create, or redirect staged files, depending on the directory's effective ownership and permissions. The absence of cleanup also leaves copies of potentially private videos in temporary storage beyond the period required for the upload. ### Attack Path A local exploitation path is possible under host permission conditions that allow another process to interact with the staging directory: 1. The attacker predicts or learns that the Skill stages files unde ...[truncated 1359 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Rogue AgentSelf-Modification, Session Persistence
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (6)

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

SQP-3 适用于所有文件类型。该文件从描述到确认话术均固定为中文,且未说明可根据用户偏好切换语言,这构成了强制特定语言/locale 的自然语言策略问题。

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
81% confidence
Finding

The workflow copies user videos into a shared temporary upload directory and relies on a persistent browser profile, creating residual local state that may survive beyond a single run. In context, this can expose prior uploads or account session data to later runs, other local processes, or accidental reuse, especially because the skill is designed to operate on a logged-in creator account.

Content

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

浏览器 tool 只能上传到 /tmp/openclaw/uploads 目录:

bash
mkdir -p /tmp/openclaw/uploads
cp <视频路径> /tmp/openclaw/uploads/

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The publish confirmation is fixed to a Chinese-only reply pattern, which can undermine the reliability of consent verification for users who do not understand Chinese. In a skill that performs an irreversible external action on a logged-in social-media account, ambiguous confirmation handling increases the risk of accidental publication.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The instruction allowing 'other unmentioned operations' by generically matching refs broadens the skill from a narrowly scoped uploader into a general-purpose browser operator on a logged-in creator account. In context, this could be used to perform account-affecting actions not covered by the skill's stated purpose, weakening safety boundaries and increasing the chance of unintended or unauthorized changes.

Content

No source excerpt is available for this finding.

Vague Triggers

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

该 markdown 文件适用 SQP-1。L003 的触发条件虽然有领域限定,但仍以自然语言意图描述为主,没有提供更明确的限定短语集合、排除场景或负例,可能导致在相近的普通请求中被过度匹配。

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The skill stores and reuses a default visibility preference across runs, which introduces stateful behavior beyond a single user-requested upload. While not directly enabling code execution or data exfiltration, it can cause future posts to inherit an unintended audience setting if the user forgets to override it, creating privacy and consent risk.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.