Back to skill

Security audit

Solana Payments

Security checks for vulnerabilities and agentic risk

Overview

This payment-skill guide is coherent overall, but it under-discloses important recurring-payment authority, URL privacy, and checkout-domain risks.

Review this carefully before installing or following it. Use it only after independently verifying the Tributary/Lando domains, SDK package names, and fixed gateway public key; require explicit customer opt-in before autoRenew; avoid putting personal data or secrets in tracking IDs, memos, line items, or URLs; and document cancellation and revocation paths for recurring payments.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • 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
Findings (3)

T08 · Insecure Dependencies

Warning
Location
skill.md:22
Finding

Unpinned and Inconsistent Payment SDK Dependencies

Content
View full analysis
Remediation
View remediation

T05 · Unauthorized Access and Privilege Escalation

Error
Location
skill.md:364
Finding

Mandatory Third-Party Gateway Can Trigger Recurring Payments

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
skill.md:116
Finding

Subscription and Customer-Linked Metadata Exposed in Encoded Checkout URLs

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • 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
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (4)

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill documents conflicting checkout domains and base URL behavior, showing both lando.tributary.so/# and checkout.tributary.so/subscribe/{encoded_data} as the effective checkout destination. In a payments flow, domain confusion is security-relevant because integrators may redirect users to the wrong host, weaken origin validation, or normalize unsafe handling of payment URLs that could enable phishing or broken payment flows.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill explains that subscription parameters are embedded in Base64URL-encoded checkout URLs and on-chain memo/tracking fields, but does not warn that these values are merely encoded, not secret, and may be logged, shared, cached, or exposed in browser history and analytics. Because tracking IDs, line items, and memo-related business data can reveal customer identities or transaction context, this omission creates meaningful privacy and integrity risk.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill encourages enabling autoRenew for recurring plans but does not require a prominent disclosure that this authorizes ongoing recurring charges. In a payment/subscription context, missing consent language is dangerous because users or downstream agents may set up renewals without clear authorization, creating financial harm, disputes, and compliance risk.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
87% confidence
Finding

The document says callers may provide a custom memo, but later states the on-chain memo is stored as a fixed tributary:payment:{trackingId} value. This inconsistency can cause developers to place sensitive or audit-relevant data in memo under false assumptions about what is actually recorded, undermining integrity, troubleshooting, and privacy expectations.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.