T09 · Insecure Skill Coding Practices
- Location
skills/jd-express-tracking/SKILL.md:36- Finding
Undisclosed Retention of Sensitive Waybill Identifiers
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This JD package-tracking skill is mostly purpose-aligned, but it asks for a live JD session token and stores recent waybill numbers without clear privacy controls.
Review this before installing if you are concerned about privacy: the skill may send JD waybill numbers and a JD session token to JD endpoints, and its documentation tells callers to keep a local recent-history cache. It should add clear token-handling rules, remove unnecessary headers, and either disable or tightly control cached waybill history.
skills/jd-express-tracking/SKILL.md:36Undisclosed Retention of Sensitive Waybill Identifiers
skills/jd-express-tracking/references/api-spec.md:27Overbroad Request Headers Expose or Spoof Network and Device Metadata
skills/jd-express-tracking/references/api-spec.md:62Ambiguous Authentication Rules May Expose a Reusable JD Session Token
The manifest description, title, and usage examples are entirely in Chinese and present the skill as operating in that language by default. Under the policy, language constraints should either offer user choice or be clearly justified as region-specific; this file does not state such a justification or opt-in.
The trigger list includes broad phrases such as ‘查快递’, ‘快递查询’, and ‘运单号’, which are common across many logistics contexts and can cause this skill to activate for unrelated courier requests. In this skill, misrouting is more concerning because it may lead the agent to request or process sensitive tracking numbers unnecessarily, and the workflow also references alternate order-query behavior when no waybill is provided, increasing the chance of unintended tool routing.
The document explicitly requires a live JD session token in the js-token header but provides no warning about secure handling, storage, or transmission of that credential. In an agent skill context, documenting a session token as a required input without guardrails increases the chance that implementers or downstream tools will collect, log, persist, or misuse a bearer-like credential that can expose a user's logistics/account context.
The skill requires sending a JD session token and user-supplied waybill queries to external JD endpoints, but it does not explicitly warn that user data and authentication material leave the local environment. This creates a transparency and privacy issue: users or integrators may unknowingly transmit tracking data to a third party and mishandle token usage.
The skill instructs the caller to cache recent waybill codes locally but provides no guidance on retention, access controls, or user privacy. Tracking numbers can be linked to shipment activity and potentially to individuals, so undocumented local storage increases privacy and data-handling risk even if the data is not highly sensitive by itself.
The reference hard-codes accept-language to prioritize zh-CN, which reflects a locale preference. The file does not indicate that this locale is user-selectable or justified as a region-specific requirement, so it may conflict with language/locale choice policy.
The specification states that queried waybill codes are written to local storage and retained as recent history, but gives no notice, retention policy, or control to the user. Waybill numbers are sensitive tracking identifiers that can reveal shipment activity and, when correlated with other data, may expose personal behavior or order relationships.
No suspicious patterns detected.