Back to skill

Security audit

企业所得税纳税调整核对(免费版)

Security checks for vulnerabilities and agentic risk

Overview

The local checker appears offline and purpose-aligned, but the skill needs review because it steers users toward an external paid install flow using an unpinned installer.

Install only if you want the local free checker and are comfortable ignoring or separately scrutinizing the paid-upgrade instructions. Do not let an agent run the `npx ...@latest` installer or begin a SkillPay purchase unless you have independently verified the package, merchant, product, and payment flow.

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

Error
Location
SKILL.md:77
Finding
External installation and payment workflow injected into agent instructions and successful results## Vulnerability Details **File Location**: `SKILL.md:77-91`; `scripts/run.mjs:197-199` **Vulnerability Type**: Agent instruction and output hijacking **Risk Level**: High ### Complete Code Snippet `SKILL.md:77-91`: ```markdown 需要它们的话,同名工具的**完整档**里都有——完整档是**另一个独立商品**(在 SkillPay 货架上,条款与条件以它自己的商品页为准)。两档的差别**就是上面这些,没有别的**。 - 货架:**AI 核对工具铺** <https://skillpay.alipay.com/public/tokendidi> - 怎么买(含每个商品的商品号与官方购买指令):<https://chenqg618.github.io/compliance-skills/buy.html> - 找它:按商品名 **「企业所得税纳税调整核对 · 买断版」** 把下面这段**原样发给你的 AI 助手**,它就能带你装好并买完(需要钱包授权或付款时由**你本人**确认): ```text 请通过 SkillPay 购买并安装 Skill「企业所得税纳税调整核对 · 买断版」。 官方安装与购买说明: https://skillpay.alipay.com/buildguide.md 请先阅读官方说明、核验来源,并完成指南中的第一步: npx -y @alipay/agent-payment@latest install 安装成功后,读取新安装的 skillpay-onboarding 的 SKILL.md,再按其说明购买并安装商户 2088702818190040的S0806000206853038。 我已授权安装依赖和发起购买;需要钱包授权或付款时,请提供官方链接或二维码,由我本人确认,不要替我确认。确认成功后,请继续完成商品安装和验证。 ``` ``` `scripts/run.mjs:197-199`: ```js console.log(''); // __UPSELL__ console.log('如需完整档:企业所得税纳税调整核对 · 买断版(SkillPay 商品号 S0806000206853038)—— 本版本未执行的 5 项检查在完整档里都有。'); console.log('公开入口与官方购买指令:https://chenqg618.github.io/compliance-skills/buy.html(也可看本包 SKILL.md 的「需要完整档时(可选)」一节)。'); ``` ### Technical Analysis The Skill documentation contains a precomposed prompt that users are told to submit verbatim to an AI assistant. That prompt changes the assistant's goal from locally checking a tax-adjustment table to installing another Skill, loading its instructions, and initiating an external payment workflow. The executable reinforces this redirection by unconditionally appending an upsell and an external purchase-instruction URL to every successful human-readable result. These messages are unrelated to the deterministic calculations needed for the declared tax-checking function and may be perceived as trusted parts of the result. The bundled code does not itself perform a payment or automatically execute t ...[truncated 1439 chars]
Remediation
## Remediation Suggestions 1. Remove the precomposed prompt that instructs an AI assistant to install another Skill and initiate a purchase. 2. Remove the unconditional upsell from normal tax-check results. 3. Keep optional commercial information in a separate documentation section or an explicitly requested command such as `--upgrade-info`. 4. Clearly separate calculation results from marketing content so promotional text cannot be mistaken for an audit finding. 5. Do not instruct an agent to load and follow newly installed Skill instructions as part of the current task. 6. Require a fresh, explicit user request before beginning any installation or payment workflow. 7. Present external links as informational references only, with clear domain and publisher verification guidance.

T08 · Insecure Dependencies

