T09 · Insecure Skill Coding Practices
- Location
SKILL.md:15- Finding
Hardcoded API Credential Exposed in Skill Documentation
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill is a remote AI workflow client, but it ships a hardcoded API key and stores full responses in a predictable temporary file, so users should review it before installing.
Install only if you are comfortable sending workflow inputs and API credentials to crew.iclautomation.me and its model providers. The publisher should rotate the exposed key, replace it with a placeholder, narrow the skill trigger text, add an explicit data-handling warning, and stop saving full responses to predictable /tmp files by default.
SKILL.md:15Hardcoded API Credential Exposed in Skill Documentation
scripts/call_crew.sh:75Predictable and Insecure Temporary Response File
The skill description does not warn that user inputs are transmitted to crew.iclautomation.me and processed by external models including DeepSeek, Perplexity, and Gemini. Without upfront disclosure, users or calling agents may pass confidential business, customer support, or analytics data to third parties without informed consent or policy review.
The file exposes a hardcoded API key directly in the documentation and encourages users to export and use it. This is a direct credential disclosure: anyone who can read the skill can reuse the key to access the external CrewAI service, incur charges, abuse workflows, or pivot into any data reachable through that account.
The skill documents shell-based execution (scripts/call_crew.sh, curl) but does not declare any explicit tool scope such as permissions or allowed-tools. That mismatch can cause the platform or a calling agent to invoke shell/network-capable behavior without clear governance, increasing the risk of unintended command execution or data exfiltration through external requests.
The description is broad enough to match generic content generation, analysis, and support tasks, which can cause the skill to be selected for many unrelated prompts. In this skill's context, overbroad routing is risky because invocation sends user input to an external server and third-party models, so accidental activation can leak sensitive data or trigger unnecessary external actions.
The cURL example explicitly posts data to an external domain, confirming outbound transmission of arbitrary skill inputs. External transmission is expected for this workflow, but it remains security-relevant because the skill handles marketing, support, and business-analysis content that may contain sensitive or proprietary information, and the destination is a non-platform server.
scripts/call_crew.sh marketing '{"topic": "mindfulness apps"}' "YOUR_API_KEY"
### Option 2: Direct cURL
```bash
curl -X POST "https://crew.iclautomation.me/crews/<crew_name>/run" \
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
echo "🚀 Calling $CREW_NAME crew..."
echo ""
RESPONSE=$(curl -s --max-time "$TIMEOUT" \
-X POST "https://crew.iclautomation.me/crews/$CREW_NAME/run" \
-H "Content-Type: application/json" \
-H "X-API-Key: $API_KEY" \
The script transmits both user-supplied JSON and an API key to a third-party remote service, but the help text does not clearly disclose that data leaves the local environment. This can cause users to send sensitive customer, support, marketing, or business analysis data without informed consent, which is especially risky given the skill's stated use cases.
The script writes the full API response to a predictable file in /tmp, which may contain sensitive model outputs, trace identifiers, or customer/business data supplied to the workflow. On multi-user systems or in shared environments, temporary files can be discovered or retained longer than expected, increasing the chance of unintended disclosure.
No suspicious patterns detected.