Back to skill

Security audit

德胧通用商旅出行规划助手

Security checks for vulnerabilities and agentic risk

Overview

The travel-planning skill is mostly coherent, but it tells users to run unpinned MCP packages with npx and sends sensitive trip details to multiple external services.

Install only if you are comfortable sharing travel details with the listed travel, map, hotel, and search services. Pin and review MCP package versions before use, avoid npx -y latest-style execution in privileged environments, and use a restricted sandbox with minimal environment variables.

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:99
Finding

Unpinned npm Packages Are Downloaded and Executed Without Confirmation

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 99–103; repeated at lines 380–384. Related package invocation instructions also appear at lines 59 and 65.
Vulnerability Type: Supply-chain risk from mutable, unpinned npm dependencies
Risk Level: Medium

Complete vulnerable configuration:

json
{
  "mcpServers": {
    "12306-mcp": {
      "command": "npx",
      "args": ["-y", "12306-mcp"]
    },
    "amap-mcp": {
      "type": "sse",
      "url": "https://mcp.amap.com/sse?key={AMAP_WEB_KEY}"
    }
  }
}

The same unsafe execution pattern is documented for an optional package:

text
npx -y xhs-mcp

Technical Analysis

The configuration invokes npx with the -y option and a package name that has no exact version or integrity constraint. If the package is not already available in a trusted local cache, npx can retrieve it from the configured npm registry and execute it without an interactive confirmation prompt.

Because 12306-mcp and xhs-mcp are not pinned to reviewed versions, the effective code can change after this Skill has been audited. A compromised maintainer account, malicious future release, registry compromise, dependency confusion condition, or compromise of a transitive dependency could therefore turn an otherwise legitimate MCP startup operation into arbitrary local code execution.

This finding establishes an unsafe dependency-execution mechanism; it does not establish that the currently published packages are malicious.

Attack Path

  1. An attacker compromises the relevant npm package, its maintainer account, the package publication process, or a transitive dependency.
  2. The attacker publishes a malicious version that becomes the version resolved by the unpinned package name.
  3. A user or Agent applies the MCP configuration or runs the documented npx -y command.
  4. npx resolves and downloads the mutable package version without as ...[truncated 878 chars]
Remediation
View remediation

Remediation Suggestions

  1. Pin every npm dependency to a reviewed exact version, for example 12306-mcp@X.Y.Z, rather than resolving a mutable latest release.
  2. Use a lockfile with verified registry integrity hashes and retain it as part of the reviewed deployment artifact.
  3. Install dependencies during a controlled build or provisioning phase instead of downloading and executing packages at Skill invocation time.
  4. Use an approved private registry or package allowlist and verify package provenance, publisher identity, signatures, and checksums.
  5. Review direct and transitive dependencies before upgrades, and automate vulnerability and unexpected-maintainer-change monitoring.
  6. Disable npm lifecycle scripts where operationally possible, such as with --ignore-scripts, while confirming that the selected package does not legitimately require them.
  7. Run MCP servers in a restricted sandbox or container with minimal filesystem access, no unnecessary credentials, limited environment variables, a non-privileged user, and outbound-network controls.
  8. Replace -y with an explicit installation and approval workflow so dependency changes cannot be accepted silently.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (5)

Vague Triggers

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The trigger phrases are very broad and include common travel-related words such as travel, trip plan, and generic itinerary requests, making accidental activation likely during ordinary conversation. Over-broad activation can cause the assistant to collect sensitive itinerary data or send it to external services unexpectedly, increasing privacy and prompt-routing risk.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The skill does not clearly warn users that itinerary details, locations, dates, and preferences may be sent to external services such as 12306, AMap, and web search providers, and then embedded into generated links or HTML reports. This is a meaningful privacy issue because business travel plans often contain sensitive operational, personal, or location information.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The markdown trigger section remains ambiguous because it describes broad activation conditions without clear boundaries or exclusions. In context, this skill can query third-party services and generate links/reports, so ambiguous routing increases the chance of unintentional disclosure of user travel details to external providers.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding

The skill references an external MCP server via npx -y xhs-mcp without pinning a specific package version or integrity source. This creates a supply-chain risk: a future malicious or compromised package release could be fetched and executed at runtime, which is especially dangerous because MCP servers may access user queries, travel details, and tool integrations.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The template specifies <html lang="zh-CN">, which forces a Chinese language/locale setting in generated output. The file does not state that this is optional, user-selected, or justified as a China-only skill, so it creates a natural-language locale constraint without opt-in.

Content

No source excerpt is available for this finding.