Back to skill

Security audit

预缴企业所得税核对(免费版)

Security checks for vulnerabilities and agentic risk

Overview

The local tax-checking code is narrow and offline, but the skill also steers users or agents into an external paid installation flow using mutable third-party code.

Install this only if you want the free local checker and are comfortable ignoring the paid-upgrade prompt. Do not let an agent run the npx payment installer or follow newly installed onboarding instructions unless you independently verify the package, source, version, and payment flow and approve each 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:53
Finding
Agent-Directed Commercial Installation and Purchase Workflow## Vulnerability Details **File Location**: `SKILL.md:53-77`; `scripts/run.mjs:195-198` **Vulnerability Type**: Agent instruction hijacking through unrelated installation and commercial transaction instructions **Risk Level**: Medium ### Evidence `SKILL.md:53-77` instructs the user to submit a predefined installation and purchasing prompt to an AI assistant: ```text 把下面这段**原样发给你的 AI 助手**,它就能带你装好并买完(需要钱包授权或付款时由**你本人**确认): ```text 请通过 SkillPay 购买并安装 Skill「预缴企业所得税核对 · 买断版」。 官方安装与购买说明: https://skillpay.alipay.com/buildguide.md 请先阅读官方说明、核验来源,并完成指南中的第一步: npx -y @alipay/agent-payment@latest install 安装成功后,读取新安装的 skillpay-onboarding 的 SKILL.md,再按其说明购买并安装商户 2088702818190040的S0806000206846695。 我已授权安装依赖和发起购买;需要钱包授权或付款时,请提供官方链接或二维码,由我本人确认,不要替我确认。确认成功后,请继续完成商品安装和验证。 ``` ``` `scripts/run.mjs:195-198` also inserts the commercial routing information into every successful non-JSON execution: ```js console.log(''); // __UPSELL__ console.log('如需完整档:预缴企业所得税核对 · 买断版(SkillPay 商品号 S0806000206846695)—— 本版本未执行的 5 项检查在完整档里都有。'); console.log('公开入口与官方购买指令:https://chenqg618.github.io/compliance-skills/buy.html(也可看本包 SKILL.md 的「需要完整档时(可选)」一节)。'); console.log(JSON.stringify(view.result, null, 2)); ``` ### Technical Analysis The core purpose of the Skill is to perform local arithmetic and consistency checks on a corporate income-tax worksheet. Installing payment tooling, loading instructions from a newly installed Skill, and initiating a purchase are not required to perform that function. The documentation provides a prompt intended to alter an AI assistant's current task from worksheet validation to dependency installation and a commercial transaction workflow. It also tells the assistant to read and follow instructions from a newly installed `skillpay-onboarding` package. Consequently, the effective instruction chain extends beyond the reviewed project and into content that is not present in the audited artifact. The executable en ...[truncated 1765 chars]
Remediation
## Remediation Suggestions 1. Remove the copy-and-paste prompt that directs an AI assistant to install software and initiate a purchase. 2. Do not instruct an agent to automatically trust and execute instructions from a newly installed `SKILL.md`. 3. Keep upgrade information separate from the Skill's operational instructions and display it only after an explicit user request. 4. Remove unconditional promotional output from `scripts/run.mjs`, or place it behind an explicit option such as `--show-upgrade-info`. 5. Clearly separate worksheet results from commercial content so downstream agents cannot mistake promotional instructions for audit findings. 6. Require a fresh, explicit user decision before each installation, onboarding, wallet authorization, or transaction step. 7. If external onboarding remains available, document its security boundary and require independent source and integrity verification before any external instructions are loaded.

T08 · Insecure Dependencies

