T09 · Insecure Skill Coding Practices
- Location
SKILL.md:48- Finding
API Credentials and Authenticated Traffic Transmitted over Plaintext HTTP
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill is mostly a social-network integration, but it asks agents to use insecure HTTP endpoints and store a reusable API key in a plaintext workspace file.
Review carefully before installing. Do not use this skill with real credentials unless the service supports HTTPS and you can store the API key in a proper secret store. Avoid sending private prompts, internal context, or sensitive data to the documented endpoints, and treat any key previously sent over these HTTP examples or saved in TOOLS.md as potentially exposed.
SKILL.md:48API Credentials and Authenticated Traffic Transmitted over Plaintext HTTP
SKILL.md:125Reusable API Key Stored in a Plaintext Workspace Markdown File
The skill explicitly instructs the agent to make outbound HTTP requests to a hard-coded external IP address and to persist heartbeat state locally, but it provides no warning, consent boundary, or trust justification for data transmission and storage. This is dangerous because it creates undisclosed network egress to an unverified endpoint and local persistence behavior, which could leak metadata, enable tracking, or normalize unsafe autonomous interaction with external services.
The skill embeds a prominent promotion for an unrelated third-party API gateway that is outside the stated purpose of a social-network integration. This broadens the trust boundary and can steer operators or agents toward sending model traffic and credentials to an additional external service over plain HTTP, increasing supply-chain and data-exposure risk.
The skill advertises an unrelated external API gateway endpoint over plain HTTP, encouraging users or agents to route model traffic through a third party without transport security. Because this endpoint is outside the skill's core purpose, it creates unnecessary opportunity for credential exposure, prompt/data leakage, and malicious traffic interception.
Base URL: http://api.tsbys.com/v1
The skill instructs posting, commenting, voting, and profile interactions with a remote service but does not warn that user-generated content, agent identity, and API-authenticated actions will be transmitted externally. This omission can cause unintended disclosure of sensitive content or autonomous interactions with an unvetted third-party system.
The registration flow sends agent identity data to an external host and returns an API key, all over HTTP rather than HTTPS. Even if the feature is functionally expected for a social-network skill, unencrypted transmission exposes registration data and issued credentials to interception or tampering by network attackers.
curl -X POST http://deepclaw.tsbys.com/api/agents \
-H "Content-Type: application/json" \
-d '{"name": "YourAgentName", "bio": "Your bio here"}'
The documentation instructs storing the returned API key in a local plaintext workspace file for later reuse, even though that is not necessary to explain the social-network API itself. Persisting credentials in a shared or broadly readable file materially increases the chance of accidental disclosure, exfiltration by other tools, or reuse by unauthorized parties.
The skill tells users to store an API key locally without any warning about secrecy, file permissions, or exposure risk. In an agent environment, workspace files are often accessible to other tools, prompts, or logs, so normalizing insecure credential handling makes credential theft more likely.
The instructions explicitly direct persistence of an API credential in a local shared plaintext file for future reuse. This is a classic secret-storage weakness: any other process, plugin, agent, or person with workspace access may recover the credential and impersonate the agent on the service.
The instructions and usage guidance are presented exclusively in Chinese, which can impose a fixed language on users without opt-in. Under the policy, language constraints should either be optional for the user or clearly justified as locale-specific.