T01 · Skill Instruction Hijacking
- Location
SKILL.md:6- Finding
Automatic Skill Invocation Overrides User Intent
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill mostly matches a Douyin downloader, but it can run on incidental links or numbers and makes third-party network requests using a stored API token without enough user control.
Review before installing. Use only if you are comfortable sending Douyin links or IDs to TikHub with your local TikHub API token. Avoid allowing automatic invocation on incidental URLs or bare long numbers, and prefer a revised version that requires explicit user confirmation and validates v.douyin.com hostnames before making network requests.
SKILL.md:6Automatic Skill Invocation Overrides User Intent
scripts/douyin_download.py:66Blind SSRF Through Substring-Based Short-Link Validation
The manifest promises behavior that does not match the actual workflow: it says 'no login required' while requiring a TikHub API token, implies automatic downloading when detection occurs although the default command only returns a URL, and claims unsupported content types are excluded without showing enforcement. Security-relevant mismatches can mislead users and downstream agents into sending data to a third party or assuming safeguards exist when they do not.
The skill invokes a Python script that reaches out to the TikHub API, but the manifest does not declare any tool scope or permission boundary for network use. This weakens policy enforcement and reviewability: the agent may transmit user-supplied Douyin URLs/IDs and API-backed requests externally without explicit declaration, increasing the risk of unintended data egress or overbroad execution.
The trigger rules are broad enough to activate on merely seeing any Douyin URL or a 16–19 digit number, even without an explicit user request to download. In an agent setting this can cause unintended execution, external API calls, and file downloads based on incidental text, creating privacy, consent, and resource-usage risks.
The skill does not warn users that submitted Douyin URLs or video IDs will be sent to the external TikHub API. This omission matters because users may assume local-only processing, while the skill actually discloses their inputs to a third party and uses a stored API credential to do so.
The skill sends user-supplied Douyin identifiers and an Authorization bearer token to api.tikhub.io, a third-party service, which creates an external data transmission and trust boundary. In this downloader context that behavior is expected, but it still poses privacy and supply-chain risk because user activity and access tokens are exposed to an external provider not fully described in the manifest.
# Constants
# ---------------------------------------------------------------------------
TIKHUB_API_URL = "https://api.tikhub.io/api/v1/douyin/web/fetch_one_video"
DEFAULT_OUTPUT_DIR = os.path.expanduser("~/Downloads/douyin")
The manifest description presents the skill as a downloader, and the usage guidance says to use it whenever a Douyin URL or ID is seen. However, the CLI is implemented so that downloading is optional and the default behavior is only to print the resolved video URL. That is a semantic mismatch between the claimed primary behavior and the actual default operation.
The manifest describes a no-login Douyin video download skill, which implies straightforward URL/ID handling and retrieval. The implementation also accesses ~/.openclaw/config.json to obtain a third-party API token, introducing local credential/config file access that is not mentioned in the stated purpose. While this may be operationally necessary, it is still an undeclared capability relative to the manifest's narrow description.
No suspicious patterns detected.