Back to skill

Security audit

Gaode Map LBS - 高德官方地图综合服务 Skill

Security checks for vulnerabilities and agentic risk

Overview

This map skill is mostly purpose-aligned, but it combines external location/API-key handling with broad activation, persistent key storage, arbitrary heatmap data URLs, and an insecure local socket integration that users should review before installing.

Install only if you are comfortable sending location searches, route coordinates, and supplied dataset URLs to Amap services. Prefer using AMAP_WEBSERVICE_KEY as an environment variable instead of saving a key to config.json, avoid heatmap URLs that contain private hosts or tokens, and be cautious with the Python Electron socket helper on shared machines.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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 (2)

T09 · Insecure Skill Coding Practices

Warning
Location
gaode_skill.py:19
Finding

Unauthenticated Local IPC Through a Predictable Unix Socket Path

Content
View full analysis
dict: """ Connect to the Electron application's Unix Domain Socket, send a command, and wait for the result. """ if not os.path.exists(SOCKET_PATH): raise FileNotFoundError( f"Socket file does not exist: {SOCKET_PATH}\n" "Start the Amap Electron application first." ) client_socket = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) client_socket.settimeout(SOCKET_TIMEOUT_SECONDS) try: client_socket.connect(SOCKET_PATH) message = json.dumps(command_payload, ensure_ascii=False) + "\n" client_socket.sendall(message.encode("utf-8")) ``` ### Technical Analysis The client communicates with a local Electron service through the fixed path `/tmp/jsapi-electron.sock`. The `/tmp` directory is shared among local users, while the client only checks whether an object exists at the expected path. The code does not verify: - That the path refers to a Unix socket. - That the socket is owned by the current user or the expected application user. - That the socket has appropriately restrictive permissions. - The credentials of the process accepting the connection. - The authenticity or integrity of messages exchanged with the service. Consequently, a local attacker may create a malicious socket at the predictable path before the legitimate Electron service starts. The Skill would connect to the attacker's listener and transmit command payloads containing search terms, named locations, coordinates, and route endpoints. The attacker can also return syntactically valid but malicious JSON. Although the re ...[truncated 1735 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Note
Location
SKILL.md:239
Finding

Heatmap Visualization Links Use Unencrypted HTTP

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
Findings (17)

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

The skill documentation says it stores API keys in a local config.json and describes persistent key management, but the top-level description does not clearly disclose this sensitive-data handling behavior. Undisclosed persistence of secrets can surprise users and cause keys to be retained on disk in environments where operators expected transient env-only usage.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
91% confidence
Finding

The skill documentation says it stores API keys in a local config.json and describes persistent key management, but the top-level description does not clearly disclose this sensitive-data handling behavior. Undisclosed persistence of secrets can surprise users and cause keys to be retained on disk in environments where operators expected transient env-only usage.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
89% confidence
Finding

The skill explicitly requires environment access and instructs network calls, but it does not declare a restrictive tool scope such as allowed-tools or permissions. This increases the chance that an agent/runtime will grant broader execution or network capabilities than intended, weakening least-privilege boundaries for a skill that also handles API keys and external requests.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The activation condition is broad enough that many generic requests about places or planning could invoke this skill automatically. In this skill, over-activation is more concerning because it also triggers telemetry requests and may request or use a sensitive API key, amplifying privacy and consent risks.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

Very broad trigger keywords like '搜', '找', '查', '附近', and '规划' can cause the skill to activate for many ordinary conversations outside a clear mapping context. Over-broad activation can lead to unintended network requests, telemetry beacons, or handling of API keys when the user did not intend to use this external service.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The heatmap feature accepts an arbitrary user-supplied external data URL and embeds it into a generated amap.com link. This can be abused to make the agent endorse or facilitate loading attacker-controlled content, which may expose users to tracking, malicious payload delivery in downstream web contexts, or access to sensitive internal URLs if non-public addresses are accepted.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

This code file contains user-facing natural-language instructions and outputs that assume Chinese as the required language. Under the policy, forcing a specific language without offering a choice or documenting a justified locale constraint is a violation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

This JavaScript file uses Chinese exclusively in comments, prompts, warnings, and status output, including the error and instructional text shown to users. Because there is no opt-in, fallback, or documentation that the skill is intentionally China/Chinese-only, it creates a language/locale policy issue under the natural-language policy rule.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The documentation for travelPlanner states the return value includes pois、mapTaskData、mapLink and htmlLink, and the function also builds mapTaskData internally. However, the actual return statement at L366-L368 returns only { pois: poiResults }, so the documented intent directly contradicts observed behavior.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The file contains natural-language comments and console output exclusively in Chinese, including usage instructions and error guidance. This effectively forces a specific language for users without any opt-in or indication that the skill is intentionally limited to a Chinese-speaking or region-specific audience.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

This code sends user-supplied origin, destination, waypoints, and city data to external route APIs via walkingRoute, drivingRoute, ridingRoute, and transitRoute. Although the script shows usage examples and error messages, it does not warn users that their location data will be transmitted to a remote service.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

This code file contains natural-language comments and CLI output exclusively in Chinese, including the usage instructions and error/help text. Under the policy, forcing a specific language without user opt-in is a natural-language policy violation unless the locale restriction is explicitly justified, which is not present here.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The instructions, examples, and reply templates are all Chinese-language, and the skill does not state that language output should follow user preference or provide opt-in for another locale. Under the policy, forcing a specific language without user choice can be a natural-language policy issue unless clearly justified as region-specific.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
93% confidence
Finding

The manifest description is written entirely in Chinese, which can constitute a language/locale policy issue when the skill does not offer a language choice or document that it is intended only for a Chinese-speaking or region-specific audience. This is a natural-language policy concern applicable to all file types.

Content

No source excerpt is available for this finding.

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
93% confidence
Finding

The dependency uses a caret range (^1.13.6), which permits future compatible releases to be installed implicitly. This weakens supply-chain control and can unexpectedly introduce vulnerable or malicious upstream changes, especially in a network-facing skill that relies on HTTP requests through axios.

Content

Scanner excerpt · package.json (reported line 18)May include surrounding context.

json
"author": "",
  "license": "MIT",
  "dependencies": {
    "axios": "^1.13.6"
  }
}

Unverifiable Dependency: axios has 16 known advisory(ies) (CVE-2026-44494 (axios Vulnerable to Full Man-in-the-Middle via Prototype Pollution Gadget in `co); CVE-2026-44495 (axios Vulnerable to Credential Theft and Response Hijacking via Prototype Pollut); CVE-2025-62718 (Axios has a NO_PROXY Hostname Normalization Bypass that Leads to SSRF) +13 more), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
88% confidence
Finding

The manifest references axios without exact version pinning while public advisories exist for multiple axios versions, including SSRF- and MITM-related issues. Because the resolved installed version is not fixed here, it is not possible to verify that deployments avoid affected releases, creating a real supply-chain and network-security risk for a map service skill that likely processes external URLs and API traffic.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

Comments and console guidance such as the usage instructions, parameter descriptions, and error/help text are all written in Chinese. This creates a natural-language locale constraint without offering an alternative language or documenting that the skill is intentionally region- or language-specific.

Content

No source excerpt is available for this finding.

Static analysis

Detected: suspicious.env_credential_access

Environment variable access combined with network send.

Critical
Code
suspicious.env_credential_access
Location
index.js:61