Back to skill

Security audit

Payment Link Reader

Security checks for vulnerabilities and agentic risk

Overview

This skill is a disclosed GStable payment-link lookup tool, with routine npm supply-chain considerations but no hidden or destructive behavior found.

Before installing, understand that payment link IDs or URLs you provide will be sent to the GStable API, or to whatever host is configured in GSTABLE_API_BASE_URL. Prefer the npm run get-link workflow after npm install, keep dependencies updated, and avoid directly executing the npx shebang path unless you trust your npm resolution environment.

Vulnerability Patterns
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (13)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
91% confidence
Finding

The skill declares installation and runtime behavior that uses environment access and outbound network calls, but it does not declare any tool scope or permissions boundary in the manifest. This can cause agents or users to run the skill without clear visibility into its capabilities, weakening least-privilege controls and making unintended data egress more likely.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding

The shebang uses #!/usr/bin/env npx tsx, which can cause execution through an unpinned package/tool resolution path. If tsx is fetched or resolved from an untrusted or compromised source, arbitrary code could run before the script itself, creating a supply-chain execution risk.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding

The usage example instructs users to run npx tsx scripts/getPaymentLink.ts <link_id>, which normalizes execution through an unpinned tool. This increases supply-chain exposure because npx may install or resolve a package version at runtime, potentially executing a malicious or unexpected release.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding

A second example again promotes npx tsx without version pinning, reinforcing an unsafe execution pattern for operators or downstream automation. In a skill intended for assistants and integrations, documentation is effectively part of the attack surface because users may copy-paste commands directly.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The skill is designed to send user-supplied payment link IDs to an external GStable API, but the documentation does not warn users that their input will be transmitted off-platform. Even if the link ID is not highly sensitive by itself, the omission reduces informed consent and can expose user activity or business context to a third party.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
91% confidence
Finding

The manifest metadata points the homepage to a zh-Hans documentation URL, which hard-codes a Simplified Chinese locale. The file does not indicate that this locale is optional, user-selectable, or required for a region-specific purpose.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
90% confidence
Finding

The API reference links to a zh-Hans documentation path, which imposes a language choice in the skill documentation. Under SQP-3, forced locale selection is a policy concern unless the file offers a language choice or explains the regional constraint.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: esbuild==0.27.3 — 1 advisory(ies): GHSA-g7r4-m6w7-qqqr (esbuild allows arbitrary file read when running the development server on Window)

Low
Category
Supply Chain
Confidence
95% confidence
Finding

The lockfile pins esbuild to 0.27.3, and the referenced advisory indicates a real vulnerability affecting esbuild's development server on Windows, allowing arbitrary file read in that specific mode. In this skill, esbuild appears only as a dev dependency transitively used by tsx, so the issue is real but its exploitability is limited unless developers run the vulnerable dev server workflow on Windows.

Content

No source excerpt is available for this finding.

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
40% confidence
Finding

Dependencies lack version pinning, allowing potential malicious package updates. Consider pinning versions.

Content

Scanner excerpt · package.json (reported line 8)May include surrounding context.

json
"get-link": "tsx scripts/getPaymentLink.ts"
  },
  "devDependencies": {
    "@types/node": "^20.10.0",
    "tsx": "^4.19.0",
    "typescript": "^5.3.0"
  }

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
40% confidence
Finding

Dependencies lack version pinning, allowing potential malicious package updates. Consider pinning versions.

Content

Scanner excerpt · package.json (reported line 9)May include surrounding context.

json
},
  "devDependencies": {
    "@types/node": "^20.10.0",
    "tsx": "^4.19.0",
    "typescript": "^5.3.0"
  }
}

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
40% confidence
Finding

Dependencies lack version pinning, allowing potential malicious package updates. Consider pinning versions.

Content

Scanner excerpt · package.json (reported line 10)May include surrounding context.

json
"devDependencies": {
    "@types/node": "^20.10.0",
    "tsx": "^4.19.0",
    "typescript": "^5.3.0"
  }
}

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
87% confidence
Finding

The file’s header points users to a Simplified Chinese documentation path (/zh-Hans/...) as the sole referenced documentation. This can impose a specific language/locale on users without any opt-in or explanation, which matches the language/locale policy concern for natural-language content.

Content

No source excerpt is available for this finding.

Static analysis

Detected: suspicious.env_credential_access

Environment variable access combined with network send.

Critical
Code
suspicious.env_credential_access
Location
scripts/getPaymentLink.ts:16