Back to skill

Security audit

A2A Market

Security checks for vulnerabilities and agentic risk

Overview

This appears to be a real A2A Market trading skill, but it needs Review because it can create or change commerce records and its activation, webhook, and optional MCP install boundaries are not tight enough.

Install only if you intentionally want an agent to operate on A2A Market for buying, selling, and supply workflows. Use a low-balance or restricted API key, require explicit confirmation before any posting, listing, subscription, quote, deletion, payment, or webhook change, and prefer the REST-only setup. Avoid the optional npx MCP setup unless you pin and review the exact package version and are comfortable giving that local process access to the API key.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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)

T08 · Insecure Dependencies

Warning
Location
setup.md:30
Finding
Unpinned Third-Party Package Is Downloaded and Executed with API Credentials## Vulnerability Details **File Location**: `setup.md:30-40`, `setup.md:51-56`, and `setup.md:85` **Vulnerability Type**: Unpinned dependency execution and supply-chain exposure **Risk Level**: Medium ### Vulnerable Code The Cursor configuration downloads and executes an npm package without specifying an immutable version: ```json { "mcpServers": { "a2amarket": { "command": "npx", "args": ["-y", "@hz-abyssal-heart/a2amarket-mcp-server"], "env": { "A2AMARKET_API_KEY": "ak_your_key_here" } } } } ``` The Claude Desktop configuration recommends the same unpinned execution pattern: ```json { "mcpServers": { "a2amarket": { "command": "npx", "args": ["-y", "@hz-abyssal-heart/a2amarket-mcp-server"], "env": { "A2AMARKET_API_KEY": "ak_your_key_here" } } } } ``` The SSE setup also executes the package without a pinned version: ```bash npx @hz-abyssal-heart/a2amarket-mcp-server --sse --port 3100 ``` The documentation provides the following warning, but it does not technically mitigate the risk: ```text Security notice: npx downloads and executes external code from npm. Confirm that the package name @hz-abyssal-heart/a2amarket-mcp-server is correct and review its behavior before first use. ``` ### Technical Analysis The documented `npx` commands resolve `@hz-abyssal-heart/a2amarket-mcp-server` from the npm registry at execution time. Because no exact package version, lockfile, or integrity digest is specified, the effective executable payload can change after this Skill has been reviewed. The use of `-y` automatically accepts installation prompts, reducing the opportunity for users to inspect the resolved version before execution. In the desktop configurations, the downloaded process is also explicitly given `A2AMARKET_API_KEY` through its environment. Any code executed by the package can read that credential. This is a supply-chain weakness rather than evidence that the cur ...[truncated 1822 chars]
Remediation
## Remediation Suggestions 1. Pin the MCP server to a reviewed exact version rather than resolving the latest release: ```json "args": ["@hz-abyssal-heart/a2amarket-mcp-server@1.2.3"] ``` 2. Publish and verify the expected npm integrity digest and package provenance. Prefer a controlled installation using a lockfile and `npm ci` over runtime installation through `npx`. 3. Remove `-y` so users can inspect the package and resolved version before first execution. 4. Document a review process for package upgrades. Each version change should be independently audited before the pinned version is updated. 5. Run the MCP server in a sandbox, container, or dedicated low-privilege operating-system account with restricted filesystem and network access. 6. Supply a restricted, low-balance API key with only the permissions needed by the MCP server. Do not reuse administrative or production credentials. 7. Rotate the API key immediately if an unexpected package version has been executed or package compromise is suspected. 8. Keep the REST-only Skill as the preferred option where possible because it does not require executing the external npm package.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • 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 (19)

Tool Parameter Abuse

High
Category
Tool Misuse
Content
- 新增 `POST /supply-declarations` — 声明供给能力
- 新增 `POST /subscriptions` — 订阅感兴趣的品类
- 新增 `GET /supply-products` — 查看我的供给列表
- 新增 `DELETE /intents/{id}` — 撤回采购意图
- 新增 `GET /intents/{id}/sourcing` — 寻源状态概览

### Changed
Confidence
80% confidence
Finding
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Tool Parameter Abuse

High
Category
Tool Misuse
Content
## 5. 撤回意图

```
DELETE /acap/v1/intents/{intentId}
```

---
Confidence
80% confidence
Finding
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Missing User Warnings

Medium
Confidence
91% confidence
Finding
This markdown file includes setup steps that require obtaining an API key and placing it into an environment variable, then transmitting it in a curl command. The instructions do not include any warning that the key is sensitive, should not be logged/shared, or should be handled carefully, which is a missing user warning for privacy/security-relevant behavior in markdown documentation.

External Transmission

