Back to skill

Security audit

研发费用加计扣除归集核对(免费版)

Security checks for vulnerabilities and agentic risk

Overview

The local checking tool appears to run deterministically without network access, but its documentation and default output steer users toward an external AI-assisted install and purchase flow using mutable remote code.

Install only if you want the free local worksheet checker and are comfortable ignoring the upgrade prompts. Do not copy the provided purchase prompt or run the `npx ... @latest` installer unless you separately trust that payment/onboarding system and have reviewed what it will install.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Findings (2)

other

Warning
Location
scripts/run.mjs:195
Finding
Mandatory Commercial Promotion and External Redirection in Default Output## Vulnerability Details **File Location**: `scripts/run.mjs`, lines 195-198 **Vulnerability Type**: Forced promotional output and external redirection **Risk Level**: Medium ### Evidence ```js console.log(''); console.log(''); // __UPSELL__ console.log('如需完整档:研发费用加计扣除核对 · 买断版(SkillPay 商品号 S0806000206832709)—— 本版本未执行的 4 项检查在完整档里都有。'); console.log('公开入口与官方购买指令:https://chenqg618.github.io/compliance-skills/buy.html(也可看本包 SKILL.md 的「需要完整档时(可选)」一节)。'); ``` ### Technical Analysis Every successful invocation using the default human-readable output path appends a commercial promotion and directs the user to an external website. This output is unconditional and unrelated to the requested local worksheet analysis. It is not controlled by a dedicated opt-in argument. The behavior creates an output-manipulation channel in a trusted audit result. Although the code shown does not itself access the network or execute the linked content, it encourages users or supervising agents to leave the audited local workflow and enter a separate installation and payment process. This issue does not precisely match the enumerated attack categories and is therefore classified as `other: Forced Promotional Output`. ### Attack Path 1. A user runs the documented command without the `--json` option. 2. The local R&D expense analysis completes successfully. 3. The program unconditionally appends upgrade advertising to the result. 4. The output directs the user to an external website. 5. A user or automated agent may follow that website and enter the separate package installation and purchase workflow described by the project documentation. ### Impact Assessment The code does not directly gain operating-system privileges, execute remote content, or initiate payment. Its immediate scope is manipulation of the command's trusted output. The downstream impact depends on user or agent interaction. Following the promoted instructions can ...[truncated 207 chars]
Remediation
## Remediation Suggestions 1. Remove the unconditional promotion and external URL from normal result output. 2. If upgrade information must remain available, place it exclusively in static documentation or behind an explicit option such as `--show-upgrade-info`. 3. Keep analysis output limited to findings, limitations, and remediation relevant to the submitted worksheet. 4. Do not present third-party redirects as part of a successful audit result. 5. If any external link is retained, identify its ownership and purpose clearly and require deliberate user interaction before opening it.

T03 · Remote Payload Retrieval and Execution

