Back to skill

Security audit

Cloud Phone Agent

Security checks for vulnerabilities and agentic risk

Overview

The skill is not clearly malicious, but it combines cloud-phone automation and an API key with bundled mcporter instructions that expose broader MCP, auth, config, daemon, and stdio capabilities than the stated cloudphone purpose needs.

Review before installing. Use a least-privileged CLOUDPHONE_API_KEY, prefer test cloud phones and test accounts, avoid collecting sensitive screenshots or logs unless explicitly needed, and do not allow arbitrary mcporter URL, stdio, config, auth, daemon, or codegen commands unless you intentionally want those broader MCP capabilities. Verify and pin the mcporter package source/version before use.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:9
Finding

Unpinned Third-Party npm Dependency Allows Supply-Chain Compromise

Content
View full analysis

Vulnerability Details

File Location: SKILL.md:9-18; duplicated in mcporter-readme.md:9-18
Vulnerability Type: Unpinned third-party dependency
Risk Level: Medium

Vulnerable Code

SKILL.md:9-18:

json
"requires":
  { "bins": ["mcporter"], "env": ["CLOUDPHONE_API_KEY"] },
"install":
  [
    {
      "id": "node",
      "kind": "node",
      "package": "mcporter",
      "bins": ["mcporter"],
      "label": "Install mcporter (node)",
    },
  ],

The same unsafe package declaration appears in mcporter-readme.md:9-18:

json
"requires": { "bins": ["mcporter"] },
"install":
  [
    {
      "id": "node",
      "kind": "node",
      "package": "mcporter",
      "bins": ["mcporter"],
      "label": "Install mcporter (node)",
    },
  ],

Technical Analysis

Both installation declarations identify the dependency only by the mutable npm package name mcporter. They provide no exact version, lockfile, registry restriction, integrity hash, provenance verification, or validated source reference.

Consequently, installation may resolve whichever package release the configured npm registry currently serves. If the package, publisher account, registry, or resolution configuration is compromised, a malicious release could be installed without any change to this audited project. npm lifecycle scripts may also execute during installation unless explicitly disabled.

This is a supply-chain weakness rather than evidence that the current mcporter package is malicious. No malicious dependency payload was present in the reviewed files.

Attack Path

  1. An attacker compromises the npm publisher account, package distribution channel, or registry used to resolve mcporter.
  2. The attacker publishes or serves a malicious release under the expected package name.
  3. A user or automated Agent installs this skill using the declared Node installation metadata.

...[truncated 1257 chars]

Remediation
View remediation

Remediation Suggestions

  1. Pin mcporter to an exact, reviewed version rather than using an unqualified package name.
  2. Add a lockfile containing registry-resolved integrity metadata and require reproducible, frozen-lockfile installation.
  3. Restrict installation to the official npm registry or an internally controlled registry mirror.
  4. Verify the package publisher, source repository, release provenance, and signatures where supported.
  5. Validate the downloaded package against an approved cryptographic integrity hash before installation.
  6. Disable npm lifecycle scripts during installation where they are not required, for example through an equivalent of --ignore-scripts, after confirming that the package operates correctly without them.
  7. Run installation and execution under a dedicated, least-privileged account or sandbox.
  8. Expose CLOUDPHONE_API_KEY only to the process that requires it and restrict the key to the minimum necessary server permissions.
  9. Apply the same pinned and verified package declaration consistently in both SKILL.md and mcporter-readme.md.
  10. Add automated dependency monitoring and require security review before updating the pinned version.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (7)

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 75)May include surrounding context.

md
3. Never hardcode or commit real keys in repo files, `SKILL.md`, or config JSON.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The skill enables remote execution on cloud Android devices and explicitly returns screenshots, logs, and task results, but it does not warn that these actions may interact with third-party services, accounts, or expose sensitive on-device content. This omission can lead users or downstream agents to trigger privacy-impacting actions without informed consent or adequate scoping.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill is described as a narrowly scoped cloud Android task-execution helper, but the bundled documentation exposes a general-purpose MCP client capable of contacting arbitrary servers, authenticating, editing configuration, starting daemons, and invoking ad-hoc stdio commands. That scope expansion materially increases the reachable attack surface and enables tool use outside the user-expected boundary, which is dangerous in an agent setting.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · mcporter-readme.md (reported line 39)May include surrounding context.

md
- Selector: `mcporter call linear.list_issues team=ENG limit:5`
- Function syntax: `mcporter call "linear.create_issue(title: \"Bug\")"`
- Full URL: `mcporter call https://api.example.com/mcp.fetch url:https://example.com`
- Stdio: `mcporter call --stdio "bun run ./server.ts" scrape url=https://example.com`
- JSON payload: `mcporter call <server.tool> --args '{"limit":5}'`

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

Documenting arbitrary server configuration/authentication and code generation in a skill whose purpose is only cloud Android task execution creates unnecessary privilege and capability creep. In an agent environment, these extra features could be abused to connect to attacker-controlled MCP endpoints, persist credentials, or generate artifacts unrelated to the intended task.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

The example request explicitly sets "lang": "en" in natural-language guidance. Because the file does not explain that English is required or optional, this can be read as forcing a specific language without user opt-in, which is a locale-policy concern.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
85% confidence
Finding

This markdown file documents commands such as config add|remove|import|login|logout and daemon start|stop|restart, which can change persistent configuration or running processes. The description provides usage examples but no explicit warning that these operations may alter local state, affect existing setup, or interrupt services.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.