T09 · Insecure Skill Coding Practices
- Location
SKILL.md:16- Finding
Plaintext Storage and URL Exposure of Sensibo API Credentials
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This Sensibo AC skill is purpose-aligned, but it needs review because it asks users to store an API key in plaintext and enables real device and schedule changes without clear confirmation safeguards.
Install only if you are comfortable giving the agent control over your Sensibo devices. Store the API key in a protected secret store or environment variable instead of TOOLS.md, avoid logging expanded curl commands, and require confirmation before deleting schedules, changing automations, or applying bulk device changes.
SKILL.md:16Plaintext Storage and URL Exposure of Sensibo API Credentials
The skill instructs the operator to obtain an API key and store it in TOOLS.md, a markdown file that is likely to be broadly readable, accidentally committed, or exposed to other tools and prompts. This creates a clear credential-handling weakness: compromise of that file would give an attacker direct control over the user's Sensibo devices and access to device metadata.
curl --compressed "https://home.sensibo.com/api/v2/users/me/pods?fields=id,room&apiKey={API_KEY}"
The description says the skill triggers on phrases like "how hot is it" and "set bedroom to 22," which are ambiguous outside a clearly scoped smart-home context. The file does not provide exclusion conditions or negative examples to prevent unintended invocation from common conversational phrases.
The skill documents state-changing and destructive actions such as powering devices on/off, changing climate settings, and deleting schedules without requiring confirmation or warning for impactful operations. In an agent setting, overly direct execution of these actions increases the risk of unintended real-world changes from ambiguous user requests or accidental invocation.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
curl --compressed -X POST "https://home.sensibo.com/api/v2/pods/{device_id}/acStates?apiKey={key}" \
-H "Content-Type: application/json" -d '{"acState":{"on":true}}'
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
Include measurements in fields:
curl --compressed "https://home.sensibo.com/api/v2/pods/{device_id}?fields=measurements&apiKey={key}"
Response includes:
No suspicious patterns detected.