Back to skill

Security audit

EPC Query For Auto Parts - 汽车配件EPC查询

Security checks for vulnerabilities and agentic risk

Overview

This skill is a straightforward EPC auto-parts lookup wrapper for JisuAPI, with expected external API use and no hidden persistence or destructive behavior.

Install only if you are comfortable sending EPC queries, including full VINs when used, to JisuAPI. Protect and rotate the JISU_API_KEY like a paid API credential, and avoid sharing logs or command histories that may contain VINs or API request URLs.

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 (1)

T09 · Insecure Skill Coding Practices

Warning
Location
epc.py:17
Finding

API Credential and VIN Data Exposed in URL Query Parameters

Content
View full analysis

Vulnerability Details

File Location: epc.py, lines 17–22
Vulnerability Type: API credentials and potentially sensitive VIN data transmitted in URL query parameters
Risk Level: Medium

python
all_params = {"appkey": appkey}
all_params.update({k: v for k, v in params.items() if v not in (None, "")})
url = f"{BASE_URL}/{path}"

try:
    resp = requests.get(url, params=all_params, timeout=15)

Technical Analysis

The application adds appkey to all_params and passes that dictionary to the params argument of requests.get. The Requests library serializes these values into the URL query string. Depending on the selected operation, the same URL can also contain a user-supplied VIN.

HTTPS encrypts the complete request while it is in transit, but it does not prevent URLs from being recorded at endpoints or within trusted infrastructure. Query strings may be retained by API servers, reverse proxies, gateways, monitoring systems, debugging tools, or application logs. This can disclose both the reusable API credential and queried VIN data to parties with access to those records.

The API destination is declared and appropriate to the Skill's stated purpose; therefore, this is insecure credential transport rather than covert data exfiltration.

Attack Path

  1. A user configures a valid JISU_API_KEY and invokes an EPC command.
  2. The Skill creates a GET request containing the API key and request data in its query string.
  3. An API server, proxy, gateway, monitoring service, or diagnostic component records the complete request URL.
  4. An attacker or unauthorized operator obtains access to the relevant logs or telemetry.
  5. The attacker extracts the API key and reuses it to issue requests against the JisuAPI service.
  6. Where VIN queries were logged, the attacker may also collect or correlate vehicle-identifying information.

Exploitation depends on access to infrastructure that records query s ...[truncated 716 chars]

Remediation
View remediation

Remediation Suggestions

  1. If JisuAPI supports it, transmit the credential in an authorization header rather than in the URL:

    python
    headers = {"Authorization": f"Bearer {appkey}"}
    resp = requests.get(url, params=params, headers=headers, timeout=15)
    

    Use the exact authentication scheme documented by the provider.

  2. If the service requires appkey as a query parameter, configure HTTP clients, reverse proxies, gateways, observability platforms, and API infrastructure to redact the appkey parameter before logging or exporting telemetry.

  3. Avoid recording complete VIN-bearing URLs. Redact or tokenize the vin parameter in logs and retain it only where operationally necessary.

  4. Restrict the API key by source IP, endpoint, permissions, and quota where the provider supports these controls.

  5. Rotate the existing key if URLs may already have been logged, and establish periodic rotation and revocation procedures.

  6. Apply least-privilege access controls and short retention periods to server, proxy, monitoring, and diagnostic logs.

  7. Ensure error handling and debugging output never print the prepared request URL or request parameters containing the key or VIN.

Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (8)

Tp2

High
Category
MCP Tool Poisoning
Confidence
85% confidence
Finding

Mixing characters from multiple Unicode scripts in a single identifier is a common technique to create visually ambiguous tool names.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
88% confidence
Finding

The skill declares it needs an environment variable and implicitly uses a third-party API, but it does not declare an explicit tool scope such as allowed tools or permissions. That weakens least-privilege controls and can lead to unintended network access or broader execution capability than reviewers or users expect.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The trigger description uses broad language like 'or similar EPC parts questions,' which can cause the skill to activate for general automotive conversations outside its intended scope. Over-broad routing increases the chance that vehicle data is sent to the external EPC service without clear necessity or user intent.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill instructs users to submit VINs and other vehicle identifiers to a third-party API but does not disclose that this information will leave the system. VINs can be sensitive in some contexts, so the lack of notice and consent creates a privacy and data-governance risk.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
87% confidence
Finding

The skill is explicitly designed to call an external EPC service, so network transmission is expected; however, that transmission includes potentially sensitive query data such as VINs and vehicle details. The danger comes from data leaving the local trust boundary and being processed by a third party without any in-skill privacy notice, data minimization, or trust validation beyond basic HTTPS usage.

Content

Scanner excerpt · epc.py (reported line 14)May include surrounding context.

python
import requests


BASE_URL = "https://api.jisuapi.com/epc"


def _call_epc_api(path: str, appkey: str, params: dict = None):

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill sends user-supplied VIN data to a third-party API endpoint, and a VIN can be sensitive because it uniquely identifies a vehicle and may be linkable to ownership, service, or location-related records. In this skill’s context, external transmission is functionally necessary, but the absence of an explicit disclosure/consent mechanism creates a real privacy risk rather than a code-execution flaw.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
80% confidence
Finding

文件标题、描述、操作说明和示例均固定为中文,没有说明该技能仅面向中文环境,也未给出用户可选择其他语言的方式。对于通用技能,这种默认强制单一语言的自然语言约束可能违反语言/locale 选择政策。

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

The module docstring mixes English with Chinese-language operational description text (基于极速数据汽车配件 EPC 查询 API) without indicating that the skill is intentionally locale-specific or offering a language option. Under the stated policy, forcing or assuming a specific language without opt-in can be a natural-language policy issue.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.