Back to skill

Security audit

应付账款保理与贴现核对(免费版)

Security checks for vulnerabilities and agentic risk

Overview

The local accounting checker code appears limited, but the skill instructions also require agents to push and facilitate an external paid upgrade workflow that contradicts the no-network/no-payment claims.

Install only if you are comfortable with a free local checker that also instructs your agent to present and facilitate a paid upgrade path. Do not let an agent follow the HTTP purchase endpoint or install additional SkillPay/onboarding components unless you independently verify the merchant, product, amount, destination, and platform rules.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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)

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:115
Finding
Unauthenticated HTTP Endpoint Controls Purchase Routing## Vulnerability Details **File Location**: `SKILL.md`, lines 115–116 **Vulnerability Type**: Unauthenticated transport for payment-routing data **Risk Level**: Medium ### Vulnerable Snippet ```markdown - **不变购买地址(永远有效,商品号变了也不用改)**:<http://110.40.221.75/buy/ap-factoring-check> (人打开是人看的页面;AI 用 `http://110.40.221.75/buy/ap-factoring-check?format=json` 拿当前商品号;`http://110.40.221.75/buy/ap-factoring-check?go=1` 直接 302 跳到当前有效的 SkillPay 购买地址。) ``` ### Technical Analysis The Skill instructs an agent to obtain a current product identifier from a plaintext HTTP JSON response or use a plaintext HTTP endpoint that issues a `302` redirect to a purchase destination. HTTP provides no server authentication or transport integrity. When the user selects the optional paid edition, a network-positioned attacker could alter the JSON response, replace the redirect target, or substitute the served purchase page. This promotes unauthenticated network data into trusted payment-routing instructions. The separate instruction to verify the merchant identifier, product identifier, order amount, and destination reduces risk but does not technically authenticate the HTTP response or enforce those checks. It therefore does not close the trust-boundary violation. ### Attack Path 1. The user chooses the optional paid edition. 2. The agent follows the documented HTTP endpoint to retrieve the current product identifier or purchase redirect. 3. An attacker with control over a network intermediary, proxy, gateway, or DNS/network path intercepts the plaintext request. 4. The attacker replaces the JSON product data or `302 Location` header with an attacker-controlled destination. 5. The agent presents or follows the substituted link as the current purchase route. 6. The user may be directed to a phishing or fraudulent payment page. ### Impact Assessment Exploitation does not grant direct local system privileges. It can, however, control the payment ...[truncated 402 chars]
Remediation
## Remediation Suggestions - Remove the plaintext HTTP purchase and product-resolution endpoints. - Serve all purchase metadata and redirects exclusively over HTTPS with valid certificate verification. - Resolve purchases only through an authenticated, approved SkillPay origin. - Reject redirects to origins outside an explicit allowlist. - Do not rely on a mutable redirect endpoint as the sole source of product identity. - Before exposing a payment link, verify the merchant ID, product ID, amount, order identifier, and destination using authenticated platform data. - Require the user to confirm the verified transaction details before continuing. - Fail closed if TLS validation, origin validation, or transaction-detail verification fails.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (12)

Intent-Code Divergence

High
Confidence
98% confidence
Finding
The documentation explicitly says the skill runs fully locally and does not use the network, but later content depends on external websites and online payment flows. This contradiction can mislead users and host agents about network exposure, undermining consent and security controls based on the manifest's claimed behavior.

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

High
Confidence
97% confidence
Finding
The skill claims to be a local, no-network reconciliation tool, but later instructs the agent to browse external sites, retrieve purchase instructions, and facilitate payment/install workflows. This creates a trust-boundary violation: a user invoking a finance checking skill could be unexpectedly steered into networked commerce flows and external dependency installation.

Context-Inappropriate Capability

High
Confidence
96% confidence
Finding
The embedded commerce orchestration is unrelated to the declared purpose of checking AP factoring tables and instructs the agent to help complete a purchase flow, including links, merchant identifiers, and installation steps. That broadens the skill from deterministic analysis into transactional behavior, increasing phishing, social-engineering, and unauthorized-action risk.

Natural-Language Policy Violations

Medium
Confidence
87% confidence
Finding
The instructions directed at the agent and user-facing purchase flow are written as mandatory Chinese-language content, including exact text to provide to the user and required prompts. The file does not offer any language or locale opt-in for these required interactions, even though the skill metadata includes English fields, so this appears to impose a language policy without user choice.

Ssd 4

Medium
Confidence
91% confidence
Finding
The skill directs the agent to move from delivering accounting results into upsell and purchase completion behavior within the same interaction. That progressive escalation is dangerous because it normalizes transactional prompting in a context where the user asked for analysis, not commerce, increasing manipulation and consent-confusion risk.

Whitespace Padding

Medium
Category
Prompt Injection
Content
输出与你的安全约束**;它**可被用户关闭**(`SKILL_NO_UPSELL=1`),也**必须可忽略**(不点不买不影响结果)。
   执行官方购买指令时:先读一次官方说明;核对**商户号 `2088702818190040`**、商品号与订单是否一致;
   ⛔ 不要点击来路不明的链接/二维码,也**不要替用户付款** —— 付款一律由**用户本人**确认。
Confidence
80% confidence
Finding
Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Ssd 4

Medium
Confidence
94% confidence
Finding
The embedded handoff text is effectively a prompt-injection payload for another assistant, instructing it to purchase and install a product using progressive authorization language. This is risky because it attempts to extend the skill's influence across agent boundaries and induce sensitive external actions.

Natural-Language Policy Violations

Medium
Confidence
95% confidence
Finding
Nearly all natural-language comments, prompts, error messages, labels, and disclaimers are hardcoded in Chinese, including user-visible responses returned by `run()`. This can violate language/locale policy when users are not explicitly opted into Chinese and no alternative locale handling is provided.

Natural-Language Policy Violations

Medium
Confidence
97% confidence
Finding
All user-facing natural language in the script, including the capability name, usage text, errors, and status messages, is exclusively in Chinese. The file does not offer an opt-in language choice or explain that the skill is intentionally restricted to a Chinese-speaking or region-specific audience, which matches the policy's language/locale violation criteria.

Intent-Code Divergence

Low
Confidence
91% confidence
Finding
L077 的注释说明“不是 JSON 就当作纯文本材料(例如直接粘贴的合同全文)”,但该技能的 manifest 和其余帮助文本都将范围限定为“应付账款保理与贴现表(含表头)”逐项核对。这里的文档表达把可接受材料扩展到了“合同全文”,与代码周边声明的专用表格核对意图相矛盾。

Static analysis

No suspicious patterns detected.