Back to skill

Security audit

zeelin-script-gen-skill 剧本生成

Security checks for vulnerabilities and agentic risk

Overview

This screenplay-generation skill has a coherent purpose, but it sends manuscripts and an App-Key to a raw HTTP service endpoint without transport protection or clear user consent.

Review before installing. Use this only for manuscripts you are comfortable sending to the Zeelin service, and avoid using a real App-Key or private unpublished text until the service uses HTTPS with an authenticated hostname and a clear privacy/retention policy. Expect account quota to be consumed when generation tasks are submitted.

Vulnerability Patterns
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T09 · Insecure Skill Coding Practices

Error
Location
templates/config.json:4
Finding
Application Credentials and User Manuscripts Transmitted over Plaintext HTTP## Vulnerability Details **File Location**: `templates/config.json:4`; the insecure endpoint is also used in `SKILL.md:47`, `SKILL.md:64-66`, `SKILL.md:95-97`, `SKILL.md:147`, and `SKILL.md:224-232` **Vulnerability Type**: Plaintext transmission of credentials and potentially confidential user data **Risk Level**: High ### Vulnerable Code `templates/config.json:4`: ```json "service_url": "http://47.98.180.113:8081", ``` `SKILL.md:64-66`: ```bash curl -X POST "http://47.98.180.113:8081/api/skill/upload" \ -F "appKey=YOUR_APP_KEY" \ -F "file=@/path/to/novel.txt" ``` `SKILL.md:95-102`: ```bash curl -X POST "http://47.98.180.113:8081/api/skill/script" \ -H "Content-Type: application/json" \ -H "App-Key: YOUR_APP_KEY" \ -d '{ "oss": "https://jumuai.oss-cn-hangzhou.aliyuncs.com/...novel.txt", "episode_duration_minutes": 2, "episode_count_min": 10, "episode_count_max": 15 }' ``` ### Technical Analysis The configured service uses unencrypted HTTP and a bare IP address. The documented workflow transmits a valid application key, the complete user manuscript, an OSS object URL, task identifiers, generation parameters, and generated results through this endpoint. HTTP provides neither transport confidentiality nor authenticated server identity. An attacker with a privileged network position—such as a compromised router, malicious access point, hostile proxy, or upstream network observer—can inspect or modify requests and responses. Because the endpoint uses a bare IP over HTTP, the client cannot authenticate that it is communicating with the intended service. The upload workflow places the application key in multipart form data, while the task-submission workflow places it in an HTTP header. Both are visible in plaintext at the transport layer. The fact that the credential is in a header does not protect it without TLS. ### Attack Path 1. A user configures a valid Zeeli ...[truncated 1396 chars]
Remediation
## Remediation Suggestions 1. Replace the plaintext service URL with an HTTPS endpoint using an authenticated DNS hostname. 2. Configure all upload, task-submission, and status-polling examples to use HTTPS exclusively. 3. Reject configuration values beginning with `http://`; do not silently downgrade to plaintext transport. 4. Enforce normal TLS certificate and hostname validation. Never disable certificate verification. 5. Keep credentials in authorization headers over TLS rather than multipart form fields where the service protocol permits. 6. Use narrowly scoped, revocable credentials and rotate any App-Key previously transmitted through the HTTP endpoint. 7. Avoid exposing long-lived OSS URLs. Use short-lived, access-controlled signed URLs where possible. 8. Document the external processor, retention period, access controls, and privacy implications before uploading user content. 9. Add explicit user confirmation before transmitting potentially confidential manuscripts to the third-party service. 10. Apply response authentication or integrity controls where appropriate so modified task results cannot be accepted as authentic.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • 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)

Vague Triggers

Medium
Confidence
88% confidence
Finding
The trigger phrases are broad and include common requests like '生成剧本' and '影视改编' without explicit constraints or confirmation steps. This can cause the skill to activate unexpectedly on ambiguous user requests, increasing the chance of unintended file processing and transmission to external services.

Missing User Warnings

Medium
Confidence
98% confidence
Finding
The skill directs the agent to upload user files and send the App-Key to third-party services without an explicit privacy or security warning. This exposes potentially sensitive document contents and credentials to external infrastructure, especially concerning because the service endpoint includes a raw IP address and file upload workflow.

External Transmission

Medium
Category
Data Exfiltration
Content
**示例请求**:
```bash
curl -X POST "http://47.98.180.113:8081/api/skill/script" \
  -H "Content-Type: application/json" \
  -H "App-Key: YOUR_APP_KEY" \
  -d '{
Confidence
97% confidence
Finding
The skill sends user-controlled content and an App-Key to an external service endpoint, creating a clear data exfiltration and credential exposure path. The risk is heightened by the workflow's requirement to upload source files and poll a remote server, meaning sensitive content is intentionally transferred off-platform.

Missing User Warnings

Medium
Confidence
92% confidence
Finding
The skill instructs the agent to generate an md file for the user but does not clearly disclose that this writes a new local file. Silent local file creation can surprise users, create unwanted artifacts, and potentially expose sensitive generated content on disk.

Vague Triggers

Medium
Confidence
93% confidence
Finding
The description states only a broad capability ('文本转影视分镜剧本,支持本地文件上传') without clear activation boundaries, allowed file types, size limits, or explicit trigger conditions. In an agent setting, vague activation scope can cause unintended invocation on arbitrary uploaded content, increasing the risk of mishandling sensitive files or processing user inputs outside the intended use case.

Natural-Language Policy Violations

Low
Confidence
78% confidence
Finding
All user-facing instructions, examples, prompts, and output guidance are presented in Chinese, implying a fixed language/locale for operation. The file does not indicate that users may choose another language or that the Chinese-only behavior is a documented, justified locale restriction.

Natural-Language Policy Violations

Low
Confidence
91% confidence
Finding
The manifest presents the skill name and description only in Chinese, which can constitute a language/locale policy issue if users are not given a choice or informed that the skill is region-specific. There is no indication in the metadata that the language restriction is optional or justified by a specific locale requirement.

Natural-Language Policy Violations

Low
Confidence
78% confidence
Finding
The visible natural-language fields are entirely in Chinese, which may impose a specific language/locale on users without indicating any choice or opt-in. This can violate language/locale policy when the skill does not clearly offer multilingual support or document that it is intentionally limited to a Chinese-speaking context.

Static analysis

Detected: suspicious.install_untrusted_source

Install source points to URL shortener or raw IP.

Warn
Code
suspicious.install_untrusted_source
Location
templates/config.json:4