T09 · Insecure Skill Coding Practices
- Location
scripts/media_gen_client.py:50- Finding
TLS Certificate and Hostname Verification Disabled
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This text-to-video skill has a coherent purpose, but its instructions and client create avoidable risks around local command execution and API-key exposure.
Review before installing. Use only non-sensitive text, rotate MAGIC_API_KEY if this client was used on untrusted networks, and do not run the documented shell command with raw user text. The publisher should restore normal TLS verification and change the invocation guidance to pass text through a structured no-shell argument API or stdin.
scripts/media_gen_client.py:50TLS Certificate and Hostname Verification Disabled
SKILL.md:47Shell Command Injection Through Documented User-Text Interpolation
This is a real security issue, primarily because TLS certificate validation and hostname verification are explicitly disabled before sending the request. That means the Bearer API key and user-supplied prompt can be intercepted or modified by a man-in-the-middle attacker, making the environment-to-network taint especially dangerous in this skill because it handles credentials for a remote service.
ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE
with urllib.request.urlopen(req, timeout=timeout_s, context=ctx) as resp:
raw = resp.read().decode("utf-8")
return json.loads(raw) if raw else {}
except urllib.error.HTTPError as e:
The skill invokes Python code that uses both an environment-provided API key and outbound network access, but it declares no explicit tool scope or allowed-tools boundary. This weakens policy enforcement and reviewability, increasing the risk that the skill can access capabilities beyond what users or operators expect.
The skill tells the agent to submit user-provided text to a remote video service, but the user-facing description does not clearly warn that their prompt content will leave the local environment over an API call. This can cause inadvertent disclosure of sensitive or regulated text because users may reasonably assume the content is processed locally.
The client sends the user-provided --text value to a remote service and includes a bearer API key in the request, but there is no confirmation prompt or explicit user-facing warning in the CLI help or output that data will be transmitted off-system. For a code file, network transmission of user or system data should have some visible disclosure unless already clearly warned elsewhere.
The invocation examples are written only in Chinese, which imposes a language-specific interaction pattern without stating that the skill is region-specific or offering alternative language options. Under the language/locale policy, skills should either allow user choice or clearly justify a locale restriction.
The top-level parser description on L129 says "image & video generation," but every implemented subcommand in this file is limited to video-create, video-status, and video-wait. This is an active documentation mismatch about the tool's capabilities rather than a mere omission.
No suspicious patterns detected.