Back to skill

Security audit

douyindownloadwhisper

Security checks for vulnerabilities and agentic risk

Overview

The skill mostly does what it claims, but its default transcript segmentation can send full transcripts to an undisclosed third-party MiniMax API when a key is present.

Review this skill before installing if your videos may contain private, business, customer, or regulated speech. Use --no-segment unless you are comfortable sending transcript text to MiniMax, and install Whisper in an isolated, non-admin environment with pinned dependencies where possible.

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

other

Warning
Location
douyin.js:308
Finding

Undisclosed transmission of complete transcripts to a third-party MiniMax service

Content
View full analysis
{ const { spawn } = require('child_process'); const proc = spawn('curl', [ '-X', 'POST', url, '-H', `Authorization: Bearer ${apiKey}`, '-H', 'Content-Type: application/json', '-d', JSON.stringify(data) ]); ``` The documentation instead states: ```markdown douyin-download is ... based on local Whisper for speech transcription, and calls the OpenClaw built-in LLM to perform semantic segmentation. ``` It also states that no additional environment variables are required, while the implementation reads `MINIMAX_API_KEY`. ### Technical Analysis The default extraction workflow enables semantic segmentation. When `MINIMAX_API_KEY` is present, `semanticSegment` inserts the entire locally generated transcript into a user message and posts it to `https://api.minimaxi.com/v1/text/chatcompletion_v2`. This external disclosure is not ...[truncated 2081 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
douyin.js:351
Finding

MiniMax API credential exposed in curl process arguments

Content
View full analysis
Remediation
View remediation

T08 · Insecure Dependencies

Warning
Location
SKILL.md:32
Finding

Unpinned executable dependency installed from mutable package sources

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (8)

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
71% confidence
Finding

The skill description and usage are framed as only supporting Windows, and the entire natural-language interface/documentation is presented in Chinese without offering any language or locale choice. Under the stated policy, forcing a specific language or locale without opt-in can be a natural-language policy violation unless clearly justified as region-specific compliance tooling, which is not stated here.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · douyin.js (reported line 39)May include surrounding context.

js
'Accept-Language': 'zh-CN,zh;q=0.9',
};

const SILI_FLOW_BASE_URL = 'https://api.siliconflow.cn/v1/audio/transcriptions';
const SILI_FLOW_MODEL = 'FunAudioLLM/SenseVoiceSmall';
const MINIMAX_BASE_URL = 'https://api.minimaxi.com';
const DEFAULT_DOWNLOAD_PATH = '/tmp/douyin-download/';

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The top-level documentation states that text extraction uses the SiliconFlow API and even documents SILI_FLOW_API_KEY as required for that feature. However, the actual transcribeAudio implementation announces '本地 Whisper' and spawns a local 'whisper' executable instead, meaning the documented intent for this capability contradicts the code's real behavior.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The Whisper invocation hard-codes --language zh, which enforces a specific language/locale regardless of user preference or input content. This matches the policy category for language or locale constraints without explicit opt-in or choice.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The function sends full transcript text to the external MiniMax API whenever segmentation is enabled, and segmentation defaults to on. Transcripts may contain sensitive personal, business, or regulated content, so silent third-party transmission creates a real privacy and data-governance risk.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
86% confidence
Finding

This markdown file explicitly instructs the user to download videos to a local directory and notes that missing directories will be created automatically. While the behavior is described functionally, it does not clearly warn users that the skill will write files to disk and create folders on their system, which is a safety-relevant side effect.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
86% confidence
Finding

The function automatically creates directories and saves extracted transcript content to a file. While the top-level comment says the tool auto-saves text, there is no confirmation prompt before persisting potentially sensitive transcript data to disk during extraction.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

The code uses toLocaleString('zh-CN'), which hard-codes a specific locale in generated output. There is no indication that users can opt in to this locale or choose an alternative.

Content

No source excerpt is available for this finding.

Static analysis

Detected: suspicious.dangerous_exec

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
douyin.js:143