T05 · Unauthorized Access and Privilege Escalation
- Location
SKILL.md:42- Finding
Full-Privilege Stripe Secret Key Is Encouraged for Read-Only Functionality
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This Stripe monitoring skill is mostly purpose-aligned, but it asks users to handle highly sensitive Stripe access in ways that are broader and less controlled than a read-only monitor needs.
Review before installing. Use only a restricted read-only Stripe key, avoid putting a full live secret key in the agent environment or config, and do not enable Telegram summaries, automatic alerts, or webhooks unless the destination is private and you are comfortable sending sensitive revenue and customer-related details there.
SKILL.md:42Full-Privilege Stripe Secret Key Is Encouraged for Read-Only Functionality
SKILL.md:97Stripe Secret Is Exposed Through Curl Process Arguments
SKILL.md:253Sensitive Stripe Information May Be Forwarded to Telegram Without Data Minimization
The README explicitly suggests sending a daily Stripe summary to Telegram, which transmits sensitive business data such as revenue, failed payments, and subscription activity to a third-party messaging platform. Without a prominent warning, scope limitation, or guidance to redact sensitive fields, operators may unknowingly expose financial and customer-related data outside Stripe and the local agent environment.
The README states the skill 'reacts immediately (without being asked)' to events like failed payments, new subscriptions, and cancellations. That kind of broad autonomous triggering can cause unintended invocation and unsolicited disclosure of sensitive Stripe events into agent conversations or connected notification channels, especially if the runtime context is shared or loosely scoped.
The documentation contradicts itself by calling the skill read-only while recommending use of a full-access secret key. This creates a privilege mismatch: the operational behavior may be read-only today, but exposure of the credential or abuse by adjacent components would enable write actions in Stripe.
The skill is explicitly described as read-only, yet it tells users that a full-access Stripe secret key is acceptable. If the skill, surrounding agent, or any future modification misuses that key, it could perform destructive or financial actions well beyond monitoring, violating least-privilege and increasing blast radius.
The skill encourages scheduled delivery of revenue summaries to Telegram without warning that business metrics, customer/payment context, and account status may be transmitted to a third-party messaging platform. This can cause unintended data disclosure, especially if chat recipients, bot configuration, or message retention are not tightly controlled.
The documentation states the skill is read-only, yet later sections describe webhook handling and sending summaries/alerts to Telegram. That mismatch can mislead users about the skill's real behavior and risk profile, causing them to approve or deploy it without understanding that it can transmit business data externally and rely on a public endpoint.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
All Stripe API calls use HTTP Basic auth — key as username, empty password:
curl -s -u "$STRIPE_KEY:" "https://api.stripe.com/v1/..."
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
All Stripe API calls use HTTP Basic auth — key as username, empty password:
curl -s -u "$STRIPE_KEY:" "https://api.stripe.com/v1/..."
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
All Stripe API calls use HTTP Basic auth — key as username, empty password:
curl -s -u "$STRIPE_KEY:" "https://api.stripe.com/v1/..."
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
All Stripe API calls use HTTP Basic auth — key as username, empty password:
curl -s -u "$STRIPE_KEY:" "https://api.stripe.com/v1/..."
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
All Stripe API calls use HTTP Basic auth — key as username, empty password:
curl -s -u "$STRIPE_KEY:" "https://api.stripe.com/v1/..."
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
All Stripe API calls use HTTP Basic auth — key as username, empty password:
curl -s -u "$STRIPE_KEY:" "https://api.stripe.com/v1/..."
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
All Stripe API calls use HTTP Basic auth — key as username, empty password:
curl -s -u "$STRIPE_KEY:" "https://api.stripe.com/v1/..."
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
All Stripe API calls use HTTP Basic auth — key as username, empty password:
curl -s -u "$STRIPE_KEY:" "https://api.stripe.com/v1/..."
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
All Stripe API calls use HTTP Basic auth — key as username, empty password:
curl -s -u "$STRIPE_KEY:" "https://api.stripe.com/v1/..."
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
All Stripe API calls use HTTP Basic auth — key as username, empty password:
curl -s -u "$STRIPE_KEY:" "https://api.stripe.com/v1/..."
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
All Stripe API calls use HTTP Basic auth — key as username, empty password:
curl -s -u "$STRIPE_KEY:" "https://api.stripe.com/v1/..."
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
All Stripe API calls use HTTP Basic auth — key as username, empty password:
curl -s -u "$STRIPE_KEY:" "https://api.stripe.com/v1/..."
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
All Stripe API calls use HTTP Basic auth — key as username, empty password:
curl -s -u "$STRIPE_KEY:" "https://api.stripe.com/v1/..."
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
All Stripe API calls use HTTP Basic auth — key as username, empty password:
curl -s -u "$STRIPE_KEY:" "https://api.stripe.com/v1/..."
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
All Stripe API calls use HTTP Basic auth — key as username, empty password:
curl -s -u "$STRIPE_KEY:" "https://api.stripe.com/v1/..."
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
All Stripe API calls use HTTP Basic auth — key as username, empty password:
curl -s -u "$STRIPE_KEY:" "https://api.stripe.com/v1/..."
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
All Stripe API calls use HTTP Basic auth — key as username, empty password:
curl -s -u "$STRIPE_KEY:" "https://api.stripe.com/v1/..."
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
All Stripe API calls use HTTP Basic auth — key as username, empty password:
curl -s -u "$STRIPE_KEY:" "https://api.stripe.com/v1/..."
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
All Stripe API calls use HTTP Basic auth — key as username, empty password:
curl -s -u "$STRIPE_KEY:" "https://api.stripe.com/v1/..."
No suspicious patterns detected.