Back to skill

Security audit

外贸与出口技能包(免费版)

Security checks for vulnerabilities and agentic risk

Overview

The local checker itself is mostly purpose-aligned, but the skill also directs agents toward an external paid-skill purchase and installation flow using dynamic plain-HTTP routing, so users should review it before installing.

Install only if you want a Chinese-language local checker for exported text worksheets, and treat its results as arithmetic/consistency assistance rather than tax, customs, legal, or audit advice. Do not let an agent follow the paid-edition purchase or installation flow automatically; avoid the plain-HTTP routing endpoint, verify any paid package through trusted HTTPS official sources, and confirm all payments and installations yourself.

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
SKILL.md:151
Finding
Unauthenticated HTTP Endpoint Controls Dynamic Purchase and Installation Routing## Vulnerability Details **File Location**: `SKILL.md`, lines 151–159 **Vulnerability Type**: Insecure external installation source **Risk Level**: Medium **Relevant snippet**: ```text Please purchase and install Skill "Foreign Trade and Export Pack · Buyout Edition." Official installation and purchase instructions: https://skillpay.alipay.com/buildguide.md Installation steps are subject to the official instructions: https://skillpay.alipay.com/buildguide.md After installation, read the SKILL.md of the newly installed skillpay-onboarding... ``` ```markdown - **Permanent purchase address**: <http://110.40.221.75/buy/foreign-trade-pack> (A human opens the human-readable page; AI uses `http://110.40.221.75/buy/foreign-trade-pack?format=json` to obtain the current product number; `http://110.40.221.75/buy/foreign-trade-pack?go=1` redirects to the currently valid SkillPay purchase address.) ``` ### Technical Analysis When the user requests the paid edition, the Skill directs the agent to retrieve a current product identifier or purchase destination from a plain HTTP endpoint. HTTP provides no transport authentication or integrity protection. An on-path attacker can therefore alter the JSON response or the redirect destination. The modified network data enters a software-purchase and Skill-installation workflow executed with the user's authority. Although the surrounding instructions require checking the merchant, product, and order amount and require the user to confirm payment, those procedural checks do not authenticate the HTTP response or guarantee that the selected package and installation source are the intended ones. The evidence does not establish malicious intent by the project author, so the project is classified as suspicious rather than malicious. ### Attack Path 1. The user asks the agent to obtain the paid edition. 2. The agent follows `SKILL.md` and accesses the documented HTTP JSON or re ...[truncated 1009 chars]
Remediation
## Remediation Suggestions - Remove the plain HTTP endpoint and redirect from the installation workflow. - Publish purchase metadata exclusively over HTTPS with strict certificate validation. - Use immutable product identifiers and authenticated, integrity-protected metadata rather than dynamically trusting a redirect response. - Pin the expected merchant, product identity, installation package, and source in the reviewed Skill. - Before purchase or installation, require programmatic comparison against signed or otherwise authenticated metadata. - Preserve explicit user confirmation for payment, but do not treat confirmation alone as a substitute for source authentication. - Reject redirects to origins outside a narrowly defined HTTPS allowlist.
Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (50)

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding
主要能力大体匹配:这是一个针对外贸出口材料的本地批量核对汇总器,按对象运行多项检查,带文件与行号引用,且代码声明不联网、不写文件,与描述基本一致。真正的不一致点在于“完整性表述”:用户描述把技能说成一个完整的 14 项检查能力包,而代码头部与 CHECKS_WITHHELD 明确反复声明该文件是免费档/子集,并且有未执行的保留功能。虽然这份代码实际列出了 14 个 MEMBERS 并调度它们,但它也明确区分了已执行检查、未执行检查、子检查未覆盖、以及完整档才有的汇总台账能力。因此,描述没有如实反映代码中的能力分层与 withheld 状态,容易让人误以为不存在功能保留或未执行项。资源访问方面则基本一致:本地运行、无网络、无 API Key、无额外权限。综合看,属于中等偏强的不匹配,重点在功能完整性与产品分层描述不准确。

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding
该描述与代码行为存在明显的实质性不一致。代码自身注释已说明这是‘免费档子集’,并且主入口只处理 payload.text 中的一张货运险台账文本表。实际执行的检查仅限表内算术复算和少量格式/重复/合计校验;其余 13 个声明中的检查项完全没有实现。即使在货运险这一项内,描述暗示完整核对,而代码还明确把少赔、拒赔但应赔、同票重复投保、漏保、索赔处理清单等能力列为 checks_not_run。另一方面,‘本地运行、不联网、无需 API Key’与代码一致,不构成问题。但总体主能力被严重夸大,因此应判定为描述与行为不匹配。

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding
该代码与“完全本地运行、不联网”这一部分是一致的,但这只是资源使用层面的匹配。核心目的存在明显不符:声明描述的是一个覆盖 14 个外贸出口核对主题的综合审计工具,而代码仅处理寄售代销结算这一单一检查主题,且还是免费档子集。代码头部与常量明确说明了 withheld/paid checks,并未实现声明中的大量其他检查能力。依据评估标准,这属于主要用途与能力范围的重大不一致,应判定为 mismatch。

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding
这是明显的描述与行为不一致。代码文件自身注释已说明它只是“免费档子集”,且主功能限定为“出口报关与收汇核销核对”。实际执行的检查项只有 6 个,另外 5 个同主题检查还被列为 withheld,且完全没有实现声明中的其他 13 类核对内容,如出口退税核算、外币结算与汇兑损益、进口税费核算、货运险理赔、运费对账、保函台账、增值税进项认证、发票管理、寄售代销结算等。另一方面,声明中“完全本地运行、不联网、不需要 API Key”与代码行为一致,因此资源访问方面没有额外风险;但就核心能力范围而言,存在重大夸大。

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding
该描述与代码行为存在明显实质性不一致。代码是一个单一的出口退税(免抵退)核算检查引擎,只接受含特定表头的文本表格,围绕四道退税公式及若干基础完整性检查生成问题列表。它并未实现描述中列出的14项综合外贸审计能力中的绝大多数,也没有跨多个材料类型或对象进行统一逐行结论输出。虽然“本地运行、不联网、无需API Key”与代码一致,但主要功能范围被大幅夸大,因此应判定为描述与实际行为不匹配。

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding
该代码与“完全本地运行、不联网”这一资源/执行方式描述基本一致,也没有发现额外越权能力。但核心功能范围与声明明显不符:声明描述的是一个覆盖 14 个审计主题的综合外贸出口材料核对工具,而实际代码只是其中一个子模块 export-rebate-doc-consistency-check,专门处理出口退税申报单证一致性表内勾稽,而且还是“免费档子集”。代码中通过 CHECKS_GIVEN、CHECKS_WITHHELD、OUT_OF_SCOPE 以及注释明确表明大量检查未实现或不在范围内。因此这是明显的能力夸大/用途不匹配。

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding
代码的主功能与声明存在实质性偏差。声明描述的是一个覆盖14类外贸/税务/物流/发票/保函/寄售结算事项的综合核查工具;而实际代码是单一的 freight-reconciliation 引擎,仅对物流运费月结单做内部算术与格式校验。它确实符合“本地运行、不联网”的部分表述,但核心能力范围远小于声明,且代码还明确说明某些运费检查项都未执行,更不用说其余13大类业务。因此这是明显的描述与行为不一致。

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding
该代码的主用途与声明明显不一致。代码文件名和内部注释都表明它是“外币结算与汇兑损益核对引擎”的免费子集,只针对一个结构化文本表执行有限的数值勾稽与完整性检查。声明则描述了一个面向外贸出口材料的14项综合审计工具,范围远大于实际实现。虽然“本地运行、不联网、不需要 API Key”与代码基本一致,但核心能力范围严重缩水,属于实质性描述不符。

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding
该描述与代码存在明显的范围和主功能不一致。代码文件名、注释、数据列定义和 run 逻辑都表明它是一个专门针对“银行保函台账”的本地校验器,而不是对外贸出口材料进行 14 项全覆盖核对的通用引擎。描述把能力表述为广泛的出口财税/物流/发票/结算审计工具,但代码只解析保函台账文本并执行少量保函相关规则。虽然“本地运行、不联网”这一点与描述一致,也会返回行号,但这些只是局部一致,不能弥补主用途和能力范围的重大差异。因此应判定为描述与实际行为不匹配。

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding
该描述与代码存在明显且重大的能力不匹配。描述将技能定位为一个覆盖14类外贸出口材料的综合核对工具,但实际代码只是单一模块 import-duty-check,用于检查进口税费计算表中的税额算术是否正确。其主功能是识别表头、解析文本表格、复算关税/消费税/增值税/税费合计,并检查合计行、重复商品、空白占位符。代码内还明确写出“本文件是免费档子集:只实现免费检查项;完整档(付费)的实现不在这个包里”,并列出 withheld 和 out-of-scope 项,进一步证明它既不是完整实现,也不是14项综合核查器。虽然‘完全本地运行、不联网’与代码一致,但核心目的和能力范围严重缩小,足以判定为描述与实际行为不符。

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding
该描述与代码行为存在明显且重大的范围不一致。描述承诺的是一个覆盖 14 个外贸财税/物流/票据主题的综合核对工具,而当前代码只是其中一个子模块 `input-vat-deduction-check`,专注于“增值税进项税额认证与抵扣”表的局部一致性检查。代码自身还明确声明这是“免费档子集”,只执行 6 项检查,另有 5 项未执行,更不涉及其他 13 个检查领域。输出形式也与描述不符:代码返回结构化 findings 和汇总,不是“每个核对对象一行结论,且带原文文件与行号”;其所谓行号只是输入表格中的行号,且没有文件级出处。另一方面,“完全本地运行、不联网、无需 API Key”这一点与代码一致,不构成问题。综合看,主功能和能力边界与声明严重不符,应判定为 mismatch。

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding
描述宣称的是一个覆盖外贸出口材料14个审计主题的完整核对技能,而这段代码的主功能明显更窄:它只解析“月份/期初/领用/开出/作废/红冲/期末”发票领用存台账,并执行6项基础一致性检查。代码头部和返回结果都明确写明这是“免费档子集”,且`CHECKS_WITHHELD`中的若干检查并未执行,更不用说描述中列出的其他13个业务主题。另一方面,描述中的“完全本地运行、不联网、不需要 API Key”与代码行为是一致的,因此资源访问方面没有冲突。总体上,主目的和能力范围存在重大不一致,应判定为描述与实际行为不匹配。

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding
存在明显描述与行为不一致。代码文件名、注释、常量和主逻辑都表明它只是“物流仓储与操作费核对”的一个子模块,而且还是免费档子集,只执行6项检查,另有5项明确 withheld。它并未实现声明中的出口退税、报关收汇、汇兑损益、进口税费、货运险、运费、保函、发票、寄售代销等大量检查内容。虽然“完全本地运行、不联网”这一点与声明一致,但工具的主要能力范围被大幅夸大,因此应判定为 mismatch。

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding
该描述与代码存在明显且重大的范围不一致。代码文件名、注释和实现都表明它只是一个“发票作废与红冲核对”模块,而且还是“免费档子集”,仅执行 6 个具体检查项;另有 5 个检查项被显式列为 withheld/not_run。它的主输入是 payload.text 中的一段表格文本,解析表头后对台账内部数值关系进行勾稽,不会对声明中的 14 类外贸出口材料进行全面审计,也没有原文文件级别的定位与逐对象输出能力。唯一与声明一致的是:本地运行、无网络请求。因此这是典型的‘描述远超代码实际能力’的失配。

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding
这是明显的描述与行为不符。代码本身在注释和实现中反复说明它只是“waybill-pod-cod-check(运单回单与代收货款核对)”的免费子集,实际执行范围仅限一张特定表的表内勾稽检查。声明则描述成一个可对外贸出口材料做 14 大项全面审计的本地工具,两者主目的和覆盖范围差异很大。资源使用方面,代码确实本地运行且不联网,这部分与声明一致;但核心能力被大幅夸大,因此应判定为 mismatch。

