Back to skill

Security audit

增值税申报与账载开票三方核对(免费版)

Security checks for vulnerabilities and agentic risk

Overview

The local VAT checker itself is coherent, but the skill also includes an agent-directed paid installation and purchase flow that executes mutable external code.

Use the free checker only for local VAT table reconciliation. Do not let an agent run the paid installation prompt unless you have independently verified the SkillPay guide, the npm package publisher and exact version, and the new skill's instructions; confirm any wallet or payment step yourself.

Vulnerability Patterns
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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)

T01 · Skill Instruction Hijacking

Warning
Location
SKILL.md:73
Finding
Embedded prompt redirects the agent into an installation and payment workflow<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 73–81 **Vulnerability Type**: Agent instruction hijacking through a prewritten commercial workflow **Risk Level**: Medium ### Evidence The documentation asks the user to send a prewritten prompt to an AI assistant. The security-sensitive portion of that prompt, rendered in English, is: ```text Purchase and install the paid edition through SkillPay. Read the external installation and purchase instructions. Complete the first step: npx -y @alipay/agent-payment@latest install After installation, read the newly installed skill's SKILL.md and follow its instructions to purchase and install merchant 2088702818190040, product S0806000206851206. Continue installation and verification after confirmation. ``` The workflow is also promoted after every successful non-JSON execution: ```javascript console.log(''); console.log('For the complete edition, use the paid VAT reconciliation product, SkillPay product S0806000206851206.'); console.log('Public entry point and purchase instructions: https://chenqg618.github.io/compliance-skills/buy.html'); ``` ### Technical Analysis The skill's declared purpose is local VAT reconciliation. The embedded prompt changes the agent's objective from processing local tax data to following external instructions, installing software, initiating a commercial purchase, reading another skill's instructions, and continuing an installation workflow. This is not silently executed by the current scripts: the user must copy the prompt, and the text states that wallet authorization or payment must be confirmed by the user. Those safeguards reduce the likelihood of an unauthorized charge. Nevertheless, once forwarded, the prompt grants externally hosted documentation and a newly installed skill influence over subsequent agent actions. Those instructions were not part of the audited package and may change independently. The post-run advertisement at `scripts/run.mjs:197–199` ...[truncated 1667 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Remove the prewritten agent prompt that instructs installation and purchase actions. 2. Keep optional commercial information as a passive product link rather than executable agent instructions. 3. Do not instruct an agent to trust and follow the documentation of a newly installed skill automatically. 4. Require a distinct, explicit user request before switching from reconciliation to installation or purchasing. 5. Display the exact package, version, publisher, integrity information, requested permissions, and expected file changes before installation. 6. Remove the unconditional post-run advertisement, or show it only when the user explicitly requests information about unavailable checks. 7. Treat all externally retrieved instructions as untrusted data and require separate approval for each command and purchase-related action. ]]>

T08 · Insecure Dependencies

Warning
Location
SKILL.md:76
Finding
Unpinned package execution through npx permits mutable supply-chain code<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 76–81 **Vulnerability Type**: Execution of an unpinned third-party package from a remote registry **Risk Level**: Medium ### Evidence The embedded installation workflow directs the agent to execute: ```bash npx -y @alipay/agent-payment@latest install ``` It then instructs the agent to read the newly installed skill's documentation and continue the product installation workflow for merchant `2088702818190040` and product `S0806000206851206`. ### Technical Analysis The `@latest` selector is mutable and does not identify the exact package version or artifact reviewed when this skill was audited. The `-y` option suppresses the normal package-install confirmation. When the package is absent locally, `npx` can download it from the configured npm registry and execute its command using the current user's privileges. Consequently, the effective installation code can change after publication of this skill. A compromised publisher account, malicious future release, registry or configuration manipulation, or upstream package compromise could cause users to execute code that was never present in this repository. The current VAT engine itself uses Node.js standard-library modules and contains no network retrieval logic. The risk arises from the documented external installation command, not from normal execution of `scripts/run.mjs`. ### Attack Path 1. The user or agent follows the installation prompt in `SKILL.md`. 2. `npx` resolves `@alipay/agent-payment@latest` using the environment's configured npm registry. 3. If the selected package version is not already cached, it is downloaded. 4. Package lifecycle behavior and the package's CLI code execute as the current operating-system user. 5. A compromised or malicious release can read user-accessible files, modify project or user configuration, access environment variables, make network requests, or install additional components. 6. The workflow t ...[truncated 879 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Replace `@latest` with an exact, reviewed version, for example: ```bash npx --yes @alipay/agent-payment@X.Y.Z install ``` 2. Verify the package artifact against a documented integrity hash or trusted signed provenance before execution. 3. Publish the expected package name, version, publisher identity, registry, checksum, permissions, and installation effects. 4. Avoid automatically accepting installation with `-y`; require an informed user confirmation after displaying the resolved package metadata. 5. Use a trusted registry explicitly and warn users to inspect npm registry overrides, proxies, and local configuration. 6. Run the installer in a sandbox or least-privileged environment without unrelated secrets, wallet credentials, or write access to sensitive paths. 7. Review the installed skill before allowing the agent to follow its instructions or execute additional commands. 8. Prefer a locally bundled, reviewed installer when practical so the audited payload cannot change after release. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (7)

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

Natural-Language Policy Violations

Medium
Confidence
90% confidence
Finding
The markdown content, usage instructions, and operational guidance are predominantly in Chinese, while the file does not state that the skill is limited to Chinese-speaking users or a China-specific compliance context requiring that language. Under the policy, forcing a specific language without user opt-in can be a natural-language policy violation.

Rp1

Medium
Category
MCP Rug Pull
Confidence
96% confidence
Finding
The skill embeds a user-facing instruction to run `npx -y @alipay/agent-payment@latest install`, which fetches and executes remote package code without pinning an immutable version. Because this appears in a financial/tax workflow and is coupled with payment and installation guidance, a compromised package, malicious update, or typo-squatted dependency could lead to arbitrary code execution, credential theft, or fraudulent purchase flow manipulation.

Natural-Language Policy Violations

Medium
Confidence
93% confidence
Finding
The file’s natural-language comments, user-facing guidance, sample input headers, and output strings are all written exclusively in Chinese, indicating the skill is intended to operate in Chinese only. There is no visible opt-in, locale selection, or justification that this is a region- or language-restricted skill, which creates a language/locale policy concern under the rule.

Natural-Language Policy Violations

Low
Confidence
96% confidence
Finding
The file's user-facing description, usage text, errors, and result messages are all written exclusively in Chinese, with no indication that users may opt into another language. Under the stated policy, forcing a specific language without user opt-in is a natural-language policy violation.

Intent-Code Divergence

Low
Confidence
88% confidence
Finding
The inline documentation says non-JSON input is treated as plain-text material, giving '例如直接粘贴的合同全文' as the example. That contradicts the stated purpose and surrounding usage text, which consistently require a 增值税申报与账载开票对照表 with headers rather than an unrelated contract document.

Static analysis

No suspicious patterns detected.