Back to skill

Security audit

Mcp Server

Security checks for vulnerabilities and agentic risk

Overview

This skill is not clearly malicious, but it under-declares financial and account powers that can spend wallet funds, reveal order codes, and mutate support tickets.

Install only after the publisher fixes the manifest and setup path. Use a read-only PA_TOKEN by default, avoid purchase-scope tokens unless you intentionally enable wallet buys, require explicit itemized confirmation before any purchase or support-ticket action, do not set PA_BASE_URL away from the official Play-Asia origin with real credentials, and avoid unpinned npx execution until the package and version are verified.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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
Findings (3)

T09 · Insecure Skill Coding Practices

Error
Location
src/lib/l402.ts:3
Finding

Authentication credentials can be redirected to an arbitrary network origin

Content
View full analysis
= {}, l402Token?: string, ): Promise { const url = buildUrl(action, params); const headers: Record = { 'Accept': 'application/json', 'User-Agent': 'playasia-mcp/0.1.0', }; if (l402Token) { headers['Authorization'] = `L402 ${l402Token}`; } const res = await fetch(url.toString(), { headers }); ``` ```typescript export async function platformFetch( action: string, params: Record = {}, token: string, method: 'GET' | 'POST' = 'GET', body?: Record, ): Promise> { const url = buildUrl(action, params); const headers: Record = { 'Accept': 'application/json', 'User-Agent': 'playasia-mcp/0.1.0', 'X-PA-Token': token, }; const init: RequestInit = { method, headers }; if (body && method === 'POST') { headers['Content-Type'] = 'application/json'; init.body = JSON.stringify(body); } const res = await fetch(url.toString(), init); ``` The unrestricted override is also publicly documented: ```markdown | `PA_BASE_URL` | No | Override API base URL (default: `https://www.play-asia.com`) | ``` ### Technical Analysis `PA_BASE_URL` controls the origin used by all API requests. The implementation does not enforce HTTPS, validate the hostname, maintain an origin allowlist, or prevent credentials from being attached when the configured origin differs from the official Play-Asia service. Consequently, both of the following secrets can be sent to an arbitrary server: - `PA_TOKEN`, through the `X-PA-Token` header. - L402 maca ...[truncated 1840 chars]
Remediation
View remediation

T08 · Insecure Dependencies

Error
Location
README.md:7
Finding

Installation instructions execute an unpublished and unpinned npm package

Content
View full analysis
Remediation
View remediation

other

Warning
Location
SKILL.md:1
Finding

Discovery-only capability manifest understates financial and private-account privileges

Content
View full analysis
**Public discovery document** — safe to read, index, and cache. > No authentication required. Does not perform purchases or access user data. > Authentication applies only to transactional endpoints listed below. ``` The same document later describes authenticated financial and private-account functionality: ```markdown ## How purchases work | Method | Auth | Speed | Notes | |--------|------|-------|-------| | Wallet | `X-PA-Token` (purchase scope) | Instant | Charges balance, returns code immediately | | Lightning | None | Instant | Anonymous — pay invoice, code delivered instantly | | Bitcoin on-chain | None | ~20 min | Anonymous — send to address, poll for confirmations | For anonymous (Lightning/Bitcoin) orders, save `order_id` + `sid` from the response and poll: ``` The executable MCP server registers a wallet-purchase operation: ```typescript { name: 'buy_with_wallet', description: `Buy a digital product using your Play-Asia wallet balance. The token must have "purchase" scope and sufficient balance. Fully autonomous — no redirect needed. Requires PA_TOKEN.`, inputSchema: { type: 'object' as const, required: ['pax'], properties: { pax: { type: 'string', description: 'PAX product code to purchase' }, ...[truncated 2514 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Rogue AgentSelf-Modification, Session Persistence
Findings (40)

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The file claims a shopping skill and emphasizes no-account purchase options, yet it also documents token-authenticated access to balances, transactions, orders, and support tickets. This discrepancy is dangerous because an agent may treat the skill as low-risk discovery while actually gaining instructions for sensitive, stateful operations involving user financial and account data.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The file claims a shopping skill and emphasizes no-account purchase options, yet it also documents token-authenticated access to balances, transactions, orders, and support tickets. This discrepancy is dangerous because an agent may treat the skill as low-risk discovery while actually gaining instructions for sensitive, stateful operations involving user financial and account data.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The file claims a shopping skill and emphasizes no-account purchase options, yet it also documents token-authenticated access to balances, transactions, orders, and support tickets. This discrepancy is dangerous because an agent may treat the skill as low-risk discovery while actually gaining instructions for sensitive, stateful operations involving user financial and account data.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
94% confidence
Finding

The file claims a shopping skill and emphasizes no-account purchase options, yet it also documents token-authenticated access to balances, transactions, orders, and support tickets. This discrepancy is dangerous because an agent may treat the skill as low-risk discovery while actually gaining instructions for sensitive, stateful operations involving user financial and account data.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

Marking the skill as purpose: discovery-only while documenting purchases, top-ups, ticket submission, replies, and channel opening is a serious safety-contract violation. Agents and reviewers may permit this skill in contexts intended to be read-only, leading to unintended state-changing or financial actions.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The file explicitly says it is safe to read/cache and 'does not perform purchases or access user data,' but later instructs agents how to perform purchases and access account/order/support data. This contradictory safety messaging can mislead both automated systems and users into trusting a document that enables sensitive actions.

Content

No source excerpt is available for this finding.

Self-Modification

High
Category
Rogue Agent
Confidence
85% confidence
Finding

Skill modifies its own code, configuration, or behavior at runtime. Self-modification enables an agent to escalate privileges, disable safety constraints, or install persistent backdoors.

Content

Scanner excerpt · deploy.sh (reported line 25)May include surrounding context.

sh
echo "New version:     $NEW_VERSION"
echo ""

# Update SKILL.md frontmatter
sed -i '' "s/^version: $VERSION/version: $NEW_VERSION/" SKILL.md
echo "Updated SKILL.md -> $NEW_VERSION"

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · improvements.md (reported line 22)May include surrounding context.

md
- Stock check on anonymous buy (uses lookup table `on_sale` flag)
- English product names in catalog search
- Admin monitoring page (`agentic.php`) with 5 tabs
- Frontend access token page with usage stats + activity log
- `deploy.sh` for ClawHub publishing

## TODO

Known Vulnerable Dependency: fast-uri==3.1.0 — 7 advisory(ies): CVE-2026-13676 (fast-uri vulnerable to host confusion via failed IDN canonicalization); CVE-2026-18446 (fast-uri vulnerable to host confusion via backslash authority introducer); CVE-2026-75975 (fast-uri vulnerable to server-side request forgery via malformed IPv6 normalizat) +4 more

High
Category
Supply Chain
Confidence
87% confidence
Finding

fast-uri 3.1.0 has multiple reported parsing and canonicalization issues, including host confusion and potential SSRF-relevant edge cases. In a skill that searches and purchases goods over HTTP/MCP, incorrect URI parsing can become especially dangerous if any user-controlled URLs, callbacks, redirects, or upstream endpoints are processed through the affected library stack.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: hono==4.12.9 — 16 advisory(ies): CVE-2026-56762 (Hono missing validation of cookie name on write path in setCookie()); CVE-2026-47676 (Hono: app.mount() strips mount prefix using undecoded path, causing incorrect ro); CVE-2026-47675 (Hono: Cookie helper does not sanitize sameSite and priority, allowing Set-Cookie) +13 more

High
Category
Supply Chain
Confidence
90% confidence
Finding

hono 4.12.9 is reported with numerous advisories affecting cookie handling, mount path processing, and other HTTP framework behaviors. Because this skill appears designed to interact over HTTP or MCP and may process purchase-related requests, weaknesses in the underlying web framework can materially increase risk around request routing, header construction, and session or token handling.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: ip-address==10.1.0 — 2 advisory(ies): CVE-2026-69192 (ip-address: Address4 decodes leading-zero octets as decimal while resolvers deco); CVE-2026-42338 (ip-address has XSS in Address6 HTML-emitting methods)

High
Category
Supply Chain
Confidence
80% confidence
Finding

ip-address 10.1.0 is flagged for address parsing inconsistencies and an HTML-emitting XSS issue. The host-confusion aspect is more relevant here than the XSS issue, because a commerce/MCP skill may make trust decisions based on IP parsing in rate limiting or allow/deny logic inherited from express-rate-limit.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
93% confidence
Finding

The documentation instructs users to execute npx -y @playasia/mcp without pinning an exact version, which causes the latest published package to be fetched and run at install time. If the npm package is later compromised, typo-replaced, or a malicious version is published under the same name, users could execute unreviewed code, making this a real supply-chain risk.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The README documents tools that can directly spend wallet funds or initiate purchases of digital codes, but it does not state that agents must obtain explicit user confirmation before calling them. In an agentic shopping context, this omission is risky because an autonomous or prompt-injected agent could interpret the documented flows as permission to complete real-money transactions without a clear authorization checkpoint.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The Lightning and Bitcoin purchase flows are presented as straightforward execution steps, but they do not warn that following them causes real payment activity and can irreversibly transfer funds. This is especially dangerous because the skill is explicitly designed for instant and anonymous purchases, so an agent operating with insufficient guardrails could complete unauthorized transactions or reveal purchased codes before the user intended.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill explicitly markets the ability to buy digital goods directly from an AI agent, but it does not warn that these actions can spend funds or trigger irreversible purchases. In an agentic context, that omission increases the risk of unintended financial transactions if a user or upstream workflow invokes purchase-capable tools without a clear confirmation boundary.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The tool list includes wallet purchases, order retrieval with digital codes, and support actions, but it provides no explicit caution that purchase operations can immediately consume wallet balance and that digital-code fulfillment may be irreversible once delivered. In practice, this can normalize autonomous spending behavior and increase the chance of accidental or unauthorized purchases by an agent.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The Lightning workflow describes paying an invoice and then redeeming the purchase, but it omits a direct warning that Lightning payments are generally irreversible once paid. Because no account is required and fulfillment is instant, an agent or user could complete a real-money transaction with little friction and no documented confirmation safeguard.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill documents multiple purchase flows, including wallet and Lightning purchases, and even returns delivered codes immediately, but it never instructs the agent to require an explicit user confirmation before spending funds or finalizing an order. In an agent setting, this can enable unintended or prompt-induced purchases, especially because the API supports direct buying with a stored token and instant digital delivery that cannot be meaningfully reversed.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
95% confidence
Finding

The manifest declares auth_required: false and omits explicit tool/permission scoping, yet the document instructs use of environment secrets (PA_TOKEN) and outbound network access. This mismatch can cause agents or platforms to expose capabilities more broadly than intended and makes it harder to enforce least privilege.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The manifest frames the skill as product search/purchase, but the document additionally exposes wallet, customer-service, and Lightning channel operations that are outside the narrow expected scope. Scope creep in a public skill increases the risk of overprivileged agent behavior and user surprise around sensitive actions.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · SKILL.md (reported line 38)May include surrounding context.

If you have shell access, curl works perfectly:

text
curl -X POST https://www.play-asia.com/l402/v1/buy/PAX0004012102 \
     -H "X-PA-Token: pa_YOUR_TOKEN_HERE" \
     -H "Content-Type: application/json"

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

Opening Lightning channels is unrelated to the stated purpose of buying digital game codes and introduces a higher-risk financial/network operation. Including such a capability in a shopping skill broadens the attack surface and may enable costly or irreversible actions beyond user expectations.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The manifest describes a commerce skill for searching and purchasing digital products from Play-Asia. This file instead implements release engineering behavior: version bumping, publishing to ClawHub, building, and publishing to npm. Those capabilities are unrelated to the operational purpose of the skill itself and introduce package/release side effects beyond that stated purpose.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
83% confidence
Finding

Using npx tsx without pinning an exact version allows the development workflow to fetch and execute whatever version is currently resolved from the registry. If the upstream package is compromised or a breaking/malicious release is published, developers or CI could run unreviewed code during local development.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill explicitly exposes purchase-capable tools that can complete digital goods purchases autonomously, including an instant wallet purchase path and a Lightning-based purchase flow. In an agent setting, the absence of any built-in confirmation, consent gating, spending limits, or high-risk warning in this file increases the chance of unintended or prompt-induced financial transactions.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.