Scan Report
25 /100
midea-cloud-control
Connect and control Midea devices through the Midea cloud with a local cached account/device config. Supports connect, list, and power toggle.
This is a legitimate Midea cloud control skill that stores user credentials in plaintext on disk — a significant but documented and disclosed security concern with no evidence of exfiltration or covert behavior.
Safe to install
Accept the skill but warn users that passwords are stored in plaintext in ~/.openclaw/midea-cloud-control/config.json. Pin midealocal to a specific version (e.g., ==6.6.0) to prevent supply-chain surprises. Add an allowed-tools declaration mapping uv/Bash/Read/Write.
Findings 3 items
| Severity | Finding | Location |
|---|---|---|
| High | Plaintext password storage on disk Credential Theft | references/generated-midea-skill-cli.md:65 |
| Medium | Unpinned midealocal dependency version Supply Chain | references/generated-midea-skill-cli.md:9 |
| Low | Missing allowed-tools declaration Doc Mismatch | SKILL.md:1 |
| Resource | Declared | Inferred | Status | Evidence |
|---|---|---|---|---|
| Filesystem | WRITE | WRITE | ✓ Aligned | SKILL.md bootstrap step writes config_store.py and midea_skill_cli.py; generated… |
| Shell | WRITE | WRITE | ✓ Aligned | SKILL.md executes 'uv run python skills_runtime/midea-cloud-control/midea_skill_… |
| Network | READ | READ | ✓ Aligned | generated-midea-skill-cli.py uses aiohttp to call Midea cloud APIs (login, list,… |
| Environment | NONE | NONE | — | No environment variable access found |
| Skill Invoke | NONE | NONE | — | No nested skill invocation |
| Clipboard | NONE | NONE | — | No clipboard access |
| Browser | NONE | NONE | — | No browser access |
| Database | NONE | NONE | — | No database access |
File Tree
4 files · 11.7 KB · 346 lines Markdown 4f · 346L
├─
▾
references
│ ├─
api-notes.md
Markdown
│ ├─
generated-config-store.md
Markdown
│ └─
generated-midea-skill-cli.md
Markdown
└─
SKILL.md
Markdown
Dependencies 2 items
| Package | Version | Source | Known Vulns | Notes |
|---|---|---|---|---|
midealocal | unpinned | pip | No | api-notes.md references 6.6.0 but the generated CLI does not enforce a version pin. A future release could alter behavior. |
aiohttp | unpinned | pip | No | Used for HTTP client; no version constraint |
Security Positives
✓ No base64-encoded execution, obfuscation, or anti-analysis techniques detected
✓ No network requests to unexpected/external IPs — all API calls go to Midea cloud infrastructure
✓ No credential exfiltration — passwords are stored locally only for Midea API authentication
✓ No reverse shell, C2, or covert data transfer mechanisms
✓ Documentation is thorough and explicitly discloses credential storage location and behavior
✓ No hidden HTML comments, embedded scripts, or shadow functionality
✓ The skill is a pure-text publishable skill with no binary artifacts