Ae1

High
Category
analysis-evasion
Content
node scripts/run.mjs --sample # 单对象样例(内置)
Confidence
100% confidence
Finding
Referenced artifact was not completely inspected

Ae1

High
Category
analysis-evasion
Content
node scripts/run.mjs --sample # 单对象样例(内置)
Confidence
100% confidence
Finding
Referenced artifact was not completely inspected

Ae1

High
Category
analysis-evasion
Content
node scripts/run.mjs --sample # 单对象样例(内置)
Confidence
100% confidence
Finding
Referenced artifact was not completely inspected

Ae1

High
Category
analysis-evasion
Content
node scripts/run.mjs --sample # 单对象样例(内置)
Confidence
100% confidence
Finding
Referenced artifact was not completely inspected

Context-Inappropriate Capability

High
Confidence
97% confidence
Finding
The documentation contains instructions for purchasing and installing another product, including merchant and product identifiers and steps for the agent to continue after installation. This is unrelated to the stated document-checking purpose and creates a social-engineering path where the skill can steer an agent into commerce, dependency installation, and retrieval of further instructions from external content.

Description-Behavior Mismatch

High
Confidence
98% confidence
Finding
The file explicitly states it is only a free-tier subset implementing one check area, while the skill metadata claims a 14-category foreign-trade review. This creates a capability-integrity problem: users may rely on the tool for comprehensive compliance review and miss unimplemented categories, leading to false assurance and undetected accounting or tax issues.

