T09 · Insecure Skill Coding Practices
- Location
scripts/generate.py:57- Finding
Unrestricted API Destination Can Expose Prompts and Reach Internal Services
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill coherently wraps a local DrawThings image-generation API, with manageable privacy and supply-chain cautions but no evidence of hidden or malicious behavior.
Install only if you are comfortable sending prompts to the configured DrawThings endpoint. Keep DRAWTHINGS_URL on localhost unless you intentionally trust a remote server, avoid putting secrets or private data in prompts, strip metadata before sharing generated files when privacy matters, and prefer verified .safetensors models over untrusted checkpoint files.
scripts/generate.py:57Unrestricted API Destination Can Expose Prompts and Reach Internal Services
scripts/generate.py:17Unpinned Runtime Dependency Installation Guidance
references/models.md:47Documentation Recommends Unverified Community Models and Unsafe Checkpoint Format
The skill advertises use of environment variables, file output, and network access but does not declare an explicit tool scope such as permissions or allowed-tools. That creates an authorization ambiguity: an agent/runtime may grant broader capabilities than users expect, making network requests and file writes possible without clear least-privilege boundaries.
The skill states that PNG outputs embed prompt and generation metadata, but it does not clearly warn users that this can expose sensitive prompt contents, seeds, timestamps, or workflow details when images are shared. In this context, prompts may contain proprietary concepts, personal data, or internal instructions, so silent metadata retention creates a realistic confidentiality risk.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
}
try:
response = requests.post(endpoint, json=payload, timeout=300)
response.raise_for_status()
return response.json()
except requests.exceptions.ConnectionError:
No suspicious patterns detected.