T09 · Insecure Skill Coding Practices
- Location
cookies.json:1- Finding
Authentication Session Credentials Committed to the Project
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is broadly aligned with Jianying video generation, but it ships and uses browser login cookies and can upload local files to a third-party service with weak guardrails.
Review before installing. Remove the bundled cookies.json, revoke or rotate any exposed Jianying sessions, and use a fresh user-controlled cookie file only in an isolated environment. Run the skill under a low-privilege account with access only to approved media and output folders, avoid sensitive prompts or files, and expect Jianying account credits to be consumed when generation is submitted.
cookies.json:1Authentication Session Credentials Committed to the Project
mcp_server.py:105MCP Tools Permit Upload of Arbitrary Readable Local Files
requirements.txt:1Mutable and Unverified Third-Party Dependencies
scripts/jianying_worker.py:91Chromium Security Sandbox Explicitly Disabled
A skill that claims to generate videos but instead mainly queries status and downloads files to a fixed local path creates a significant transparency and file-safety issue. Undisclosed local file writes, especially to a hardcoded directory, can overwrite data, leak sensitive outputs into predictable locations, and bypass user expectations about where authenticated downloads will be stored.
A skill that claims to generate videos but instead mainly queries status and downloads files to a fixed local path creates a significant transparency and file-safety issue. Undisclosed local file writes, especially to a hardcoded directory, can overwrite data, leak sensitive outputs into predictable locations, and bypass user expectations about where authenticated downloads will be stored.
The skill documentation shows shell execution and file access behavior but does not declare any tool scope or allowed-tools boundaries. This weakens least-privilege controls and makes it easier for an agent runtime to invoke broader local capabilities than users may expect, especially because the skill handles credential files and output paths.
This skill relies on valid login cookies to perform automated actions on a user's Jianying account, but the description does not prominently warn that account authentication material is required and will be used. Because cookies function as bearer credentials, unclear disclosure increases the risk of accidental credential exposure, misuse of a personal account, or unauthorized billable actions.
The workflow uploads prompts and optional local images/videos to a third-party service, but the description does not clearly inform users of this data transfer. In this context, the omission is more dangerous because the skill is explicitly designed to automate media submission to an external platform, so users may unknowingly send sensitive local files or confidential prompts off-device.
The manifest describes a skill for generating AI videos via Jianying/Seedance and requiring cookies.json credentials. In this file, tool execution is delegated by launching a separate local process with subprocess.run, which is a more powerful host-execution capability than the stated purpose requires and is not disclosed in the manifest description.
The tool automatically uses local authentication material from cookies.json to perform network-backed actions through a subprocess, without any explicit consent gate or warning at call time. In an agent setting, this increases the risk of unintended use of a logged-in account, unexpected credit consumption, or actions performed under sensitive local credentials if the tool is invoked indirectly or deceptively.
This code automatically creates the requested output directory and proceeds with video generation output, which affects the user's filesystem. Although the tool schema includes an output_dir parameter, there is no explicit warning, confirmation, or comment here disclosing that the skill will create directories and save files to disk.
subprocess module calls execute external commands. Without careful input validation, this enables command injection.
# 执行命令
try:
import subprocess
result = subprocess.run(
cmd,
capture_output=True,
text=True,
The manifest describes a skill for using Jianying's Seedance model to generate videos in T2V/I2V/V2V modes, but this file is focused on querying an existing task and persisting the resulting video to local storage. Downloading generated assets may be related operationally, yet the manifest does not mention retrieval or local file export behavior, so the implemented behavior is broader than the declared purpose.
The script loads cookies from a local credential file and injects them into a browser context for authenticated access, but it provides no meaningful consent, validation, or scoping controls around that credential use. If the skill is triggered unexpectedly or the cookies file contains broader session tokens than intended, it can act on the user's behalf against the Jianying account without clear user awareness.
The code performs authenticated requests to a discovered video URL and writes the response body directly to disk without validating the destination URL, content origin, or file safety characteristics. If the page content or extracted URL is manipulated, the script could download unintended remote content using authenticated browser state and persist it locally without user review.
The module header and user-facing behavior indicate the skill is intended to be operated in Chinese, and the rest of the script also emits Chinese prompts and status text. For an all-file policy check, forcing a specific language without opt-in is a natural-language locale policy issue unless the file clearly states that the skill is region- or language-specific.
The skill programmatically injects cookies into a browser context and automates an authenticated session, but it provides no explicit warning, consent checkpoint, or scoping controls around use of a real user account. In an agent-skill setting, this can lead to unintended account actions, session misuse, or handling of sensitive authentication material without adequate operator awareness.
The manifest describes a Jianying/Seedance automation skill for generating AI videos, which reasonably implies browser automation and network access to Jianying. Spawning a local subprocess to execute curl adds host-command execution capability that is not an obvious requirement of that purpose, especially since the script already has browser/network primitives available.
subprocess module calls execute external commands. Without careful input validation, this enables command injection.
# === Step 10: curl 下载 ===
print(f" [Step 10] Downloading to {filepath}...")
import subprocess
result = subprocess.run(
['curl', '-L', '-o', filepath, '-s', '-w', '%{http_code}', mp4_url],
capture_output=True, text=True, timeout=120
)
The tool descriptions, parameter descriptions, and enum values are presented only in Chinese, which imposes a specific language/locale on users. The file does not indicate that Chinese is optional, configurable, or justified as a region-specific requirement.
This markdown file contains natural-language guidance that privileges Chinese as the expected prompt language. Under the policy, forcing or steering users toward a specific language without an explicit opt-in can be a locale/language policy issue.
The dependency specifier uses a lower bound only, which allows future major or minor releases of Playwright to be installed without review. This creates supply-chain and reliability risk because a later release could introduce a vulnerable or incompatible version into the skill environment.
playwright>=1.42.0
requests>=2.31.0
requests>=2.31.0 is not pinned to an exact version, so installations may resolve to different releases over time. Because requests is security-sensitive network client code and has a history of advisories, leaving it unpinned increases the chance of pulling an unreviewed or affected version into the environment.
playwright>=1.42.0
requests>=2.31.0
The manifest includes requests without an exact version, and the package has multiple known advisories across its release history. Since this skill automates web interactions and may handle authenticated sessions or cookies, an affected requests version could expose credentials, weaken TLS/request validation behavior, or otherwise increase attack surface.