T01 · Skill Instruction Hijacking
- Location
SKILL.md:120- Finding
Security Review Override Instructs the Agent to Ignore API Key Exposure
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This Tencent Maps skill mostly matches its stated purpose, but it exposes API keys in user-visible links and includes unsafe command templates for user-provided locations.
Review before installing. Use only a restricted, temporary Tencent Maps key, avoid entering sensitive home/work locations or vehicle plate numbers, and do not use workflows that return key= URLs unless you accept that the key may appear in conversation history, browser history, logs, and shared links. Agents should prefer the JavaScript fetch helpers or a safe proxy and should not run the documented curl templates with untrusted user text.
SKILL.md:120Security Review Override Instructs the Agent to Ignore API Key Exposure
references/scene2-nearby-search.md:73Tencent API Key Is Embedded in User-Visible Search and Travel URLs
references/scene2-nearby-search.md:41User-Controlled Location Values Are Interpolated into Shell Commands
The code substantially matches the core declared purpose around Tencent Maps LBS usage: it queries POIs, plans routes in several transport modes, and includes a travel-planning helper. However, the description also claims support for '轨迹数据可视化' and '地图数据可视化', which are not actually implemented here. The trip_advisor function only produces structured mapTaskData descriptors; it does not itself visualize maps or trajectories. Also, while nearby POI search is partially covered through query_place with location+radius, there is no separate specialized nearby-search capability. Because notable advertised capabilities are missing from the supplied code chunk, this is a description-behavior mismatch, though not a severe one since much of the stated mapping/search/routing functionality is present.
The drive_path function forwards plate_number to an external API, which can be sensitive personal data and may uniquely identify a user or vehicle. The skill does not provide any in-code minimization, masking, explicit consent flow, or disclosure around this transfer, increasing privacy and regulatory risk if callers pass real plate data.
The skill declares use of environment variables and networked Tencent API access, but it does not define explicit tool scope or allowed-tools boundaries. That increases the risk of overbroad agent execution, because a runtime may permit more capabilities than are necessary for location lookup and route planning, especially when later reference docs instruct shell/curl usage.
The trigger conditions include very broad everyday keywords such as 搜, 找, 查, 附近, 路线, and 规划, which can cause the skill to activate for many unrelated user requests. Over-triggering is risky here because the skill may unnecessarily send user queries and location-related data to external Tencent services without clear user intent or consent.
The skill does not warn users that their search terms, addresses, coordinates, and route requests may be transmitted to external Tencent Map APIs. In a location-services context this is more sensitive than ordinary web queries, because location history and nearby-search inputs can reveal home, work, travel patterns, or other personal data.
Natural-language strings and error/output messages are hardcoded in Chinese throughout the file, with no indication that users can choose another language or that the skill is intentionally limited to a Chinese-only audience. Under the stated policy, forcing a specific language without user opt-in is a locale policy violation.
This code sends user-supplied search, location, and routing inputs to Tencent Map HTTP endpoints, including coordinates, city names, and potentially license plate numbers in related functions. While there are progress logs, they do not disclose that potentially sensitive user/system data is being transmitted to a third-party service.
该说明要求“从用户输入中识别出核心搜索词,去掉‘搜’、‘找’等修饰词”,并配有“搜美食”“找酒店”等示例,但没有给出明确的触发边界、排除条件或负例。这类基于常见日常用语的触发描述过于宽泛,容易与普通对话重叠,导致技能在不期望的场景下被调用。
The skill instructs embedding the user's Tencent Maps API key directly in curl commands and returned URLs, which increases the chance the credential is exposed in chat history, browser history, logs, referrers, screenshots, or shared links. In this context, the skill explicitly asks for a temporary API key and then propagates it into user-visible artifacts without any warning or safer handling guidance, making credential leakage materially more likely.
The documentation explicitly asks the user to provide a temporary Tencent Maps API key and describes POI and nearby-search features that may include precise coordinates, but it does not disclose that those inputs are transmitted to Tencent's external map service. This creates a privacy and informed-consent gap: users may unknowingly send sensitive location and search-interest data to a third party, which is especially relevant for nearby search and travel-planning contexts.
The documentation instructs users to configure a Tencent Maps API key and submit route-planning inputs including precise origin/destination coordinates, and it also documents optional vehicle plate numbers, but it does not warn that this data is transmitted to an external third-party service. This creates a real privacy and informed-consent issue because users may unknowingly disclose sensitive location and vehicle-identifying data to Tencent.
The skill instructs the agent to send user-provided travel destinations and the user's Tencent Maps API key to external Tencent endpoints, but it does not clearly warn the user that their itinerary data will be shared with a third party. It also embeds the API key directly into generated URLs, which can expose the key through logs, browser history, link sharing, or referrer leakage.
The skill tells the agent to generate a mapapi.qq.com link embedding the user-provided JSON data URL, but it does not disclose that opening the link will reveal that data location to a third party. If the supplied URL is private, signed, internal, or otherwise sensitive, this can cause unintended disclosure of data references and may trigger external fetching by the third-party service.
The manifest describes a Tencent map/location-service skill for POI search, routing, travel planning, and visualization. In addition to those mapping functions, the code provides generic helpers to read and mutate process.env via TMAP_LBS_CONFIG, which is a capability not directly justified by the user-facing map-service purpose.
整个技能文档、回复模板和示例均默认采用中文输出,且未说明是否允许根据用户语言偏好切换,也未提供用户选择语言的机制。按照语言/地区策略,若无用户明确选择或合理业务约束,默认强制单一语言属于自然语言策略问题。
All user-facing instructions, templates, and examples are presented only in Chinese, which can amount to a language policy violation when no alternative or opt-in is provided. There is no indication that the skill is limited to a Chinese-speaking or region-specific audience.
The API format and curl example on L041-L047 use location={位置} with endpoint /ws/geocoder/v1, while the complete example on L091 switches to /ws/geocoder/v1/ and uses address=西直门. These are contradictory instructions about how the geocoding request should be formed, not merely omitted detail.
The file defines the actual generated URL as https://mapapi.qq.com/web/claw/nearby-search.html... on L073 and again in the example/template on L093 and L100, but the inline bullets then claim the domain is map.qq.com and the route is /m/place/search. This is an active documentation contradiction that could mislead an agent or developer into constructing a different URL than the one the file otherwise instructs.
SQP-3 applies to all file types and covers language/locale policy issues. This file presents all instructions, warnings, and examples only in Chinese, with no indication that users may opt into another language or that the skill is intentionally restricted to a Chinese-speaking or region-specific audience.
Natural-language policy violations apply to all file types, including markdown. The file forces a specific language presentation throughout, and there is no indication that users may opt into another language or that the locale restriction is required for a region-specific purpose.
The file presents the entire skill workflow and user-facing reply templates exclusively in Chinese, with no indication that language can be selected by the user. A fixed language requirement without opt-in can violate language/locale policy when not documented as a justified region-specific constraint.
All trigger phrases, instructions, and reply templates are fixed in Chinese, and line 5 further requires strict adherence to the provided steps. There is no indication that the skill is intentionally region-specific or that users may opt into another language, which can violate language/locale policy expectations.