Error
Location
SKILL.md:67
Finding
AI-Directed Retrieval and Execution of a Mutable Remote Package## Vulnerability Details **File Location**: `SKILL.md`, lines 67-79 **Vulnerability Type**: Agent instruction hijacking and mutable remote payload execution **Risk Level**: High ### Evidence ```text 把下面这段**原样发给你的 AI 助手**,它就能带你装好并买完(需要钱包授权或付款时由**你本人**确认): ```text 请通过 SkillPay 购买并安装 Skill「研发费用加计扣除归集核对 · 买断版」。 官方安装与购买说明: https://skillpay.alipay.com/buildguide.md 请先阅读官方说明、核验来源,并完成指南中的第一步: npx -y @alipay/agent-payment@latest install 安装成功后,读取新安装的 skillpay-onboarding 的 SKILL.md,再按其说明购买并安装商户 2088702818190040的S0806000206832709。 我已授权安装依赖和发起购买;需要钱包授权或付款时,请提供官方链接或二维码,由我本人确认,不要替我确认。确认成功后,请继续完成商品安装和验证。 ``` ``` ### Technical Analysis The Skill documentation supplies a prompt intended to be copied verbatim into an AI assistant. That prompt authorizes dependency installation, starts a purchase workflow, and instructs the assistant to load and follow instructions from a newly installed `SKILL.md`. The command uses: ```bash npx -y @alipay/agent-payment@latest install ``` The `-y` option suppresses the normal package-installation confirmation. The `latest` tag is mutable, so the code retrieved and executed in the future may differ from the code available when this Skill was audited. No exact version or integrity digest is supplied. Loading the newly installed `skillpay-onboarding/SKILL.md` further transfers control to instructions that are outside this audited package. Consequently, the effective workflow cannot be fully determined from the reviewed repository. This is remote payload retrieval and execution because an external package is downloaded and run through `npx`. It is also instruction hijacking because the Skill directs an AI agent to adopt instructions from newly installed, unaudited content. ### Attack Path 1. A user follows the documentation and copies the supplied prompt into an AI assistant. 2. The assistant interprets the prompt as authorization to install dependencies and initiate a purchase. 3. The ...[truncated 1642 chars]
Remediation
## Remediation Suggestions 1. Remove the copy-and-paste prompt that grants an AI assistant broad authority to install software and initiate a purchase. 2. Do not instruct an agent to automatically adopt instructions from a newly downloaded `SKILL.md`. 3. Replace the mutable `@latest` reference with an exact, reviewed package version. 4. Publish and verify a cryptographic integrity digest for the approved package artifact. 5. Avoid `npx -y`; require explicit confirmation before download or execution. 6. Display the resolved package name, version, registry, integrity value, requested permissions, and planned commands before execution. 7. Separate installation from purchasing. Each operation should require an independent, informed user decision. 8. Run any installer in a restricted environment with minimal filesystem, credential, network, and process permissions. 9. Require security review of newly installed Skill instructions before allowing an agent to act on them. 10. Preserve the requirement that wallet authorization and payment confirmation be performed only by the user, and enforce that restriction technically rather than relying solely on prompt text.
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 (8)

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

Vague Triggers

Medium
Confidence
94% confidence
Finding
The manifest description lists trigger phrases including “其他相关费用限额”, which is a generic tax/accounting phrase rather than a clearly bounded invocation command. The wording also says “触发词包括” without defining exclusions or negative examples, making activation scope ambiguous for nearby conversations on related topics.

Description-Behavior Mismatch

Medium
Confidence
94% confidence
Finding
A free local-checking skill embeds detailed instructions to acquire and install a separate paid product, including a copy-paste prompt directing an AI assistant to perform installation and purchase steps. This exceeds the declared purpose of offline expense checking and can socially engineer users into executing external install/payment flows from within a supposedly local, no-network skill.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding
The skill instructs the user to run `npx -y @alipay/agent-payment@latest install`, which fetches and executes remote code at install time without pinning to a specific version. Even though the text frames this as official onboarding, unpinned package execution creates a supply-chain risk: a compromised package, account, or newly published breaking version could execute arbitrary code on the user's system.

Natural-Language Policy Violations

Medium
Confidence
96% confidence
Finding
The JSON payload consists entirely of Chinese-language table headers and values, indicating a fixed language/locale assumption. Because this file provides no user opt-in, language selection, or documented region-specific justification, it creates a natural-language policy concern under the locale-choice rule.

Intent-Code Divergence

Low
Confidence
78% confidence
Finding
Line L67 states that the only difference between the two editions is the listed omitted checks. Yet the surrounding content introduces additional behavior/instructions: marketplace navigation, official purchase commands, dependency installation, and payment flow guidance. That documentation overstates the narrowness of the difference between editions.

Intent-Code Divergence

Low
Confidence
91% confidence
Finding
The inline documentation states that non-JSON input is treated as '直接粘贴的合同全文', which contradicts the surrounding manifest and code intent that this skill operates on R&D expense collection tables with headers. The implementation actually wraps non-JSON input as generic text for the checking engine, but the comment's example points to a different document type and therefore misstates the skill's intended input semantics.

Static analysis

No suspicious patterns detected.