Back to skill

Security audit

Shellphone Gateway

Security checks for vulnerabilities and agentic risk

Overview

This skill appears purpose-aligned, but its setup runs mutable external code and its privacy claims do not clearly account for external voice services.

Review this before installing. Use a pinned release or audited commit/package version, inspect the gateway repository and Docker Compose configuration before running it, and assume TTS/ASR may send voice or text data to ScrappyLabs unless the publisher documents otherwise and provides a clear disable or opt-in setting.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Findings (2)

T03 · Remote Payload Retrieval and Execution

Error
Location
SKILL.md:19
Finding

Unpinned Remote Payload Retrieval and Execution

Content
View full analysis

Vulnerability Details

File Location: SKILL.md:19-25
Vulnerability Type: Remote code retrieval from mutable third-party sources
Risk Level: High

Vulnerable Code

bash
# Docker (recommended)
git clone https://github.com/loserbcc/openclaw-gateway.git
cd openclaw-gateway
docker compose up

# Or Python
pip install openclaw-gateway
openclaw-gateway

Technical Analysis

The installation instructions retrieve and immediately execute third-party code without pinning it to a reviewed commit, immutable container digest, or exact Python package version. No checksum, signature, lock file, or other provenance-verification mechanism is specified.

The effective executable payload can therefore change after this Skill has been reviewed. In the Docker path, docker compose up processes configuration from the newly cloned repository and may build or run remotely sourced images and code. In the Python path, pip install openclaw-gateway installs the currently resolved package release, which is then immediately executed.

The remote repository and Python package implementation are not included in this project, so the audit cannot verify their current or future behavior. This finding does not establish that the referenced project is malicious; it identifies the unsafe trust and execution model documented by the Skill.

Attack Path

  1. An attacker compromises the referenced GitHub repository, Python package publisher account, dependency chain, or associated container-image source.
  2. The attacker modifies a mutable branch, publishes a malicious package release, or substitutes an image used by the Compose configuration.
  3. A user follows the Quick Start instructions after the compromise.
  4. The user retrieves the unverified current payload through git clone, pip install, or a container-image pull.
  5. docker compose up or openclaw-gateway executes the attacker-controlled payload.
  6. The paylo ...[truncated 862 chars]
Remediation
View remediation

Remediation Suggestions

  • Pin the Git repository to a reviewed release tag and full commit hash rather than cloning and executing the default branch.
  • Pin the Python package to an exact audited version, such as openclaw-gateway==X.Y.Z, and verify package hashes using a locked requirements file with hash enforcement.
  • Publish cryptographic checksums or signatures and document how users must verify them before execution.
  • Reference container images by immutable SHA-256 digest rather than mutable tags.
  • Vendor or include the reviewed Compose configuration in the Skill package when practical.
  • Review and document all volume mounts, host-network settings, environment variables, Linux capabilities, device mappings, and privileged-container settings.
  • Run the gateway as a dedicated unprivileged account with a read-only filesystem and the minimum necessary network and filesystem access.
  • Separate download, verification, and execution into distinct documented steps so users do not immediately execute unverified content.

other

Warning
Location
.
Finding

Privacy Claim Is Inconsistent with External TTS and ASR Service Disclosure

Content
View full analysis

Vulnerability Details

File Location: SKILL.md:9-14 and SKILL.md:37-41
Vulnerability Type: Incomplete or misleading external data-processing disclosure
Risk Level: Medium

Vulnerable Content

markdown
ShellPhone + OpenClaw Gateway creates a direct, encrypted line between your iPhone and your self-hosted AI bots.

- **Privacy-first**: Messages never touch third-party servers
- **Self-hosted**: Runs on your hardware
- **Auto-detects ollama**: Zero config if you have local LLMs
- **Free TTS/ASR**: Via ScrappyLabs (no account needed)
markdown
## Links

- **TestFlight**: https://testflight.apple.com/join/BnjD4BEf
- **Gateway GitHub**: https://github.com/loserbcc/openclaw-gateway
- **ScrappyLabs**: https://scrappylabs.ai

Technical Analysis

The documentation makes the absolute assertion that messages never reach third-party servers while also stating that text-to-speech and automatic speech recognition are provided through ScrappyLabs. It does not explain whether audio, transcripts, message text, metadata, identifiers, or derived content are transmitted to that external service. It also does not state whether the integration is disabled by default or requires explicit user consent.

Because the gateway implementation is not included in the audited project, the actual data flow cannot be verified. The issue is therefore the documentation inconsistency and missing privacy disclosure, not a confirmed assertion that ScrappyLabs receives any particular data.

Attack Path

  1. A user relies on the statement that messages never touch third-party servers.
  2. The user enables or uses the advertised TTS or ASR functionality without being informed of its precise data flow.
  3. If that functionality sends content to ScrappyLabs, voice recordings, transcripts, message content, or associated metadata may leave the self-hosted environment.
  4. Sensitive information may consequently be proces ...[truncated 817 chars]
Remediation
View remediation

Remediation Suggestions

  • Replace the absolute privacy claim with a precise statement that distinguishes self-hosted message transport from optional externally processed features.
  • Document exactly what data each TTS or ASR operation transmits, the destination endpoints, transport protections, retention behavior, and any metadata collected.
  • State clearly whether ScrappyLabs processing is enabled by default.
  • Require explicit, informed opt-in before transmitting content to an external service.
  • Provide a fully local TTS and ASR alternative for users who require end-to-end self-hosting.
  • Add configuration instructions for disabling all third-party processing.
  • Make the application visibly indicate when content will leave the self-hosted environment.
  • Validate the documented privacy claims against the gateway's actual network behavior before publication.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (1)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill advertises 'Free TTS/ASR' via ScrappyLabs with 'no account needed' but does not disclose that using those features may transmit voice or message content to an external third-party service. In a privacy-focused gateway skill, that omission can mislead operators into believing all data stays self-hosted, causing unintended disclosure of sensitive audio or text.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.