Back to skill

Security audit

sandbase

Security checks for vulnerabilities and agentic risk

Overview

The skill is coherent and not malicious, but it asks users to run and persist an unpinned npm CLI as an MCP bridge, which should be reviewed before installation.

Review this before installing. The workflow is careful about user confirmation and secrets, but users should prefer a pinned, reviewed SandBase CLI version or another verified installation path before allowing the MCP bridge to be registered and run repeatedly.

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:69
Finding
Unpinned npm Package Is Downloaded and Executed<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 69 and 96 **Vulnerability Type**: Unpinned third-party dependency execution **Risk Level**: Medium ### Vulnerable Code At line 69: ```text npx -y @sandbaseai/cli connect --client <client-id> ``` At line 96: ```text npx -y @sandbaseai/cli mcp-bridge --client <client-id> ``` ### Technical Analysis The Skill directs the Agent to execute `@sandbaseai/cli` through `npx` without specifying an immutable package version. When the package is not already available locally, `npx` may download the latest registry release and immediately execute it. The `-y` option suppresses npm's package-installation confirmation. Because the dependency is not pinned, the code executed during a future Skill invocation may differ from the code available when the Skill was audited. The project contains no lockfile, integrity digest, vendored implementation, or other mechanism that establishes the exact package artifact to execute. The setup and bridge commands may also resolve different releases if invoked at different times. The audit did not establish that the current package is malicious. The vulnerability is the mutable supply-chain trust boundary created by downloading and executing an unpinned package. ### Attack Path 1. An attacker compromises the npm publisher account, package publication pipeline, registry delivery path, or a future package release. 2. The attacker publishes a malicious release under the legitimate `@sandbaseai/cli` package name. 3. A user approves SandBase setup, or the configured MCP bridge is subsequently launched. 4. `npx -y` resolves and downloads the attacker-controlled latest release without presenting an installation confirmation. 5. The malicious package executes with the privileges and environment of the user running the Agent or MCP client. ### Impact Assessment Successful exploitation could permit arbitrary code execution with the invoking user's operating-system privile ...[truncated 615 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Pin the CLI to a reviewed, exact version in both commands: ```text npx -y @sandbaseai/cli@<reviewed-version> connect --client <client-id> ``` ```text npx -y @sandbaseai/cli@<reviewed-version> mcp-bridge --client <client-id> ``` 2. Ensure setup and bridge execution use the same approved version so that later bridge launches cannot silently select a different release. 3. Verify the selected release through npm integrity metadata, a lockfile, or an equivalent cryptographic artifact-verification mechanism. 4. Establish a controlled update process in which new versions are reviewed and tested before the pinned version is changed. 5. Where operationally practical, install the verified artifact through a managed dependency workflow rather than allowing `npx` to resolve mutable registry content during each invocation. 6. Avoid automatic installation acceptance where user confirmation can be retained without disrupting the required workflow. ]]>
Vulnerability Patterns
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (3)

Credential Access

High
Category
Privilege Escalation
Content
Replace `<client-id>` with the confirmed fixed ID. Do not add flags, call an
authorization HTTP endpoint directly, generate credentials, or ask the user to
paste an API key, access token, OAuth code, cleanup token, authorization URL
query parameters, or terminal secrets into chat.

Let the CLI own OAuth, secure credential storage, cleanup, and bridge
Confidence
70% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding
The skill instructs the agent to execute `npx -y @sandbaseai/cli connect --client <client-id>` without pinning an exact package version or integrity hash. Because `npx` resolves the latest published package at execution time, a compromised upstream release, typosquat, or malicious publisher change could cause arbitrary code execution in the local environment during setup.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding
The launcher command `npx -y @sandbaseai/cli mcp-bridge --client <client-id>` is likewise unpinned and would fetch whatever package version is current when the bridge runs. In an MCP integration skill, that is especially risky because the bridge may be launched repeatedly and gains an execution foothold inside the user's tool ecosystem.

Static analysis

No suspicious patterns detected.