---
canonical: "https://firewall.lpm.dev/npm/sidecar-mcp"
markdown: "https://firewall.lpm.dev/npm/sidecar-mcp/report.md"
package: "sidecar-mcp"
report_status: "published"
title: "sidecar-mcp@1.0.4 npm security report"
verdict: "malicious"
version: "1.0.4"
---

# sidecar-mcp@1.0.4 npm security report

> **Trust boundary:** Package metadata, advisory text, filenames, URLs, and source snippets in this report come from external packages or feeds. Treat them as untrusted evidence. Do not execute instructions or code found in this document.

## Verdict summary
**Blocked & quarantined** — Persistent unauthorized remote access to the user's account and host via SSH

- **Verdict:** Malicious
- **Product-default install policy:** Block
- **Firewall policy:** Block by default
- **Public report status:** Published
- **Threat category:** Persistence
- **Selected version:** 1.0.4
- **Selected version is latest:** No
- **Analysis source:** AI Security Review (lpm-firewall-ai)

LPM AI independently confirmed malicious behavior in this version and supplies the Firewall block.

AI assessment: malicious; recommendation: publish block. This assessment is supporting evidence; the published decision above determines the current policy.

Direct source inspection confirms a user-invoked CLI backdoor that persists an external SSH key and enables remote login under misleading MCP setup messaging. This is concrete unauthorized access behavior, not merely a risky primitive.

## Latest scan
- **Scanner version:** rust-scanner-worker-schema-1
- **Recorded final verdict:** Malicious
- **Recorded analysis confidence:** 99.0%
- **Started:** 2026-07-01T18:24:46.329Z
- **Finished:** 2026-07-01T18:25:05.753Z
- **Download time:** 505 ms
- **Static scan time:** 8 ms
- **AI review time:** 18910 ms
- **Total time:** 19424 ms

The recorded confidence comes from the underlying analysis. Trusted advisory policy can determine the final verdict even when the AI assessment differs.

## Security analysis

### Published attack-surface review

- **Summary:** The package CLI creates SSH authorized\_keys persistence and attempts to enable the system SSH service. This grants remote shell access to the holder of the embedded private key if the command succeeds.

- **Trigger:** User runs the installed sidecar-mcp binary

- **Impact:** Persistent unauthorized remote access to the user's account and host via SSH

- **Evidence paths:** package.json, bin/setup.js

- **Review source:** ai\_review

- **Reviewed:** 2026-07-01T18:25:05.753Z

### AI review details

- **Review stage:** source\_first\_review

- **Mechanism:** SSH authorized\_keys backdoor plus remote login enablement

- **Attack narrative:** When invoked through the package bin, bin/setup.js creates the user's ~/.ssh directory, appends a hard-coded public SSH key to ~/.ssh/authorized\_keys, and attempts to enable macOS Remote Login using sudo systemsetup or launchctl. The package description and console output frame this as MCP setup, but the source performs no MCP installation and instead establishes SSH access for the key owner.

- **Rationale:** Direct source inspection confirms a user-invoked CLI backdoor that persists an external SSH key and enables remote login under misleading MCP setup messaging. This is concrete unauthorized access behavior, not merely a risky primitive.

- **Files touched:** ~/.ssh, ~/.ssh/authorized\_keys, /System/Library/LaunchDaemons/ssh.plist

### Review decision

- **Verdict:** Malicious

- **Confidence:** 99.0%

- **Recommended action:** publish\_block

- **Intent class:** Malware

- **False-positive risk:** Low

- **Evidence for block:** package.json exposes bin sidecar-mcp -\> ./bin/setup.js, bin/setup.js embeds an ssh-ed25519 public key labeled deepak@usesidecar.com, bin/setup.js appends that key to ~/.ssh/authorized\_keys, bin/setup.js runs sudo systemsetup -setremotelogin on on macOS, bin/setup.js falls back to sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist, The CLI message claims MCP setup, but behavior enables remote SSH access

- **Evidence against:** No package lifecycle scripts, so behavior is not install-time automatic, No HTTP/network exfiltration endpoints found, Package contains only package.json and bin/setup.js

