<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Stripe — CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/tags/stripe/</link><description>Trending threats, MITRE ATT&amp;CK coverage, and detection metadata — refreshed continuously.</description><generator>Hugo</generator><language>en</language><managingEditor>hello@craftedsignal.io</managingEditor><webMaster>hello@craftedsignal.io</webMaster><lastBuildDate>Sat, 02 May 2026 12:16:16 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/tags/stripe/feed.xml" rel="self" type="application/rss+xml"/><item><title>Paid Memberships Pro Plugin Vulnerability Allows Unauthorized Stripe Webhook Modification</title><link>https://feed.craftedsignal.io/briefs/2026-05-pmpro-stripe-webhook-vuln/</link><pubDate>Sat, 02 May 2026 12:16:16 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-05-pmpro-stripe-webhook-vuln/</guid><description>The Paid Memberships Pro plugin for WordPress is vulnerable to unauthorized modification of Stripe webhook configurations due to missing capability checks, allowing authenticated attackers with Subscriber-level access to disrupt payment processing.</description><content:encoded><![CDATA[<p>The Paid Memberships Pro plugin, a popular WordPress plugin for managing paid subscriptions, contains a vulnerability (CVE-2026-4100) that allows authenticated attackers with minimal privileges (Subscriber-level access) to manipulate Stripe webhook configurations. This flaw exists in versions up to and including 3.6.5 due to missing capability checks on specific AJAX handlers. An attacker exploiting this vulnerability can delete, create, or rebuild the site&rsquo;s Stripe webhook, leading to significant disruptions in payment processing, subscription renewal synchronization, cancellation handling, and management of failed payments. This vulnerability puts revenue streams and customer relationships at risk for any organization using the affected plugin versions.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>An attacker gains Subscriber-level access to the WordPress site, either through registration or compromised credentials.</li>
<li>The attacker crafts a malicious AJAX request targeting the <code>wp_ajax_pmpro_stripe_create_webhook</code> endpoint.</li>
<li>Alternatively, the attacker crafts a malicious AJAX request to the <code>wp_ajax_pmpro_stripe_delete_webhook</code> endpoint.</li>
<li>Or, the attacker crafts a malicious AJAX request to the <code>wp_ajax_pmpro_stripe_rebuild_webhook</code> endpoint.</li>
<li>Due to missing capability checks, the server processes the request without proper authorization.</li>
<li>The Stripe webhook configuration is modified, deleted, or rebuilt based on the attacker&rsquo;s request.</li>
<li>Legitimate payment processing and subscription management processes fail due to the altered webhook configuration.</li>
<li>The attacker effectively disrupts the site&rsquo;s ability to collect payments and manage subscriptions.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation of this vulnerability allows an attacker to completely disrupt a WordPress site&rsquo;s payment processing and subscription management functionalities. This can result in significant financial losses due to interrupted sales and subscription renewals. Furthermore, the disruption can damage customer trust and lead to churn as users experience issues with their subscriptions. The vulnerability affects all sites using Paid Memberships Pro plugin versions up to 3.6.5.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Immediately update the Paid Memberships Pro plugin to the latest version to patch CVE-2026-4100.</li>
<li>Monitor WordPress web server logs for POST requests to <code>/wp-admin/admin-ajax.php</code> with the <code>action</code> parameter set to <code>pmpro_stripe_create_webhook</code>, <code>pmpro_stripe_delete_webhook</code>, or <code>pmpro_stripe_rebuild_webhook</code> using the &ldquo;Detect Suspicious PMPro Stripe Webhook AJAX Requests&rdquo; Sigma rule.</li>
<li>Review user roles and permissions to minimize the number of users with Subscriber-level access as a temporary mitigation.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category><category>wordpress</category><category>stripe</category><category>webhook</category><category>vulnerability</category><category>plugin</category></item><item><title>Stripe Webhook Signature Bypass via Empty Secret Enables Unlimited Quota Fraud</title><link>https://feed.craftedsignal.io/briefs/2026-04-stripe-webhook-bypass/</link><pubDate>Fri, 24 Apr 2026 15:43:25 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-04-stripe-webhook-bypass/</guid><description>A vulnerability in the Stripe webhook handler allows an unauthenticated attacker to forge webhook events and credit arbitrary quota to their account without payment, stemming from an empty StripeWebhookSecret and lack of PaymentMethod validation, enabling cross-gateway exploitation.</description><content:encoded><![CDATA[<p>A critical vulnerability exists in the Stripe webhook handler that allows an unauthenticated attacker to forge webhook events and credit arbitrary quota to their account without making any payment. Disclosed on 2025-04-15 and patched the same day in v0.12.10, the vulnerability stems from three compounding flaws: the Stripe webhook endpoint does not reject requests when <code>StripeWebhookSecret</code> is empty (the default), any attacker can compute valid webhook signatures when the HMAC secret is empty, and the <code>Recharge</code> function does not validate that the order&rsquo;s <code>PaymentMethod</code> matches the callback source. This enables cross-gateway exploitation where orders created via any payment method can be fulfilled through a forged Stripe webhook. This vulnerability allows for financial fraud through unlimited API quota acquisition without payment.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>Attacker registers a user account on the target platform.</li>
<li>Attacker calls <code>POST /api/user/pay</code> to create an Epay top-up order, setting the <code>amount</code>. The order is stored with a <code>pending</code> status.</li>
<li>Attacker queries <code>GET /api/user/topup/self</code> to retrieve the <code>trade_no</code> of the pending order.</li>
<li>Attacker computes an <code>HMAC-SHA256</code> signature with an empty key over a crafted <code>checkout.session.completed</code> payload. This payload contains the stolen <code>trade_no</code> as the <code>client_reference_id</code>.</li>
<li>Attacker sends a <code>POST</code> request to <code>/api/stripe/webhook</code> with the forged payload and a crafted <code>Stripe-Signature</code> header.</li>
<li>The server verifies the signature, which passes because the <code>StripeWebhookSecret</code> is empty.</li>
<li>The server calls the <code>Recharge()</code> function, which finds the Epay order by <code>trade_no</code>, marks the order as <code>success</code>, and credits the attacker&rsquo;s account with the full quota.</li>
<li>The attacker repeats steps 2-6 indefinitely to accumulate unlimited credits, leading to financial fraud.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>This vulnerability allows attackers to obtain unlimited API quota without payment, leading to financial fraud. The operator of the vulnerable system faces financial losses due to fraudulent quota consumption against upstream AI providers such as OpenAI, Anthropic, and Google. The fraudulent top-ups can appear as normal transactions in system logs, making detection challenging. Due to the default insecure configuration, virtually all deployments with any payment method enabled are vulnerable, creating a wide exposure.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Set <code>StripeWebhookSecret</code> to a non-empty value to prevent empty-key HMAC forgery, mitigating the primary attack vector (Flaw 1).</li>
<li>Apply a reverse proxy (Nginx, Caddy, etc.) to deny access to <code>/api/stripe/webhook</code> if Stripe is not configured, as a temporary workaround.</li>
<li>Deploy the Sigma rule <code>Detect Forged Stripe Webhook Request</code> to identify potential exploitation attempts by monitoring requests to the webhook endpoint with empty secrets or invalid signatures.</li>
<li>Upgrade to v0.12.10 immediately, as it addresses all three flaws completely.</li>
</ul>
]]></content:encoded><category domain="severity">critical</category><category domain="type">advisory</category><category>stripe</category><category>webhook</category><category>signature-bypass</category><category>quota-fraud</category></item></channel></rss>