T09 · Insecure Skill Coding Practices
- Location
scripts/synero-council.py:19- Finding
Configurable API Endpoint Allows Bearer Credential and Prompt Disclosure
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill appears to perform its stated Synero AI-council function, but it sends user prompts and an API key over the network and allows an environment variable to redirect that authenticated request to an arbitrary endpoint.
Review before installing. Use this only when you intend to send the prompt to Synero, avoid secrets or regulated/confidential data unless approved, keep SYNERO_API_KEY narrowly scoped and revocable, and do not set SYNERO_API_URL unless you fully trust the exact HTTPS endpoint receiving the bearer token.
scripts/synero-council.py:19Configurable API Endpoint Allows Bearer Credential and Prompt Disclosure
Credentials or environment variables flow to a network sink. This is a high-confidence indicator of credential exfiltration.
events: dict[str, Any] = {"synthesis": "", "advisor": {}, "complete": None}
try:
with urllib.request.urlopen(req, timeout=REQUEST_TIMEOUT_SECONDS) as resp:
if resp.status != 200:
body = resp.read().decode("utf-8", errors="replace")
raise RuntimeError(f"HTTP {resp.status}: {body[:400]}")
The skill declares environment and network capabilities through metadata but does not define an explicit permission or allowed-tools scope. That creates an authorization/consent gap: a caller may not realize the skill can transmit user prompts and environment-derived secrets to an external service, increasing the risk of unintended data exposure or overbroad execution in permissive runtimes.
The description is broad enough to match many common 'strategy' or 'research' requests, which can cause the skill to auto-activate in contexts where the user did not intend to send content to a third-party service. In this skill's context, overbroad activation is more dangerous because activation triggers external network transmission of potentially sensitive prompts.
The markdown explains that prompts are sent to Synero, but it does not provide a clear, prominent user warning that user input will be transmitted to an external API service. For a judgment-oriented assistant skill, users may include proprietary plans, hiring discussions, architecture details, or other sensitive data; without an explicit warning and consent cue, this creates a meaningful data leakage risk.
This script transmits the user prompt, optional thread ID, optional parent query ID, and API key to a remote service without an explicit runtime notice. In a terminal tool used for strategy, research, hiring, or architecture questions, users may paste sensitive business or personal data, so the lack of a clear disclosure increases the chance of unintended data exposure to the third-party service.
No suspicious patterns detected.