Back to skill

Security audit

TikTok Uploader

Security checks for vulnerabilities and agentic risk

Overview

This skill does what it claims: it helps upload and schedule TikTok videos, but users should treat TikTok cookies or session IDs as account credentials.

Install in an isolated virtual environment when possible. Treat cookies.txt, session IDs, and cookie lists as passwords, keep them local, avoid pasting them into chats or logs, and refresh or revoke them if exposed. Review selected videos, captions, visibility, and schedules before upload, especially for batch operations.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:5
Finding

Unpinned Executable Third-Party Dependencies

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 5 and 16–17; additional unsafe upgrade guidance at line 120
Vulnerability Type: Supply-chain risk from unpinned dependencies
Risk Level: Medium

Vulnerable Code

yaml
metadata: {"openclaw":{"emoji":"🎬","requires":{"bins":["python3","playwright"],"env":[]},"install":[{"id":"pip","kind":"pip","package":"tiktok-uploader","bins":["tiktok-uploader"],"label":"Install tiktok-uploader (pip)"},{"id":"playwright","kind":"pip","package":"playwright","bins":["playwright"],"label":"Install Playwright"}]}}
bash
pip install tiktok-uploader
playwright install

The troubleshooting section also recommends an unconstrained upgrade:

bash
pip install -U tiktok-uploader

Technical Analysis

The skill installs tiktok-uploader and Playwright without exact version constraints, lock-file enforcement, or package hashes. Consequently, the code installed when a user invokes the setup procedure can differ from the dependency versions that were present when the skill was audited.

The playwright install command additionally downloads executable browser components. No artifact version or integrity verification is documented. The pip install -U tiktok-uploader recommendation explicitly encourages replacing an installed dependency with the latest available release without first reviewing it.

This creates a supply-chain exposure: if a dependency release, package index account, distribution channel, or downloaded browser artifact is compromised, attacker-controlled code could be installed and executed under the user's account. The audit found no evidence that the currently referenced package names are typosquatted or malicious; the vulnerability is the absence of reproducible dependency pinning and integrity controls.

Attack Path

  1. An attacker compromises a dependency publisher account, package distribution channel, or a future release of one ...[truncated 1307 chars]
Remediation
View remediation

Remediation Suggestions

  1. Pin every Python dependency to an exact, reviewed version, for example tiktok-uploader==X.Y.Z and playwright==A.B.C.
  2. Maintain a dependency lock file containing cryptographic hashes and install with hash verification, such as pip install --require-hashes -r requirements.txt.
  3. Pin and document the Playwright version together with its corresponding browser release. Use the package's supported cache or controlled artifact repository and verify downloaded artifacts where feasible.
  4. Replace the unconditional pip install -U tiktok-uploader troubleshooting instruction with a controlled upgrade procedure that requires reviewing release notes, source changes, provenance, and integrity before updating.
  5. Use a trusted, explicitly configured package index and prevent unintended fallback to untrusted or internal indexes.
  6. Run installation and browser automation in an isolated virtual environment or container under a non-privileged account with access limited to the required cookie and video files.
  7. Add automated dependency scanning and provenance checks to the release process, and repeat the security review whenever pinned dependency versions change.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (3)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill explicitly instructs users to provide highly sensitive TikTok authentication artifacts such as a full cookies.txt export or a raw sessionid, which can grant direct account access if mishandled. While this is functionally relevant to browser automation, the skill does not warn that these secrets should be treated like passwords, minimized, stored securely, and never shared beyond the local automation context.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

This code performs a network operation by uploading a local video file, description, and related settings to TikTok via uploader.upload_video(). Aside from a brief module docstring, there is no confirmation prompt, print/log statement, or inline warning disclosing that local content and metadata will be transmitted to an external service.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The batch upload path transmits a list of local video files and associated metadata to TikTok using uploader.upload_videos(). The code lacks any visible confirmation, logging, or explicit warning that multiple files may be sent to an external network service.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.