Back to skill

Security audit

SidecarOneStep

Security checks for vulnerabilities and agentic risk

Overview

This skill appears aligned with Sidecar automation, but it asks users to install and run an unverified external macOS app that can control devices and expose a local HTTP control server.

Install only if you trust the SidecarOneStep publisher and are comfortable running its macOS app as an MCP server. Before using it, prefer a fixed release, verify the app signature/notarization or a trusted hash if available, and avoid starting the HTTP control server unless you understand who can access it and how it is protected.

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 (1)

T03 · Remote Payload Retrieval and Execution

Error
Location
SKILL.md:69
Finding

External Application Binary Is Installed and Executed Without Integrity Verification

Content
View full analysis

Vulnerability Details

File Location: SKILL.md:69-76; related mutable download declarations appear at SKILL.md:15-19 and clawhub.json:43-48
Vulnerability Type: Unverified remote payload retrieval and execution
Risk Level: High

Vulnerable code:

markdown
Download the latest version from GitHub Releases:

https://github.com/yi-nology/sidecarOneStep/releases/latest

text

Or direct download:
```bash
curl -L -o SidecarOneStep.dmg https://github.com/yi-nology/sidecarOneStep/releases/download/v1.3.9/SidecarOneStep_Installer.dmg
hdiutil attach SidecarOneStep.dmg
cp -R /Volumes/SidecarOneStep\ Installer/SidecarOneStep.app /Applications/
text

The associated installation metadata contains a mutable release URL:

```json
{
  "type": "download",
  "url": "https://github.com/yi-nology/sidecarOneStep/releases/latest",
  "message": "Please download and install SidecarOneStep from GitHub Releases"
}

After installation, the downloaded executable is registered as an MCP server:

json
{
  "type": "command",
  "cmd": "mcporter config add sidecar-onestep --command /Applications/SidecarOneStep.app/Contents/MacOS/SidecarOneStep --args mcp",
  "message": "Configure SidecarOneStep MCP server"
}

Technical Analysis

The skill directs users or an installation system to retrieve an opaque DMG from an external release channel, copy the contained application into /Applications, and register its executable with mcporter. No SHA-256 digest, cryptographic release signature, Apple Team ID, code-signing requirement, or notarization check is provided before the application is trusted and executed.

The /releases/latest endpoint is mutable, so the artifact selected after the audit can differ from the artifact available during review. Even the version-specific download is trusted solely through its remote URL and is not independently pinned by content digest. The repository do ...[truncated 2152 chars]

Remediation
View remediation

Remediation Suggestions

  1. Replace every mutable /releases/latest reference with one explicitly approved version.
  2. Publish a trusted SHA-256 digest for each architecture-specific DMG and verify it before mounting:
    bash
    echo "EXPECTED_SHA256  SidecarOneStep.dmg" | shasum -a 256 -c -
    
  3. Abort installation if digest verification fails; never continue with only a warning.
  4. Verify the installed application's Apple signature and expected Team ID:
    bash
    codesign --verify --deep --strict --verbose=2 /Applications/SidecarOneStep.app
    codesign -dv --verbose=4 /Applications/SidecarOneStep.app
    
  5. Validate notarization and Gatekeeper acceptance:
    bash
    spctl --assess --type execute --verbose=4 /Applications/SidecarOneStep.app
    
  6. Store expected hashes and signing identities in reviewed, version-controlled metadata rather than retrieving them from the same release location as the binary.
  7. Make package.json, clawhub.json, documentation, and publishing scripts use one consistent version.
  8. Prefer a reproducible build or include reviewable application source and signed provenance attestations so the distributed binary can be tied to audited source.
  9. Register the executable with mcporter only after all integrity, signing-identity, and notarization checks succeed.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • 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 (10)

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The declared description presents an end-user Sidecar management and automation tool for controlling iPad/macOS Sidecar behavior. The supplied code does not implement Sidecar connection, remote control, automation, MCP device management, or any macOS/iPad interaction. Instead, it is a release/publishing utility script for distributing the skill to ClawHub. That is a materially different primary purpose and includes undeclared capabilities related to account login state checking and package publication.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The declared description describes an end-user operational tool for controlling and automating macOS Sidecar interactions with iPads. The provided code does not implement any Sidecar, device management, remote control, or MCP runtime functionality. Instead, it is a developer-facing release script that changes into a workspace directory, verifies ClawHub login, and publishes the skill to ClawHub. This is a materially different primary purpose from the declared behavior, so it is a clear mismatch.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

This markdown file is written entirely in Chinese, including installation and publishing instructions, with no indication that users can choose another language. The policy specifically flags language or locale constraints when a skill forces a specific language without user opt-in, and no region-specific justification is provided here.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The README instructs users to enable an MCP stdio interface and describes starting or stopping an HTTP control server, but it provides no warning about the security implications of exposing local control surfaces. For a tool that can manage device connections and remote control workflows, omitting basic guidance on trust boundaries, binding scope, authentication, or operational risk can lead users to enable powerful interfaces unsafely.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill advertises a web console and includes a tool to start an HTTP control server, but it does not prominently warn that this exposes a remote-control surface. Users may enable it without understanding network exposure, access-control requirements, or the risk of unauthorized local-network interaction.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The trigger guidance uses broad phrases like 'Connect my iPad' and 'Start the Sidecar web console' without requiring confirmation or stronger scoping. In an AI-triggered tool environment, that can cause unintended invocation of device-control actions or exposure of the web control interface when a user is speaking hypothetically or ambiguously.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The natural-language command examples remain broad and map directly to operational actions without safety boundaries. This increases the chance that an assistant will over-trigger on casual conversation and execute commands affecting device connectivity or remote control state.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
83% confidence
Finding

The natural-language documentation appears to require Chinese comprehension, but the file does not state that the skill is region- or language-specific, nor does it offer an alternative language. Under the stated policy, forcing a specific language without user opt-in is a locale-policy concern.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
81% confidence
Finding

The get_logs capability is listed without warning that logs may contain device names, connection history, ports, or session-related troubleshooting details. In assistant-mediated workflows, exposing logs without caution can leak sensitive operational information into chat history or downstream tools.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
83% confidence
Finding

This shell script includes natural-language content in Chinese such as the file description and section comments, while the rest of the user-facing output is in English. That creates an inconsistent language policy and effectively imposes a locale choice without any opt-in or documented region-specific reason.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.