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

Content
View full analysis

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
View 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"]
  1. 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.

  2. Remove -y so users can inspect the package and resolved version before first execution.

  3. Document a review process for package upgrades. Each version change should be independently audited before the pinned version is updated.

  4. Run the MCP server in a sandbox, container, or dedicated low-privilege operating-system account with restricted filesystem and network access.

  5. Supply a restricted, low-balance API key with only the permissions needed by the MCP server. Do not reuse administrative or production credentials.

  6. Rotate the API key immediately if an unexpected package version has been executed or package compromise is suspected.

  7. 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
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).

Content

Scanner excerpt · CHANGELOG.md (reported line 37)May include surrounding context.

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

### Changed

Tool Parameter Abuse

High
Category
Tool Misuse
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).

Content

Scanner excerpt · reference.md (reported line 88)May include surrounding context.

5. 撤回意图

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

Missing User Warnings

Medium
Category
Not specified by scanner
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.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · README.md (reported line 36)May include surrounding context.

md
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)。

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · setup.md (reported line 94)May include surrounding context.

md
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)。

Vague Triggers

Medium
Category
Not specified by scanner
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.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · SKILL.md (reported line 56)May include surrounding context.

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

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

Vague Triggers

Medium
Category
Not specified by scanner
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.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
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.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
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.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
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.

Content

No source excerpt is available for this finding.

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.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
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.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
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.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
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.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
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.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
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.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
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.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
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.

Content

No source excerpt is available for this finding.