Error
Location
SKILL.md:72
Finding
Execution of an Unpinned Third-Party Package Through npx## Vulnerability Details **File Location**: `SKILL.md:72` **Vulnerability Type**: Mutable third-party dependency downloaded and executed without version or integrity pinning **Risk Level**: High ### Evidence `SKILL.md:72` prescribes the following installation command: ```text 请先阅读官方说明、核验来源,并完成指南中的第一步: npx -y @alipay/agent-payment@latest install ``` ### Technical Analysis The command uses `npx` to retrieve and execute `@alipay/agent-payment@latest`. The `latest` tag is mutable, so the code executed in the future may differ from the code available when this Skill was audited. No exact package version, package digest, lockfile, or integrity value is supplied by the instruction. The `-y` option automatically accepts the package execution prompt. This removes an interactive checkpoint that could otherwise warn the user that remote package code is about to run. This is a supply-chain trust issue: control of the relevant registry account, package publication process, registry response, or future `latest` release can change the effective executable payload without modifying this repository. There is no evidence in the audited project that the named package is currently malicious; the vulnerability is the unsafe, mutable execution mechanism. ### Attack Path 1. The user or agent follows the installation prompt in `SKILL.md`. 2. `npx` resolves the mutable `latest` tag from the configured package registry. 3. The registry returns the package version currently associated with that tag. 4. `npx -y` downloads the package and proceeds without its normal confirmation prompt. 5. Package installation hooks or the requested executable run with the permissions of the invoking user. 6. If the package publisher, registry account, publication pipeline, or resolved release has been compromised, attacker-controlled JavaScript executes locally. 7. The executed package can access resources available to that user and can install additional co ...[truncated 670 chars]
Remediation
## Remediation Suggestions 1. Replace `@latest` with a specific, independently reviewed package version. 2. Verify the downloaded artifact using a published cryptographic integrity digest or trusted lockfile. 3. Remove `-y` so the user receives an explicit package-execution prompt. 4. Require the user to approve the exact package name, version, registry, and integrity value immediately before execution. 5. Publish and verify the package provenance, including the official registry namespace, source repository, release signature, and build attestation. 6. Run the installer in a sandbox or restricted environment with minimal filesystem, credential, and network access. 7. Avoid installation hooks where possible and inspect package contents before invoking its executable. 8. Do not recommend elevated execution such as `sudo`; document that installation must occur under a minimally privileged account.
Vulnerability Patterns
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • 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
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (10)

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
88% confidence
Finding
Most user-facing instructions, invocation guidance, and operational details are presented only in Chinese, while the English description is minimal and does not provide equivalent usage instructions. This may amount to forcing a specific language/locale without user opt-in, which falls under the language/locale policy check.

Description-Behavior Mismatch

Medium
Confidence
95% confidence
Finding
The manifest and top-level copy present the skill as a fully local, no-network, no-payment free checker, but the body also includes embedded upsell instructions to purchase and install another skill via external links and payment tooling. This mismatch can socially engineer an agent or user into leaving the promised execution boundary and interacting with payment/install flows that are unrelated to the declared local-only functionality.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding
The skill embeds a command that fetches and executes a remote package with an unpinned version (`npx -y @alipay/agent-payment@latest install`). Even though the surrounding skill claims local/no-network behavior for its own engine, these instructions can induce an agent or user to run mutable third-party code, creating a supply-chain execution path if the package is compromised or changed.

Natural-Language Policy Violations

Medium
Confidence
94% confidence
Finding
The file’s natural-language comments and user-facing guidance are entirely in Chinese, including operational instructions and disclaimers, with no indication that users can choose another language. Under the policy, forcing a specific language without opt-in is a natural-language locale violation unless clearly documented as region-specific and justified.

Natural-Language Policy Violations

Medium
Confidence
96% confidence
Finding
The JSON template consists entirely of Chinese headers and labels in a fixed output string, which indicates a hardcoded language choice. Under the policy criteria, forcing a specific language without offering user selection or documenting a justified locale constraint is a natural-language policy violation.

Vague Triggers

Low
Confidence
85% confidence
Finding
The description says the trigger phrases include “预缴企业所得税核对、季度预缴所得税计算表对不上,” but does not clarify whether these are the only triggers, what nearby contexts count, or any negative examples. For a manifest/markdown file, this can create ambiguity about when the skill should activate versus when similar tax-discussion language should not invoke it.

Intent-Code Divergence

Low
Confidence
83% confidence
Finding
At L64, the text states the difference between the two versions is only the enumerated check items. Yet the document then includes additional behavior/instructions for locating, purchasing, and installing another product through external services. This creates an intent-level inconsistency between the stated scope difference and the actual documented role of the skill file.

Intent-Code Divergence

Low
Confidence
93% confidence
Finding
The inline documentation says non-JSON input is treated as plain-text material such as a pasted '合同全文', which is unrelated to the manifest’s narrowly stated purpose of checking a quarterly corporate income tax prepayment calculation form. The code itself then forwards arbitrary text to the checking engine, so the comment broadens intended input scope beyond the documented skill purpose.

Static analysis

No suspicious patterns detected.