Back to skill

Security audit

游轮船票查询

Security checks for vulnerabilities and agentic risk

Overview

This skill is a disclosed travel lookup tool that calls fixed ticketing and map proxy services, with some marketing and source-clarity caveats but no evidence of malicious behavior.

Install only if you are comfortable sending cruise searches, origin/destination locations, and hotel preference text to the skill's cloud proxy services and downstream travel/map providers. Treat the multi-platform comparison language cautiously because the inspected code primarily shows Tuniu-oriented travel data and Gaode transport data rather than independent cross-platform aggregation.

Vulnerability Patterns
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Taint TrackingDirect Taint Flow, Variable-Mediated Taint Flow, Credential Exfiltration Chain
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (8)

Tainted flow: 'req' from os.environ.get (line 31, credential/environment) → urllib.request.urlopen (network output)

Critical
Category
Data Flow
Confidence
90% confidence
Finding

Credentials or environment variables flow to a network sink. This is a high-confidence indicator of credential exfiltration.

Content

Scanner excerpt · scripts/cruise_ticket.py (reported line 38)May include surrounding context.

python
)
    _timeout = timeout or TIMEOUT
    try:
        with urllib.request.urlopen(req, timeout=_timeout) as r:
            return json.loads(r.read().decode("utf-8"))
    except urllib.error.HTTPError as e:
        err = ""

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The skill advertises multi-platform direct connectivity and price-comparison behavior, but the analyzed behavior appears to rely on a single upstream source and lacks true cross-platform comparison logic. This is dangerous because users may make financial or travel decisions based on misleading claims about coverage, independence of results, and savings, which undermines trust and can conceal concentration risk in one provider.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
79% confidence
Finding

The skill declares external-data functionality but does not define any explicit tool scope, permissions, or allowed-tools boundaries, while analysis indicates network and environment capabilities. Missing scope declarations increase the risk of overbroad access, unclear trust boundaries, and accidental data exposure if the runtime grants more capability than intended.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The manifest fields, examples, and user-facing instructions are all Chinese-only, which effectively forces a specific language for interaction. The file does not indicate that the skill is region-specific or provide any opt-in or alternative language handling.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

Natural-language strings throughout the file, including prompts, errors, and usage examples, are exclusively in Chinese, which effectively forces a specific language for user interaction. There is no opt-in, fallback, or documentation indicating that the skill is intentionally limited to Chinese-speaking users or a China-specific deployment context.

Content

No source excerpt is available for this finding.

Unbounded Resource Access

Medium
Category
Excessive Agency
Confidence
75% confidence
Finding

Skill allows unbounded resource consumption (API calls, storage, compute). Without rate limits or quotas, a compromised or misbehaving agent can cause denial-of-service or cost overruns.

Content

Scanner excerpt · scripts/cruise_ticket.py (reported line 29)May include surrounding context.

python
# ============ 代理调用 ============
def _call_proxy(url, rtype, params, timeout=None):
    body = json.dumps({"type": rtype, "params": params}, ensure_ascii=False, separators=(",", ":")).encode("utf-8")
    req = urllib.request.Request(
        url, data=body,

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The skill sends user-supplied travel queries, locations, and accommodation requests to third-party proxy services, but this file provides no explicit disclosure, consent, or minimization of shared data. Because these inputs can reveal itinerary, lodging plans, and location context, users may unknowingly expose sensitive travel information to external operators.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The docstring says the tool uses natural-language lodging needs to perform intelligent hotel matching, implying a hotel-specific recommendation flow. But the implementation invokes _call_tuniu("tuniu_ticket_query", ...) with a free-form query, which contradicts the stated intent of a dedicated hotel recommender and instead reuses a ticket-query API path.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.