Description-Behavior Mismatch

High
Confidence
98% confidence
Finding
The code explicitly states it is only a free-tier subset and implements just one narrow invoice usage/stock check module, while the skill metadata promises a full 14-item foreign-trade review with per-object conclusions and source line references. This creates a capability-misrepresentation risk: users may rely on incomplete results as if the full compliance review was performed, causing missed control failures in export tax, customs, settlement, or logistics workflows.

Intent-Code Divergence

Medium
Confidence
91% confidence
Finding
The file says it does not write files and 'only does one thing', but later describes a tool that writes into SKILL.md and expands behavior into acquisition/install actions. Contradictory operational claims weaken trust boundaries and can mislead automation or users into granting permissions based on false assumptions about side effects.

Description-Behavior Mismatch

Medium
Confidence
96% confidence
Finding
The skill repeatedly claims it is fully local and does not network, but later embeds external purchase URLs and even instructs an agent to fetch current product information over HTTP/HTTPS. That contradiction can cause an operator or autonomous agent to perform unintended network access and interact with untrusted remote content, undermining the local-only trust model.

Natural-Language Policy Violations

Medium
Confidence
94% confidence
Finding
The natural-language documentation and user-facing strings are entirely in Chinese and describe the skill as if it is intended to be used that way by default. There is no indication that users may choose another language or that the Chinese-only behavior is a documented, justified region-specific limitation, which matches the locale-policy violation criteria.

Static analysis

No suspicious patterns detected.