T09 · Insecure Skill Coding Practices
- Location
scripts/init_config.py:54- Finding
API credentials are visibly collected and stored without enforced restrictive permissions
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This GeeLark automation skill is mostly coherent, but it needs review because it handles powerful API and social-account credentials with real credential-protection gaps.
Install only after reviewing the credential flow. Keep baseUrl fixed to the official GeeLark API, create a real .gitignore entry for assets/config.json and logs, set config permissions to 600, prefer environment variables or a secret store, rotate exposed tokens, and do not give third-party social-media passwords to the agent. Manually confirm deletion, posting, credentialed RPA, and bulk operations.
scripts/init_config.py:54API credentials are visibly collected and stored without enforced restrictive permissions
scripts/geelark_client.py:91Configurable API origin permits forwarding the bearer token to an untrusted server
The skill description emphasizes GeeLark API management and social-media operations, but the supplied content prominently includes local diagnostics, app launching by package name, UI hierarchy dumping, and ADB-serial workflows. Such description-behavior mismatch is dangerous in security terms because it obscures operational reach and may lead an agent or reviewer to authorize broader local-device control than intended.
The skill description emphasizes GeeLark API management and social-media operations, but the supplied content prominently includes local diagnostics, app launching by package name, UI hierarchy dumping, and ADB-serial workflows. Such description-behavior mismatch is dangerous in security terms because it obscures operational reach and may lead an agent or reviewer to authorize broader local-device control than intended.
The skill description emphasizes GeeLark API management and social-media operations, but the supplied content prominently includes local diagnostics, app launching by package name, UI hierarchy dumping, and ADB-serial workflows. Such description-behavior mismatch is dangerous in security terms because it obscures operational reach and may lead an agent or reviewer to authorize broader local-device control than intended.
Tool calls are chained to bypass individual safety checks or escalate capabilities beyond what any single tool call would allow.
brew install android-platform-tools
# Ubuntu/Debian
sudo apt update && sudo apt install adb
# Windows
# Option 1: Using winget
Referenced artifact was not completely inspected
| `references/error_codes.md` | All error codes and solutions | API call fails |
This pattern attempts to override system instructions or ignore safety constraints. Without LLM analysis, manual review is recommended.
import uiautomator2 as u2
d = u2.connect(f"{ip}:{port}") d.debug = True # Enable debug mode to see HTTP request/response details
### 3. Test with Single Device First
This pattern attempts to override system instructions or ignore safety constraints. Without LLM analysis, manual review is recommended.
import uiautomator2 as u2
d = u2.connect(f"{ip}:{port}") d.debug = True # Enable debug mode to see HTTP request/response details
### 3. Test with Single Device First
This pattern attempts to override system instructions or ignore safety constraints. Without LLM analysis, manual review is recommended.
import logging
This pattern attempts to override system instructions or ignore safety constraints. Without LLM analysis, manual review is recommended.
import logging
This pattern attempts to override system instructions or ignore safety constraints. Without LLM analysis, manual review is recommended.
import logging
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
# Install system dependencies
# macOS: brew install android-platform-tools
# Ubuntu: sudo apt install adb
# Install Python dependencies (recommended: use virtual environment)
python3 -m venv .venv
The skill documents capabilities that involve reading credentials from local files, writing logs, making network/API calls, and executing local subprocesses, but it does not declare any explicit tool scope such as allowed-tools or permissions. In an agent environment, this creates an authorization gap where consumers may invoke a skill without understanding or constraining its actual access, increasing the risk of unintended shell execution, credential exposure, or filesystem/network misuse.
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
> **Credential Handling:**
> - API credentials (token, appId, apiKey) are stored in `assets/config.json`
> - This file is protected by `.gitignore` — **never commit it**
> - Set restrictive permissions: `chmod 600 assets/config.json`
> - **⚠️RPA tasks require third-party account login. We recommend completing login in GeeLark first. Never send account credentials to the agent.**
> - Logs are written to `logs/cloudphone/` — review and mask sensitive data before sharing
>
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
> **Credential Handling:**
> - API credentials (token, appId, apiKey) are stored in `assets/config.json`
> - This file is protected by `.gitignore` — **never commit it**
> - Set restrictive permissions: `chmod 600 assets/config.json`
> - **⚠️RPA tasks require third-party account login. We recommend completing login in GeeLark first. Never send account credentials to the agent.**
> - Logs are written to `logs/cloudphone/` — review and mask sensitive data before sharing
>
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
brew install android-platform-tools
# Ubuntu/Debian
sudo apt update && sudo apt install adb
# Windows
# Option 1: Using winget
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
brew install android-platform-tools
# Ubuntu/Debian
sudo apt update && sudo apt install adb
# Windows
# Option 1: Using winget
Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.
⚠️ AI agents MUST follow this exact sequence for deletion operations. Never skip steps or auto-execute.
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
assets/config.json:
chmod 600 assets/config.json
logs/cloudphone/ for sensitive data and redact as neededadb and uiautomator2 are from official sourcesData is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
"Authorization": "Bearer your_token_here"
}
response = requests.post(
"https://openapi.geelark.com/open/v1/phone/list",
headers=headers,
json={"page": 1, "pageSize": 10}
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
"Authorization": "Bearer your_token_here"
}
response = requests.post(
"https://openapi.geelark.com/open/v1/phone/list",
headers=headers,
json={"page": 1, "pageSize": 10}
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
"Authorization": "Bearer your_token_here"
}
response = requests.post(
"https://openapi.geelark.com/open/v1/phone/list",
headers=headers,
json={"page": 1, "pageSize": 10}
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
"Authorization": "Bearer your_token_here"
}
response = requests.post(
"https://openapi.geelark.com/open/v1/phone/list",
headers=headers,
json={"page": 1, "pageSize": 10}
This markdown file documents /open/v1/phone/delete and marks it with a warning icon, but the surrounding text only notes a prerequisite that phones must be stopped first, not that deletion may be destructive or irreversible. Under the markdown-specific SQP-2 criteria, descriptions of actions affecting user data or system state should clearly warn about those impacts.
The markdown lists /open/v1/group/delete, /open/v1/tag/delete, and /open/v1/proxy/delete as available operations, but it does not warn users that these actions remove configuration objects and may disrupt existing setups or automation. For markdown files, SQP-2 applies when potentially destructive behaviors are described without clear warnings about user/system impact.
The documentation normalizes submitting third-party account credentials such as TikTok, Instagram, Facebook, Google, and Shein usernames/passwords through API tasks without privacy or handling safeguards. In an agent-skill context, this increases the risk of credential collection, insecure storage, unintended logging, and transmission of sensitive secrets to an external service.