T08 · Insecure Dependencies
- Location
SKILL.md:43- Finding
Unpinned Executable Third-Party Dependency
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 43–45
Vulnerability Type: Unpinned third-party package installation
Risk Level: MediumVulnerable Code
bash pip install ghost-in-the-droidThe installed package is subsequently registered as an MCP server in
SKILL.md, lines 47–58:json { "mcpServers": { "ghost-in-the-droid": { "command": "python", "args": ["-m", "ghost_in_the_droid"] } } }bash openclaw mcp add ghost-in-the-droid --command "python -m ghost_in_the_droid"Technical Analysis
The installation command retrieves the package version currently selected by the package index without pinning an exact reviewed version, verifying artifact hashes, or using a committed dependency lock file. Python package installation may execute package-controlled build or installation logic. The installed module is then configured for later execution as an MCP server.
This creates a supply-chain exposure: if the publisher account, package release process, package index, or transitive dependency chain is compromised, a malicious package release could be installed despite the skill documentation itself remaining unchanged.
The MCP server's documented functions include screenshots, accessibility-tree and OCR capture, clipboard access, text entry, app control, APK installation, device enumeration, app-data clearing, and emulator management. Consequently, compromise of this dependency could expose both the host execution context and connected mobile devices.
Attack Path
- An attacker compromises the package publisher, release pipeline, distribution account, or a relevant dependency.
- The attacker publishes a malicious version that remains compatible with the unpinned package name.
- A user follows the documented
pip install ghost-in-the-droidinstruction. - The package manager selects and installs the malicious release; package-controlled installation or build logic may execute in the ...[truncated 1250 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin the dependency to an exact, reviewed release, for example
ghost-in-the-droid==X.Y.Z. - Distribute a lock file or hash-checked requirements file and require installation with hash verification, such as
pip install --require-hashes -r requirements.txt. - Verify package provenance and document the trusted package index, source repository, maintainer identity, release-signing process, and expected artifact hashes.
- Review and lock transitive dependencies rather than constraining only the top-level package.
- Install the MCP server in a dedicated virtual environment, container, or similarly isolated runtime under a non-privileged account.
- Restrict filesystem and network access to the minimum required for mobile automation.
- Expose only explicitly authorized devices and avoid running the server with root or administrator privileges.
- Require explicit user authorization for sensitive operations, particularly clipboard reads, screenshots, APK installation, app-data clearing, and credential entry.
- Monitor dependency updates and require security review before changing the pinned version or accepted hashes.
- Pin the dependency to an exact, reviewed release, for example