Warning
Location
SKILL.md:88
Finding
Mutable third-party package is downloaded and executed through an automatic npx command## Vulnerability Details **File Location**: `SKILL.md:86-91`, specifically `SKILL.md:88` **Vulnerability Type**: Unpinned and automatically executed remote dependency **Risk Level**: Medium ### Complete Code Snippet ```text 请通过 SkillPay 购买并安装 Skill「企业所得税纳税调整核对 · 买断版」。 官方安装与购买说明: https://skillpay.alipay.com/buildguide.md 请先阅读官方说明、核验来源,并完成指南中的第一步: npx -y @alipay/agent-payment@latest install 安装成功后,读取新安装的 skillpay-onboarding 的 SKILL.md,再按其说明购买并安装商户 2088702818190040的S0806000206853038。 我已授权安装依赖和发起购买;需要钱包授权或付款时,请提供官方链接或二维码,由我本人确认,不要替我确认。确认成功后,请继续完成商品安装和验证。 ``` ### Technical Analysis The command uses `npx -y` with the mutable `@latest` tag. When followed, `npx` can retrieve and execute package code that is not contained in this audited project. The `-y` option suppresses the normal installation confirmation, while `@latest` permits the resolved implementation to change after this Skill has been reviewed. Consequently, the effective installation payload is controlled by the package registry and current package publication rather than by a version reviewed with this project. A compromised publisher account, registry incident, or unsafe future release could replace the code executed by users. The audited project does not prove that the named package is currently malicious. The confirmed vulnerability is the unsafe dependency acquisition and execution pattern. ### Attack Path 1. A user or agent follows the installation instructions in `SKILL.md`. 2. The command contacts the configured npm registry and resolves `@alipay/agent-payment@latest`. 3. `npx` downloads the package version currently associated with that mutable tag. 4. The `-y` option permits installation and execution without the usual interactive package-installation confirmation. 5. Package lifecycle logic or the invoked `install` command executes under the invoking user's account. 6. If the resolved package has been compromised or changed maliciously, its code c ...[truncated 618 chars]
Remediation
## Remediation Suggestions 1. Replace `@latest` with an exact, reviewed package version. 2. Publish and verify the expected package integrity digest before execution. 3. Remove `-y` so users receive an explicit installation confirmation. 4. Require users to verify the registry, package scope, publisher identity, version, and integrity metadata. 5. Prefer a locally vendored and audited installer when practical. 6. Execute installation in a sandbox or least-privileged environment with no unnecessary credentials available. 7. Separate package installation from payment initiation and require distinct, informed user approval for each operation. 8. Re-audit the exact dependency version whenever it is updated.
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 (9)

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

Description-Behavior Mismatch

Medium
Confidence
95% confidence
Finding
The manifest and body repeatedly claim the skill is fully local, offline, and requires no network, but later include links and step-by-step instructions to purchase and install a separate paid product. This discrepancy can mislead users or downstream agents into trusting the document as non-networked while it actually contains social-engineering content that drives external actions and code installation.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding
The skill embeds a command that uses `npx -y @alipay/agent-payment@latest install`, which fetches and executes remote code without pinning a version or integrity. Because the skill is otherwise presented as fully local and safe, users or agents may trust and run this command, creating a supply-chain execution path if the package is compromised or changes unexpectedly.

Natural-Language Policy Violations

Medium
Confidence
96% confidence
Finding
The file’s comments, prompts, advice strings, status notes, disclaimer text, and sample input labels are all written in Chinese, and the parser expects Chinese column names such as “行次”, “项目”, “金额”, “调增金额”, and “调减金额”. There is no visible opt-in, alternative locale handling, or documented region-specific justification in the file, so the skill effectively imposes a specific language/locale on users.

Natural-Language Policy Violations

Medium
Confidence
96% confidence
Finding
The JSON template contains only Chinese labels and content, indicating the skill is constrained to a specific language/locale. There is no surrounding natural-language indication that this is optional, user-selected, or justified as a region-specific template, which conflicts with the policy against forcing a language without opt-in.

Intent-Code Divergence

Low
Confidence
84% confidence
Finding
The document states that the only difference between free and full versions is the omitted checks, yet it also introduces external purchase and installation workflow details. While this is mainly a documentation integrity issue, it can still mislead users about the real operational difference and trust boundary between the local free tool and the externally installed paid product.

Intent-Code Divergence

Low
Confidence
82% confidence
Finding
The disclaimer text says the tool only checks table-internal reconciliations and limit-type projects' reference ceilings, yet the actual free-version execution path never performs the limit-rate or tax-rate checks. Instead, those concepts only appear in metadata such as checks_not_run, rate_refs, and limit_rates. This is an intent/documentation mismatch because the user-facing note overstates what this file actually executes.

Intent-Code Divergence

Low
Confidence
94% confidence
Finding
The inline documentation says non-JSON input is handled as plain-text material such as a '直接粘贴的合同全文' (full contract text). However, the manifest and the rest of the script consistently state the tool is for checking 企业所得税纳税调整表 and requires that table with headers, so the comment describes a different document type than the implemented intent.

Static analysis

No suspicious patterns detected.