Back to skill

Security audit

爽文模拟器V1.0虾舍出品

Security checks for vulnerabilities and agentic risk

Overview

This is a coherent paid game launcher, but it can install a remotely returned paid skill package without enough verification or explicit install consent.

Install only if you trust the operator and fulfillment service. Before paying or installing the returned package, verify the package identity, source, publisher, version, digest or signature, and requested permissions; do not treat a successful payment as proof that the delivered skill is safe.

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 (1)

T03 · Remote Payload Retrieval and Execution

Error
Location
SKILL.md:94
Finding
Unverified Remote Skill Package Retrieval and Automatic Installation## Vulnerability Details **File Location**: `SKILL.md:94-99`; supporting flow in `references/alipay-paid-access.md:59-65` **Vulnerability Type**: Remote payload retrieval and execution **Risk Level**: Critical **Vulnerable code in `SKILL.md:94-99`:** ```markdown When fulfillment returns a paid Skill package: 1. Present the package name, version, and install instruction. 2. If the environment can install Skills directly, install it. 3. If not, provide the exact package URL or slug returned by the MCP. 4. Then tell the user to invoke the installed paid Skill to start. ``` **Supporting code in `references/alipay-paid-access.md:59-65`:** ```markdown 1. Call the merchant payment MCP/tool to create the order. 2. If a cashier URL is returned, pass the complete URL to the Alipay payment skill/MCP. 3. Wait for payment completion. 4. Query merchant order status or receive successful payment result. 5. Call `paid_skill_fulfill` or the operator fulfillment endpoint. 6. Return the real Skill package install URL/slug. 7. Only then start or install the full scenario. ``` ### Technical Analysis The launcher directs the Agent to retrieve a Skill package from an external fulfillment MCP or operator-controlled endpoint and install it automatically when direct installation is supported. The remotely returned package is not part of the audited project and can therefore change after this launcher has been reviewed. The workflow does not require any of the following controls before installation: - An allowlisted registry or download origin - Cryptographic verification of the publisher - A signed package manifest - A pinned package digest - Validation that the returned package ID and version correspond to the purchased SKU - Inspection of the package's instructions, scripts, permissions, or tool access - Explicit user approval after displaying the package origin and requested privileges A signed or short-lived d ...[truncated 2058 chars]
Remediation
## Remediation Suggestions 1. Restrict package retrieval to a fixed HTTPS registry and an explicit allowlist of trusted origins. Reject redirects to unapproved domains. 2. Require every package to include a cryptographically signed manifest. Verify the signature against a locally pinned publisher key before installation. 3. Bind fulfillment metadata to the transaction, including the SKU, package ID, version, publisher, digest, and expected permissions. 4. Pin an approved SHA-256 digest for each package version and verify the complete downloaded artifact before extraction or installation. 5. Reject fulfillment responses whose package identity, version, digest, or publisher does not match the merchant-side SKU mapping. 6. Inspect package contents before activation. Block executable scripts, undeclared tools, excessive permissions, path traversal entries, symbolic-link escapes, and unexpected nested downloads. 7. Display the verified publisher, source domain, version, digest, and requested permissions to the user, then require explicit confirmation before installation. 8. Install downloaded packages in a sandbox with least-privilege tool access. Do not inherit payment credentials, merchant API tokens, or unrelated session secrets. 9. Separate payment confirmation from package trust decisions. A valid payment must never imply that a returned package is safe. 10. Maintain an append-only audit log of fulfillment responses, package digests, signature results, installation decisions, and activated versions. 11. Remove the automatic-installation instruction until all authenticity and integrity checks are implemented. Default to rejecting unverifiable packages rather than providing or invoking them.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (12)

Vague Triggers

Medium
Confidence
95% confidence
Finding
The trigger phrases are broad and overlap with ordinary conversation, making accidental invocation plausible. In this skill, unintended activation is more dangerous because invocation can steer users into a payment flow and package-installation path they did not explicitly request.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The skill instructs the agent to create payment orders and install returned packages, but it does not require a strong, explicit consent and warning flow for charges or installation effects. In a conversational agent, this can lead to surprise billing, social engineering, or unsafe installation of externally returned packages/URLs.

Natural-Language Policy Violations

Medium
Confidence
98% confidence
Finding
The Start Fast instructions explicitly say "Start in Chinese immediately," which imposes a language choice regardless of the user's preferred language. The file does not offer a language option or document a justified locale restriction.

Intent-Code Divergence

Medium
Confidence
88% confidence
Finding
The file says the full turn loop belongs to the paid skill, yet later directs the launcher to track scenario runtime state. This inconsistency creates an unsafe boundary where the launcher may accumulate premium narrative state or hidden variables before entitlement is confirmed, undermining the access gate.

Description-Behavior Mismatch

Medium
Confidence
91% confidence
Finding
The skill is presented as a paid launcher/catalog, but it also instructs the agent to maintain and export detailed gameplay runtime state. That expands the effective scope from storefront to scenario engine, increasing the chance of leaking paid content, hidden state, or player/session data during handoff, debugging, or export flows.

Natural-Language Policy Violations

Medium
Confidence
89% confidence
Finding
The display name, short description, and default prompt all position the skill as a Chinese-language experience, and the prompt specifically directs use of a Chinese scenario package. There is no indication that users can opt into another language or that the locale restriction is required for a documented regional purpose.

Vague Triggers

Medium
Confidence
96% confidence
Finding
The skill enables implicit invocation without any activation constraints, allowing the agent to route users into a paid scenario workflow based on broad contextual matches rather than explicit consent. In this skill’s context—commercial content involving browsing, buying, unlocking, and starting paid scenarios—this increases the risk of unintended activation, deceptive upsell behavior, and user confusion about whether they intentionally invoked the skill.

Vague Triggers

Medium
Confidence
91% confidence
Finding
The activation text says to use this whenever the user wants to "buy, unlock, pay for, or enter a paid scenario," which is a broad natural-language condition rather than a specific trigger scope. It does not define boundaries or negative examples, so ordinary requests about payment or access could unintentionally invoke this skill.

Natural-Language Policy Violations

Medium
Confidence
94% confidence
Finding
The file instructs the agent to present user-facing payment text in Chinese, and a second required fallback message is also only provided in Chinese. This imposes a specific language on users without documenting a locale requirement or offering an alternative language choice.

Natural-Language Policy Violations

Medium
Confidence
93% confidence
Finding
The fallback text shown when no payment tool is available is written solely in Chinese, with no instruction to localize based on the user's preference. Because the file later references international users, the lack of language choice appears to be an unjustified locale restriction rather than a region-specific exception.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
- refuses to lie,
- shares last resource,
- saves a piece of evidence,
- protects a child or elder without asking for reward.

Payoff:
Confidence
75% confidence
Finding
Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Natural-Language Policy Violations

Low
Confidence
88% confidence
Finding
The scenario titles and descriptions from L07 onward are presented only in Chinese, while the file provides no indication that language selection is optional or region-specific. Under the policy rule, forcing a specific language without user opt-in is a natural-language policy concern.

Static analysis

No suspicious patterns detected.