Back to skill

Security audit

Groundapi Context Aware

Security checks for vulnerabilities and agentic risk

Overview

The skill appears purpose-built for daily assistant tasks, but it should be reviewed because casual greetings can automatically trigger IP-based location lookup and multiple GroundAPI requests without explicit consent.

Install only if you are comfortable with GroundAPI receiving requests for these daily assistant features, including approximate IP-based city lookup. Before use, consider narrowing triggers and requiring confirmation before location, weather, traffic, trends, or news tools run from a greeting or an unspecified city request.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • 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)

T05 · Unauthorized Access and Privilege Escalation

Warning
Location
SKILL.md:208
Finding
Automatic IP Geolocation Triggered by Generic Greetings<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 208–218 **Vulnerability Type**: Automatic third-party location processing without explicit contextual consent **Risk Level**: Medium ### Vulnerable Code Snippet The following is an English translation of the complete relevant source section: ```markdown ## Scenario 8: Daily Greeting (Combined Workflow) When the user says “Good morning,” “How is today?” or similar daily greetings, automatically combine multiple tools: 1. `life_ip()` → locate the city 2. `life_weather(city="...", forecast=false)` → current weather 3. `life_calendar()` → today's date, lunar date, and trading-day status 4. `life_traffic(city="...")` → traffic restrictions, only for cities with restrictions 5. `info_trending()` → current top five trending topics 6. `info_bulletin()` → daily news briefing Return a natural greeting containing weather, calendar, traffic-restriction reminders, and a summary of trending news in a relaxed and friendly tone. ``` ### Technical Analysis The Skill directs the agent to invoke `life_ip()` automatically when a user sends a generic greeting. A greeting does not itself constitute an explicit request to determine or process the user's location. The resulting location is then reused for weather and traffic-restriction queries through the external GroundAPI MCP service. This behavior violates the principle of least privilege because the workflow invokes location, weather, traffic, trending-topic, and news tools even when the user's request can be answered without any of them. In particular, IP-derived geolocation is privacy-sensitive processing and should require a clear contextual request or affirmative consent. The issue does not grant operating-system privileges, execute local code, or provide access to an exact physical location. The Skill itself acknowledges that IP location is generally limited to city-level precision. Nevertheless, automatically initiating an external geolocati ...[truncated 1465 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Do not invoke `life_ip()` solely because the user sends a generic greeting. 2. Ask the user to provide a city or explicitly consent to approximate IP-based location before performing geolocation. 3. Separate the greeting workflow from optional weather, traffic, trending-topic, and news workflows. 4. Invoke only the tools required by the user's explicit request. 5. Explain that GroundAPI is a third-party service before transmitting or deriving location-related data. 6. Document the categories of data sent to GroundAPI, their purpose, retention period, and applicable privacy policy. 7. Provide a configuration option that disables automatic geolocation globally. 8. Avoid retaining or reusing the derived city beyond the current request unless the user explicitly opts in. 9. Implement a consent-oriented flow such as: - Ask whether the user wants local weather or traffic information. - Request a city directly. - Offer IP-based approximation only as an optional fallback. - Invoke `life_ip()` only after affirmative confirmation. ]]>
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)

Natural-Language Policy Violations

Medium
Confidence
82% confidence
Finding
The instructions and examples are centered on Chinese-language interaction and Chinese daily-life services, but the skill does not clearly state that it is intended specifically for Chinese-speaking or China-based users. This can create a locale policy issue because the skill appears to assume a specific language and regional context by default.

Vague Triggers

Medium
Confidence
95% confidence
Finding
The activation rules include broad, everyday phrases such as common weather and daily-life questions, which increases the chance the skill will trigger during ordinary conversation without the user intending to invoke this specific skill. Because the skill can then call external tools and infer location via IP, accidental activation can lead to unanticipated data access and third-party disclosure.

Vague Triggers

Medium
Confidence
97% confidence
Finding
Using generic greetings like '早上好' and '今天怎么样' as automatic triggers is especially risky because such phrases are ubiquitous and often not requests for tool use. In this skill, greeting mode chains multiple tools including IP lookup, weather, traffic, trending, and bulletin retrieval, so a casual greeting could silently expand into broad data collection and external requests.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The skill instructs automatic use of IP geolocation to infer the user's city when no city is specified, but does not present a clear privacy notice or obtain user consent first. Even if city-level only, this is location-derived personal data and is being sent to an external service, creating a privacy and transparency risk.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The daily greeting workflow automatically combines IP-based location, weather, calendar, traffic, trending, and news retrieval without clearly warning the user that multiple external data sources will be queried. This bundling amplifies the privacy impact of a single casual interaction because it can reveal location context and trigger several third-party requests at once.

Static analysis

No suspicious patterns detected.