Medium
Category
Data Exfiltration
Content
1. 在 [dev.a2amarket.md](https://dev.a2amarket.md) 注册获取 API Key
2. 设置环境变量:`export A2AMARKET_API_KEY="ak_your_key_here"`
3. 验证连通性:`curl -H "Authorization: Bearer $A2AMARKET_API_KEY" https://api.a2amarket.md/acap/v1/compute/balance`

详细安装指南见 [setup.md](setup.md)。
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
1. 在 [dev.a2amarket.md](https://dev.a2amarket.md) 注册获取 API Key
2. 设置环境变量:`export A2AMARKET_API_KEY="ak_your_key_here"`
3. 验证连通性:`curl -H "Authorization: Bearer $A2AMARKET_API_KEY" https://api.a2amarket.md/acap/v1/compute/balance`

详细安装指南见 [setup.md](setup.md)。
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Vague Triggers

Medium
Confidence
95% confidence
Finding
The trigger list includes broad generic terms such as buy, sell, procurement, supply, and notifications, which can cause the skill to activate in conversations not specifically intended for this integration. In a commerce skill that can perform networked actions and create listings or procurement intents, accidental invocation raises the chance of unintended external actions and data transmission.

External Transmission

Medium
Category
Data Exfiltration
Content
用户不需要选择自己是"买家"还是"卖家"。同一个人可以上午采购蜂蜜,下午上架耳机,晚上声明自己能供电子产品。你帮他搞定所有这些。

- 风格:热情、专业、主动。像一个懂行的朋友在帮用户搞定交易,不是在念技术文档。
- 向用户展示结果而非技术细节:用自然语言汇报操作结果,不需要在对话中展示 curl 命令或 JSON 原文。但如果用户主动要求查看技术细节或 API 响应,应如实提供。
- 金额永远转换为"元"展示给用户(API 返回的是分,1 元 = 100 分)。3000000 分 → 展示为"3 万元"。
- 每次执行 API 调用时,用一句话告诉用户你做了什么(如"我帮你查了余额"、"已经帮你发布了采购需求"),保持操作透明。
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Vague Triggers

Medium
Confidence
88% confidence
Finding
The skill instructs the agent to infer user intent from broad natural-language phrases and automatically execute buying, selling, and supply actions. Without a strong activation boundary and confirmation gate, normal conversation can be misread as authorization to perform external write operations, leading to unintended postings, subscriptions, or disclosures.

Intent-Code Divergence

Medium
Confidence
97% confidence
Finding
The skill’s safety section says webhook configuration should only occur after an explicit user request and confirmation of the target address, but later instructions direct the agent to automatically choose webhook mode when available. That contradiction can cause the agent to transmit notifications to a network endpoint without clear user consent, creating a risk of unintended data disclosure or SSRF-like misuse if a hostile endpoint is selected from ambient context.

Missing User Warnings

Medium
Confidence
89% confidence
Finding
This markdown file includes webhook configuration examples with `webhook_secret` and nearby API credential material, but it does not warn readers that these values are sensitive and must not be reused, logged, or committed. Because the examples describe networked integrations that handle authentication data, a user-facing warning is expected under the markdown-specific missing-warning rule.

Natural-Language Policy Violations

Medium
Confidence
92% confidence
Finding
This markdown file contains user-facing instructions exclusively in Chinese, beginning with the title and continuing throughout the document. Under the policy, forcing a specific language without user opt-in is a natural-language policy violation unless the locale restriction is documented and justified, which is not present here.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding
The guide instructs users to run an npm package via `npx` without pinning a specific version or integrity, which means future installs may fetch newly published code under the same package name. If the package is compromised, transferred, or updated maliciously, users could execute arbitrary code on their system during setup.

Natural-Language Policy Violations

Low
Confidence
88% confidence
Finding
The file presents the skill description and instructions in a single forced language, which can violate a language/locale policy when no user opt-in or language choice is provided. There is no indication that the skill is intentionally region-specific or that alternate language support is available.

Intent-Code Divergence

Low
Confidence
77% confidence
Finding
The onboarding guidance says not to automatically call registration APIs to generate credentials and that API keys must be obtained by the user. However, the same skill documentation later lists POST /acap/v1/agents as a core account operation, creating mixed intent about whether registration is in scope and under what conditions it may be used.

Natural-Language Policy Violations

Low
Confidence
76% confidence
Finding
The file presents user-facing examples and explicitly states `Agent 应自动转换:余额 50 万元,冻结 1 万元`, which imposes Chinese-language/locale formatting behavior. There is no indication that users may opt into another language or locale, so this is a natural-language locale policy concern.

Natural-Language Policy Violations

Low
Confidence
70% confidence
Finding
The entire skill file is presented only in Chinese and does not indicate that language selection is optional or that the documentation is intentionally scoped to a Chinese-speaking audience. Per SQP-3, forcing a specific language without opt-in can be a language/locale policy concern.

Missing User Warnings

Low
Confidence
86% confidence
Finding
This markdown file describes a DELETE endpoint for withdrawing an intent, which can affect user data, but provides no warning about the destructive nature or irreversibility of the action. Under the markdown-specific SQP-2 criteria, behavior that may affect user data should include a clear caution or warning.

Missing User Warnings

Low
Confidence
80% confidence
Finding
The markdown instructs users to register an agent with a webhook URL and webhook secret, which involves transmitting notifications to an external endpoint and handling authentication material. The description does not include any warning about protecting the secret or ensuring the webhook destination is trusted.

Missing User Warnings

Low
Confidence
80% confidence
Finding
The API reference documents endpoints that expose internal agent rationale, decision plans, tool usage, and event streams, including fields like agent_thinking and rationale, without any warning about sensitive-data exposure or access restrictions. If these endpoints are accessible beyond tightly authorized owners, they could leak proprietary logic, prompt contents, business data, or personal information embedded in traces.

Static analysis

No suspicious patterns detected.