Back to skill

Security audit

.Gaodemapskill.Bak

Security checks for vulnerabilities and agentic risk

Overview

This skill is a straightforward Gaode/AMap map lookup tool, with some privacy and dependency hygiene notes but no hidden or purpose-mismatched behavior found.

Before installing, use this skill only with location queries you are comfortable sending to Gaode/AMap, protect the AMAP_API_KEY, and consider pinning or locking the requests dependency for reproducible installs.

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
requirements.txt:1
Finding

Unpinned Third-Party Dependency

Content
View full analysis

Vulnerability Details

File Location: requirements.txt:1
Vulnerability Type: Unpinned third-party dependency
Risk Level: Medium

Vulnerable Code

text
requests

The documented installation process in README.md:14-17 installs this dependency directly:

bash
pip install -r requirements.txt

Technical Analysis

The project declares requests without an exact version or package-integrity hash. Consequently, each installation can resolve to a different release from the configured Python package index. The installed dependency may therefore differ from the version originally reviewed or tested.

This weakens build reproducibility and supply-chain integrity. If package-index resolution, a future dependency release, or the user's index configuration is compromised, installation may retrieve unreviewed code. Because Python packages can execute build or installation logic and are imported by amap_tool.py, a malicious resolved package could also execute at runtime.

Attack Path

  1. An attacker compromises an applicable package release, package-index account, mirror, or package-resolution source.
  2. A user follows the documented command pip install -r requirements.txt.
  3. Because no exact version or hash is required, pip resolves and downloads the attacker-controlled or otherwise unreviewed artifact.
  4. Malicious code executes during package installation, import, or subsequent skill execution.
  5. The code runs with the privileges and environment access of the user operating the skill.

Impact Assessment

Successful exploitation could permit arbitrary code execution within the installing or runtime user's security context. Potential exposure includes the AMAP_API_KEY, other environment variables available to the process, accessible user files, and outbound network access. The precise scope is constrained by the operating-system privileges and sandboxing applied to the installat ...[truncated 22 chars]

Remediation
View remediation

Remediation Suggestions

  1. Pin requests to an exact, reviewed version, for example:
    text
    requests==<reviewed-version>
    
  2. Generate and commit a lock file containing cryptographic hashes for the package and all transitive dependencies.
  3. Install dependencies with hash verification:
    bash
    pip install --require-hashes -r requirements.txt
    
  4. Regularly review pinned versions for known vulnerabilities and update them through a controlled testing and approval process.
  5. Use a trusted package index or an internally controlled mirror, and prevent unexpected index overrides in production installation environments.
  6. Perform installation and execution under a least-privileged account or sandbox with restricted filesystem, environment-variable, and network access.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (8)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The README states that the skill performs place search, route planning, and geocoding through the Gaode/AMap API, but it does not explicitly warn that user-supplied addresses, keywords, origins, and destinations will be transmitted to a third-party mapping service. This can lead users or downstream agents to disclose sensitive location information without informed consent, especially because route queries often contain home, work, or other private locations.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
95% confidence
Finding

The skill declares required environment access and implicitly relies on networked API calls, but it does not specify an explicit tool scope such as permissions or allowed-tools. This weakens least-privilege controls and makes the skill's operational capabilities less transparent to the host system and reviewers, increasing the risk of unintended access or misuse if broader tool execution is permitted.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The tool sends search keywords to an external mapping service via HTTP requests, which may disclose user-entered place queries and city context. While the docstrings describe functionality, there is no user-facing print, confirmation, or warning that entered data will be transmitted to a third-party service.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The geocode method sends address and optional city data to the AMap service, which can involve sensitive location information. The code lacks a confirmation prompt, visible warning, or other user-facing notice explaining that addresses are sent off-system.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The route planning flow transmits origin, destination, and optionally city to a third-party mapping endpoint. Even though this is functionally expected, the current file provides no explicit disclosure to users that potentially sensitive travel data is sent externally.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill documentation describes place search and route planning but does not warn users that their search terms, origins, destinations, and possibly city inputs are transmitted to the external Gaode Map API. This creates a privacy transparency issue because users may unknowingly send sensitive location or travel data to a third party.

Content

No source excerpt is available for this finding.

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
97% confidence
Finding

The dependency manifest specifies requests without a version pin, which makes builds non-reproducible and can cause the skill to install an unexpectedly vulnerable or incompatible release over time. While this is a supply-chain hygiene issue rather than an exploitable bug by itself, it increases exposure because dependency resolution is left uncontrolled.

Content

Scanner excerpt · requirements.txt (reported line 1)May include surrounding context.

text
requests

Unverifiable Dependency: requests has 16 known advisory(ies) (CVE-2014-1830 (Exposure of Sensitive Information to an Unauthorized Actor in Requests); CVE-2024-47081 (Requests vulnerable to .netrc credentials leak via malicious URLs); CVE-2024-35195 (Requests `Session` object does not verify requests after making first request wi) +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
95% confidence
Finding

The manifest does not pin requests, and that package has multiple historical advisories; without a version constraint, it is impossible to verify whether the installed release is safe. In a network-facing map integration skill, HTTP client behavior matters, so leaving the version unspecified can expose the skill to known flaws if an affected release is resolved during installation.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.