Back to skill

Security audit

义乌.skill

Security checks for vulnerabilities and agentic risk

Overview

The skill is mostly a coherent Yiwu trade assistant, but it needs Review because it under-discloses third-party AI processing and broad persistent customer profiling.

Review before installing in any real customer or sales environment. Confirm which external services receive data, disable or tightly approve long-term memory and profiling unless users have consented, gate WhatsApp sending and bulk outreach behind human approval, and verify payment, tax, customs, and FX guidance with qualified professionals and current official sources.

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

T09 · Insecure Skill Coding Practices

Warning
Location
technical/deepseek-integration.md:68
Finding

Undeclared External Transmission of Customer and Commercial Data

Content
View full analysis
str: """Synchronous API call""" import httpx payload = { "model": self.config.model, "messages": messages, "max_tokens": kwargs.get("max_tokens", self.config.max_tokens), "temperature": kwargs.get("temperature", self.config.temperature), **kwargs } async with httpx.AsyncClient(timeout=self.config.timeout) as client: response = await self._request_with_retry( client, "POST", f"{self.config.base_url}/chat/completions", json=payload ) ``` The streaming implementation sends the same message structure: ```python payload = { "model": self.config.model, "messages": messages, "max_tokens": kwargs.get("max_tokens", self.config.max_tokens), "temperature": kwargs.get("temperature", self.config.temperature), "stream": True, **kwargs } async with httpx.AsyncClient(timeout=self.config.timeout) as client: async with client.stream( "POST", f"{self.config.base_url}/chat/completions", json=payload ) as response: ``` The quotation prompt places customer and transaction information into those messages: ```python QUOTE_GENERATION_USER_TEMPLATE = """ ## Customer Information Customer Name: {customer_name} Country/Region: {country} Procur ...[truncated 3630 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
technical/memory-system.md:355
Finding

Persistent Plaintext Storage of Conversations and Behavioral Profiles

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (141)

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.

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · agents/sales-agent/skills/whatsapp-outreach/SKILL.md (reported line 62)May include surrounding context.

Step 3: BSP API调用

text
1. 认证授权
   - 获取Access Token
   - 验证账号状态

2. 构建请求

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · agents/sales-agent/skills/whatsapp-outreach/SKILL.md (reported line 174)May include surrounding context.

Step 3: BSP API调用

text
1. 认证授权
   - 获取Access Token
   - 验证账号状态

2. 构建请求

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The manifest context says this skill should focus on Yiwu trade topics such as small-commodity export, 1039 market procurement, multimodal logistics, cross-border payment, tax, and trade operations. However, this file declares a different skill named "intent-classification" and documents a broad conversation-routing classifier with generic intents like complaints, returns, and chit-chat, which is a materially different behavior and purpose.

Content

No source excerpt is available for this finding.

Vague Triggers

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The trigger conditions are so broad that the skill can activate on almost every conversation turn, including routine messages and ambiguous exchanges. In an agentic system, overly broad routing increases the chance of unintended interception, misclassification, privacy over-collection, or disruption of downstream skills by making this classifier a de facto gatekeeper for all user input.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The customer profiling feature aggregates cross-channel personal and behavioral data such as avatars, nicknames, message content, purchase history, and social activity into a single profile. This is sensitive profiling activity that can violate privacy expectations and regulatory requirements if users are not clearly informed and given appropriate controls.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The intent-recognition module explicitly tracks website visits, email replies, social interactions, and WhatsApp conversations to score customers, which is surveillance-style behavioral monitoring. If deployed without clear notice and consent, it can create opaque automated decision-making about individuals and expose the organization to legal, ethical, and reputational harm.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

Email open/click tracking and message analysis are specifically called out in the technical design, but no corresponding warning or consent mechanism is described. Communications tracking is particularly sensitive because it observes recipient behavior at a granular level and can be hidden from users, making misuse difficult to detect.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

This markdown skill forces a specific language/locale through all headings, instructions, and templates, but it does not provide user opt-in, alternate language guidance, or a justification that the skill is intended only for a Chinese-language audience. Under the policy, a language constraint is a natural-language violation unless it is optional or clearly documented as region-specific and justified.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

This section gives concrete tax and customs compliance guidance, including 1039/0110 treatment, thresholds, rates, and filing steps, but it does not clearly warn that such rules change frequently and vary by entity, product, jurisdiction, and current policy interpretation. Users may rely on outdated or overgeneralized guidance to make real filing or structuring decisions, creating compliance, penalty, and financial risk.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The document title and all operational guidance are written entirely in Chinese and framed specifically as a '义乌' module, with no indication that users may choose another language or locale. The policy requires flagging skills that impose a language or locale without opt-in unless the regional constraint is clearly documented and justified as region-specific.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The trigger list includes broad, high-frequency phrases such as “跨境支付”, “外贸财务”, “汇率管理”, and “数据分析” that can match ordinary user conversations unrelated to this specific skill. Overbroad activation can cause unintended routing into a powerful domain-specific workflow, increasing the chance of irrelevant guidance, privacy overcollection, or misuse in contexts the user did not explicitly request.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

This file presents the skill description, category, triggers, and invocation instructions entirely in Chinese. Under the policy rule for language/locale constraints, forcing a single language without offering user choice or documenting a justified regional limitation is a natural-language policy violation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

This markdown file is natural-language content, and the title and body indicate the skill documentation/report is presented in a fixed locale. The file does not state that Chinese is optional or that users can choose another language, which can violate a language/locale policy requiring user choice.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The upgrade note adds payment, tax, and analytics capabilities that can materially influence cross-border payment selection, foreign-exchange timing, tax treatment, and business decisions, but it does not include any warning that outputs are informational only and require qualified human review. In a trade/finance skill, omission of such guardrails can cause users to rely on AI-generated guidance for regulated or high-stakes financial actions, increasing the risk of compliance violations, monetary loss, or operational mistakes.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill explicitly states it stores current-session search history and user preference settings, but it provides no consent flow, notice, retention limit, access control, or data minimization rule. In a trade/procurement context, these data points can reveal buyer intent, sourcing strategy, and commercial relationships, creating privacy and business confidentiality risk if retained or exposed.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The long-term memory section defines persistent datasets such as popular searches, supplier blacklists, and price benchmark databases without explaining retention, provenance, review process, or privacy safeguards. In this skill's commercial sourcing context, persistent supplier- and user-related records can lead to unauthorized profiling, reputational harm, unfair exclusion, or leakage of sensitive market intelligence.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

L003 将技能描述为“当用户需要了解价格区间、分析价格趋势、获取议价建议或进行成本核算时触发”,这是面向广泛用户意图的笼统表述,没有说明适用商品范围、上下文限制或不触发情形。对于 markdown 技能说明,这类宽泛触发表达容易与日常咨询重叠,造成非预期调用。

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

L003 的 description 仅以中文表述,全文技能说明与示例也全部为中文,未说明支持多语言或根据用户语言自动切换。按规则,强制特定语言而没有用户选择或明确合理说明,属于自然语言/locale 策略问题。

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The auto-trigger list uses broad conversational phrases such as asking whether a price can be cheaper or wanting to bargain, without exclusion rules or confirmation steps. In an agent environment, this can cause unintended skill invocation and downstream access to pricing, procurement history, or negotiation tooling in contexts where the user did not explicitly request price analysis.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The manifest description says the skill triggers whenever a user needs to search products, find similar products, do fuzzy queries, or get recommendations, but it does not define boundaries, explicit trigger phrases, or exclusion conditions. This broad wording could overlap with routine shopping conversation and cause unintended activation.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The listed auto-trigger scenarios include generic actions like entering product names or descriptive keywords and even cold-start recommendation for new users, but they do not specify decision rules for when this skill activates versus other shopping-related skills. The absence of exclusions or a precise trigger scope increases the risk of accidental invocation.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill explicitly uses the user's browsing and purchase history for collaborative filtering but provides no notice, consent, access-control description, or data-minimization guidance. In a commerce context, behavioral history can be sensitive profiling data; unauthorized or opaque use increases privacy, compliance, and trust risks, especially if history is reused across sessions or combined with similar-user profiles.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The cross-language example states that English input is translated and searched only against a Chinese product catalog, implying a fixed locale behavior. The document does not indicate user opt-in or offer a choice of language or market context, which can violate language/locale policy expectations.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill metadata description is broad enough that routing logic could invoke this skill for loosely related supplier queries without clear user intent or consent. In a procurement workflow, unintended activation can expose internal supplier ratings, compliance data, or recommendations in contexts where the user only asked for basic information, creating authorization and decision-integrity risks.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.