You're looking at CVE-2026-13329, a missing authorization vulnerability in a WooCommerce payment plugin AJAX handler that allows subscriber-level users to process refund and capture operations they should not have access to.
The technical failure is straightforward: a wp_ajax_ hook handles refund and capture requests without verifying the user's capability and without nonce validation. The handler executes correctly from a functional standpoint—refunds process, tests pass, the feature works—which is precisely what makes the gap invisible during development. A subscriber can trigger financial operations that should require at least shop manager or administrator privileges.
WordPress's AJAX pattern creates a cognitive trap here. The wp_ajax_ hook fires only for authenticated users, so the developer sees "logged in" and moves on. But 'authenticated' and 'authorized' are distinct requirements. A subscriber-level user passes the authentication check and triggers the handler, but lacks the capability to process refunds. This distinction is not enforced by the hook mechanism—it requires explicit current_user_can() checks that the handler is missing.
The missing nonce validation compounds the risk by enabling cross-site request forgery attacks, though the primary vulnerability is the authorization gap itself.
What to check and do:
-
Identify the vulnerable handler in your installation. It's in the payment plugin's AJAX endpoint handling refund/capture actions—likely the Buckaroo gateway plugin or similar WooCommerce payment extension.
-
Verify your current version. The vendor released 4.9.0 as the patched version. If you're running anything earlier, you're exposed.
-
The fix requires two additions to the handler: a capability check (e.g.,
current_user_can( 'manage_woocommerce' )or equivalent) before processing the request, and nonce validation usingwp_verify_nonce()orcheck_ajax_referer()to prevent CSRF. -
Audit your other AJAX endpoints. If the vendor patched only this handler without reviewing others, the same pattern likely exists elsewhere. Scan for
wp_ajax_handlers that process financial data, user data, or administrative actions without capability checks. -
Consider this a signal to review your plugin update cadence. With 40,000+ active installs common for WooCommerce payment plugins, the blast radius of these authorization gaps is substantial—your customers' payment processor relationships and transaction data depend on timely patching.