T09 · Insecure Skill Coding Practices
- Location
SKILL.md:139- Finding
API Key Exfiltration Through an Unvalidated Configurable Endpoint
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This Karma setup skill performs expected login setup, but it handles API keys in ways that could expose them or create unsafe persistent shell changes.
Review this skill before installing. It is not clearly malicious, but you should avoid saving the key to shell startup files unless you understand the exposure, avoid echoing the full key into chat, and only run verification against the intended Karma HTTPS endpoint or a trusted local development server.
SKILL.md:139API Key Exfiltration Through an Unvalidated Configurable Endpoint
SKILL.md:101Shell Startup Command Injection Through Unsafe API Key Persistence
SKILL.md:112API Key Exposed in Plaintext Shell Configuration and Conversation Output
Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.
curl -s "${KARMA_API_URL:-https://gapapi.karmahq.xyz}/v2/agent/info" \
-H "x-api-key: ${KARMA_API_KEY}" \
-H "X-Source: skill:setup-agent" -H "X-Invocation-Id: $INVOCATION_ID" -H "X-Skill-Version: 0.2.0" \
| python3 -m json.tool
The condition "before first use of any Karma skill" is ambiguous and delegates invocation to a broad stateful heuristic rather than a clear user intent. This can cause the skill to run preemptively and request or store secrets even when the user has not asked to authenticate yet.
The condition "before first use of any Karma skill" is ambiguous and delegates invocation to a broad stateful heuristic rather than a clear user intent. This can cause the skill to run preemptively and request or store secrets even when the user has not asked to authenticate yet.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
BASE_URL="${KARMA_API_URL:-https://gapapi.karmahq.xyz}"
INVOCATION_ID=$(uuidgen)
curl -s -X POST "${BASE_URL}/v2/agent/register" \
-H "Content-Type: application/json" \
-H "X-Source: skill:setup-agent" -H "X-Invocation-Id: $INVOCATION_ID" -H "X-Skill-Version: 0.2.0" \
-d '{}'
The skill instructs the agent to display the user's API key back in the success message, unnecessarily exposing a sensitive credential in the chat transcript. Chat logs may be retained, shared, or inspected later, so echoing the full key increases the risk of credential theft and account compromise.
The file prescribes fixed English user-facing text for the confirmation message and does not indicate that the language should follow the user's preference. This can violate language or locale policies when users have not opted into English-only responses.
No suspicious patterns detected.