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.
