Vulnerability in Easy Digital Downloads – eCommerce Payments and Subscriptions made easy — WF-f4250328-6d6c-4eb1-9ef2-334774c1d337
What to do now
Update Easy Digital Downloads – eCommerce Payments and Subscriptions made easy to 3.7.3 or later.
Affected versions
- Everything up to and including 3.7.2
Affected: Easy Digital Downloads – eCommerce Payments and Subscriptions made easy (plugin, easy-digital-downloads)
What the vulnerability is
The Easy Digital Downloads plugin for WordPress is vulnerable to authentication bypass leading to administrator account takeover in all versions up to, and including, 3.7.2. During a PayPal guest checkout, the email address entered in the guest-checkout field is trusted as proof of identity: edd_get_purchase_form_user() binds the new guest order to an existing WordPress user purely on an email-address match, rewriting the order's user_id to that user's ID. The PayPal capture sink PurchaseUser::maybe_log_in_after_capture() then looked the user up by the order email (get_user_by( 'email', $order->email )) and, when $order->user_id equalled that user's ID (which the email-binding step guarantees), issued an authenticated session with wp_set_auth_cookie(). An unauthenticated attacker who starts a guest checkout using an administrator's email address (where that administrator has no existing EDD customer record) and completes the PayPal purchase flow therefore receives an authenticated session as that administrator — a full account takeover. The same sink is reachable through the standard PayPal checkout and the REST UnbrandedCard and Fastlane flows.