Back to skill

Security audit

LocalsBnb MCP

Security checks for vulnerabilities and agentic risk

Overview

This skill is clearly meant for LocalsBnb operations, but it tells users to run an unpinned npm MCP server with sensitive API credentials, so users should review the supply-chain risk before installing.

Install only if you trust the npm package publisher and deployment path. Prefer pinning an exact reviewed version, using a controlled install instead of ad-hoc `npx --yes`, granting read-only least-privilege credentials, and rotating APP_SECRET if you suspect package or environment exposure.

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

Error
Location
SKILL.md:44
Finding

Unpinned Third-Party npm Package Is Downloaded and Executed with Sensitive Credentials

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 44–50
Vulnerability Type: Unpinned dependency execution with access to sensitive credentials
Risk Level: High

Vulnerable Code

json
"LocalsBnb MCP": {
  "command": "npx",
  "args": ["--yes", "localsbnb-mcp-server"],
  "env": {
    "APP_SECRET": "<your APP_SECRET; do not commit it to Git>",
    "APP_ID": "<your APP_ID>"
  }
}

The associated package declaration is also not pinned to a specific version:

yaml
install:
  - kind: node
    package: localsbnb-mcp-server
    bins:
      - localsbnb-mcp

Technical Analysis

The documented configuration invokes npx --yes localsbnb-mcp-server without an exact version or verified integrity digest. Depending on the local npm cache and resolution behavior, npx can retrieve the currently resolved package release from the configured npm registry and execute its code automatically.

The process is explicitly supplied with APP_ID and APP_SECRET. The package is expected to use these credentials to access room availability, pricing, guest orders, and operational data. Consequently, any code executed from the package has direct access to the credentials and to the permissions of the user running the MCP client.

The audited project contains only SKILL.md; it does not include the MCP server source, a lockfile, an integrity hash, or another locally reviewable artifact. Therefore, the document's assertion that the package only contacts the official LocalsBnb API cannot be independently verified from this project. This does not prove that the current npm package is malicious, but the unpinned automatic execution creates a material supply-chain exposure.

Attack Path

  1. An attacker compromises the npm publisher account, package distribution process, registry resolution path, or a future package release.
  2. The attacker publishes altered code under `localsbnb-mcp ...[truncated 1358 chars]
Remediation
View remediation

Remediation Suggestions

  1. Pin the dependency to an exact, reviewed version, for example localsbnb-mcp-server@1.0.1, rather than resolving the latest available release.
  2. Use a lockfile and verify the package archive with a trusted integrity digest before execution.
  3. Avoid automatic npx --yes retrieval in production. Install the reviewed artifact through a controlled deployment process and execute the locally installed binary.
  4. Include or link to immutable, reviewable source corresponding to the pinned package release. Use signed releases and provenance verification where available.
  5. Run the MCP server in a sandbox or container with a read-only filesystem, minimal file access, no unnecessary host mounts, and restricted operating-system privileges.
  6. Enforce outbound network allowlisting so the process can communicate only with the required official API hosts and trusted package infrastructure during a separate installation phase.
  7. Grant APP_ID and APP_SECRET only the minimum read permissions required for the intended tools. Use separate credentials per deployment and rotate them after suspected package compromise.
  8. Prevent credentials from appearing in logs, shell history, chat transcripts, crash reports, or committed configuration files.
  9. Add dependency monitoring and require security review before adopting future package versions.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (4)

Tp2

High
Category
MCP Tool Poisoning
Confidence
85% confidence
Finding

Mixing characters from multiple Unicode scripts in a single identifier is a common technique to create visually ambiguous tool names.

Content

No source excerpt is available for this finding.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- **本 Skill**:仅文档与使用约定,**不包含**服务器源码;更新 MCP 行为以发 npm 新版本为准,Skill 内说明可随版本更新 `SKILL.md` 后再次执行 `clawhub publish`。

Rp1

Medium
Category
MCP Rug Pull
Confidence
96% confidence
Finding

The skill instructs clients to launch an MCP server via npx using an unpinned package name, which allows whatever version is current on npm to be fetched and executed at runtime. If the package is later compromised, typo-squatted, or a malicious update is published, users may execute attacker-controlled code with access to APP_SECRET and other local environment data.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
87% confidence
Finding

The document states that natural-week calculations must use the Shanghai time zone, which is a locale-specific constraint. Because the skill does not offer the user a choice of locale or clearly justify this as a region-specific compliance requirement, it can violate language/locale policy expectations.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.