T09 · Insecure Skill Coding Practices
- Location
SKILL.md:192- Finding
Purchases and Points Payments Lack an Explicit Transaction Approval Gate
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:145-151andSKILL.md:192-196
Vulnerability Type: Missing authorization checkpoint for financially consequential actions
Risk Level: HighVulnerable Code Snippets
SKILL.md:145-151:markdown Methods: - `points` — instant settlement, fully automated - `stripe` — returns `paymentUrl`, show to user to complete card payment - `coinbase` — returns `paymentUrl`, show to user to complete crypto payment After stripe/coinbase, poll order status to confirm payment.SKILL.md:192-196:markdown 4. Pay: `POST /api/agent/pay` with orderNumber ### Quick buy (autonomous — one call) 1. `POST /api/agent/shopping` with `autonomous: true` — AI picks and orders automatically 2. Pay: `POST /api/agent/pay` with orderNumber from responseTechnical Analysis
The documented autonomous workflow allows the remote service to select products and create an order, after which the agent is instructed to submit the resulting order number for payment. The
pointspayment method performs instant, fully automated settlement.The Skill does not require a transaction-specific user confirmation immediately before order creation or payment. In particular, it does not require the agent to present and confirm the final products, quantities, total price, shipping address, bargain quote, and payment method.
This violates the security principle that financially consequential and potentially irreversible operations must require explicit approval based on the final transaction details. General permission to shop should not be treated as authorization for an unspecified purchase or payment.
Stripe and Coinbase payments still require the user to visit an external payment URL, limiting automatic settlement for those methods. The directly documented automatic financial risk applies primarily to account points.
Attack Path
- The authenticated agent receives ...[truncated 1473 chars]
- Remediation
View remediation
Remediation Suggestions
- Require explicit, transaction-specific user confirmation immediately before every order is created.
- Require a separate explicit confirmation immediately before any payment or points settlement.
- Present the complete final transaction summary before confirmation, including:
- Product names and identifiers
- Quantities
- Unit and total prices
- Discounts or bargain quotes
- Shipping address
- Payment method
- Points or currency amount to be charged
- Disable
autonomous: trueby default. Permit it only after explicit opt-in with clearly defined product, quantity, price, and spending constraints. - Do not interpret general requests such as “buy pet food” as authorization to settle payment.
- Add configurable per-order and cumulative spending limits for autonomous operations.
- Require reconfirmation whenever the product, quantity, price, address, or payment method changes after approval.
- Use idempotency keys for order and payment requests to prevent duplicate charges caused by retries.
- Return a non-settling payment preview before committing points and require a distinct confirmed commit operation.
- Record an audit trail containing the displayed transaction details and the corresponding user approval.
