T09 · Insecure Skill Coding Practices
- Location
scripts/echodecks_client.py:24- Finding
Unencoded User Input Permits HTTP Query-Parameter Injection
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill is a straightforward EchoDecks API wrapper whose network use, API key, account mutations, and credit-consuming actions match its stated flashcard and podcast purpose.
Install only if you intend to connect your agent to EchoDecks. Keep ECHODECKS_API_KEY private, expect provided text and study data to be sent to EchoDecks, and be careful with generation commands because they spend account credits. Avoid passing untrusted deck, card, or podcast IDs until the client encodes query parameters safely.
scripts/echodecks_client.py:24Unencoded User Input Permits HTTP Query-Parameter Injection
This Python code file sends user-supplied content and identifiers to a remote API via multiple GET/POST/PUT/DELETE requests, including study data, deck metadata, and freeform text. While the client performs the operations as intended, there is no confirmation prompt, user-facing notice, or explanatory comment/docstring warning that these inputs are transmitted off-system to echodecks.com.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
if method == "GET":
response = requests.get(url, headers=headers)
elif method == "POST":
response = requests.post(url, headers=headers, json=data)
elif method == "PUT":
response = requests.put(url, headers=headers, json=data)
elif method == "DELETE":
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
elif method == "POST":
response = requests.post(url, headers=headers, json=data)
elif method == "PUT":
response = requests.put(url, headers=headers, json=data)
elif method == "DELETE":
response = requests.delete(url, headers=headers)
else:
The skill requires an API key for an external service but does not warn users that credentials will be transmitted to a third-party API or advise on secure handling. This creates a real, though low-severity, risk of users supplying sensitive credentials without understanding the trust boundary or storage/exposure implications.
The skill documents AI generation actions that consume account credits, but the warning is incomplete because it notes cost per action without clearly alerting users that executing these tools can cause billable account impact. In an agent context, users may trigger these operations indirectly and incur unwanted charges or resource depletion without meaningful confirmation.
No suspicious patterns detected.