T09 · Insecure Skill Coding Practices
- Location
scripts/script-extraction.py:89- Finding
API Key Exposed Through Command-Line Arguments
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill does what it says, but it sends local videos to a third-party cloud API and asks users to place an API key directly on the command line.
Review before installing. Use this only for videos you are allowed to send to VolcEngine ARK, avoid sensitive or regulated footage unless your organization permits it, and avoid placing long-lived API keys directly in commands. Prefer a protected environment variable or secret manager, use a virtual environment, and rotate the key if it has already appeared in shell history or logs.
scripts/script-extraction.py:89API Key Exposed Through Command-Line Arguments
SKILL.md:12Unpinned Third-Party Dependency Installation
The script reads an arbitrary local video file and uploads its contents to a third-party remote API. In the context of a tool specifically designed for cloud video analysis this behavior is intentional, but it still creates a real confidentiality and privacy risk because sensitive local media may be transmitted off-host without any consent prompt, validation, or policy guardrails.
}
try:
response = requests.post(url, headers=headers, files=files, data=data)
response.raise_for_status()
result = response.json()
if "error" in result or ("Error" in result and "Message" in result["Error"]):
The skill documents shell execution and outbound network use but does not declare any explicit tool scope such as permissions or allowed-tools. This weakens policy enforcement and user visibility, making it easier for an agent runtime to invoke broader capabilities than the skill contract clearly communicates.
The skill instructs users to upload local video files to an external API for analysis, but it does not prominently warn that potentially sensitive local content leaves the device and is sent to a third-party service. This can lead to unintentional disclosure of private or regulated data, especially because video files may contain faces, speech, locations, or confidential material.
The code uploads video content to a remote service but provides no explicit user-facing warning about external transmission, privacy exposure, or third-party processing. Because videos may contain personal, proprietary, or regulated data, the absence of notice and consent increases the chance of unintended data disclosure.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
}
try:
response = requests.post(url, headers=headers, json=request_body)
response.raise_for_status()
result = response.json()
if "error" in result or ("Error" in result and "Message" in result["Error"]):
The API key is supplied as a positional command-line argument, which commonly exposes secrets through shell history, process listings, logs, and job runners. This can lead to credential leakage to other local users or monitoring systems even if the transport to the remote API is otherwise authenticated.
The default analysis prompt is written in Chinese and implicitly steers the interaction toward a specific language/locale. There is no user choice, opt-in, or documented reason that this script must default to Chinese-only behavior.