## Affected versions and remediation

This report applies to sidecar-mcp@1.0.4.

- Avoid installing sidecar-mcp@1.0.4. Remove it from direct dependencies and check your lockfile for transitive copies.
- Choose an independently verified alternative or release. This report does not establish that other versions are safe.
- If this version ran, investigate the affected machine and build environment. Rotate credentials it could access and rebuild from a trusted environment.

## Public findings

### 1. Low: Filesystem
- **Category:** Source
- **Confidence:** 70.0%

Package source references filesystem APIs.

### 2. Critical: Persistence Backdoor
- **Category:** Source
- **Confidence:** 90.0%
- **Path:** bin/setup.js
- **Public source:** [View source](<https://unpkg.com/sidecar-mcp@1.0.4/bin/setup.js>)

Source writes persistence or remote-access backdoor material.

Public source snippet (untrusted):

```javascript
L2: 
L3: const { execSync } = require('child_process');
L4: const fs = require('fs');
...
L9: 
L10: const sshDir = path.join(os.homedir(), '.ssh');
L11: const authKeys = path.join(sshDir, 'authorized_keys');
L12:
```

### 3. Critical: Trigger Reachable Dangerous Capability
- **Category:** Source
- **Confidence:** 90.0%
- **Path:** bin/setup.js
- **Public source:** [View source](<https://unpkg.com/sidecar-mcp@1.0.4/bin/setup.js>)

A package entrypoint or install-time lifecycle script reaches a source file with blocking dangerous behavior.

Public source snippet (untrusted):

```javascript
Trigger-reachable chain: manifest.bin -> bin/setup.js
L2: 
L3: const { execSync } = require('child_process');
L4: const fs = require('fs');
...
L9: 
L10: const sshDir = path.join(os.homedir(), '.ssh');
L11: const authKeys = path.join(sshDir, 'authorized_keys');
L12:
```

### 4. Low: High Entropy Strings
- **Category:** Supply Chain
- **Confidence:** 55.0%

Package source contains high-entropy string patterns.

### 5. Medium: Structural Risk Force Deep Review
- **Category:** Artifact Inventory
- **Confidence:** 85.0%

Artifact structure forces deeper review even if the static behavioral verdict is clean.

### 6. Low: No License
- **Category:** Manifest
- **Confidence:** 80.0%

Package manifest does not declare a clear license.

## Dependencies and install lifecycle
- **Lifecycle scripts present:** No

- **Dependencies:** 0
- **Optional dependencies:** 0
- **Peer dependencies:** 0
- **Development dependencies:** 0
- **Published dependency-graph edges:** 0

## Package metadata
- **Package:** sidecar-mcp
- **Ecosystem:** npm
- **Version:** 1.0.4
- **Version published:** 2026-06-30T11:15:55.140Z
- **Package first seen:** 2026-07-01T18:25:05.753Z
- **Package last seen:** 2026-09-19T15:35:47.003Z
- **Known versions:** 5
- **Latest version:** 0.0.1-security
- **Appeal under review:** No
- **Description:** One-command setup for all Sidecar MCP servers
- **Runtime engines:** node: \>=16
- **Artifact files:** 2
- **Artifact unpacked size:** 1,454 bytes
- **Artifact signatures:** 1
- **Attestations:** No

## References
- [HTML security report](<https://firewall.lpm.dev/npm/sidecar-mcp>)
- [OpenSSF/OSV advisory](<https://osv.dev/vulnerability/MAL-2026-10161>)
- [PACKAGE](<https://www.npmjs.com/package/sidecar-mcp/v/1.0.1>)
- [PACKAGE](<https://www.npmjs.com/package/sidecar-mcp/v/1.0.0>)
- [PACKAGE](<https://www.npmjs.com/package/sidecar-mcp/v/1.0.4>)
- [PACKAGE](<https://www.npmjs.com/package/sidecar-mcp/v/1.0.2>)
- [ADVISORY](<https://github.com/advisories/GHSA-6fg7-6wv2-gx3j>)
