• Hi, I am experiencing an extremely high rate of fraud order attempts on several websites that I manage. It looks like it always involves the Advanced Card Processing, but due to business requirements, I can’t simply disable this. I tried so many things, such as rotating the API keys, disabling Legacy API, etc, but no joy.

    99% of email address used for the fraud orders follow the pattern randomname.6numbers[at]gmail.com

    And also, I think this is important — it looks like all fraud orders are first created as Draft and then from Draft to Pending Payment and then to Failed (when the payment fails).

    Normal orders submitted through the normal checkout flow do not go through status “Draft”, so I wonder how these are submitted to the website. May be through the REST API somehow?

    I’ve checked for malware, reset passwords, but no joy.

    At one point I thought rotating the API keys solved the issue, but that doesn’t seem to be the case.

Viewing 12 replies - 1 through 12 (of 12 total)
  • Plugin Support Krystian from Syde

    (@inpsydekrystian)

    Hello @gyrdnv

    It’s quite concerning to deal with such a high volume of fraudulent activities in such a short period. However, there are several actions you can take to help mitigate attempted fraud:

    • Enable 3D Secure: If you use the Advanced Card Processing feature, you can require 3D Secure for transactions. This adds an extra layer of verification and makes it more difficult for unauthorized users to make transactions with stolen card information.
    • Activate FraudNet: In the plugin settings, specifically in the Connection tab, enable FraudNet. This is a service by PayPal designed to identify and prevent fraudulent activities using sophisticated fraud detection technology. For more detailed guidance, please visit the WooCommerce PayPal Payments documentation.
    • Set Payment Intent to Authorize: By changing the payment intent setting to “Authorize,” you can manually review transactions before they are finalized. This allows you to verify orders and void any that appear to be fraudulent before the funds are captured.
    • Use additional security measures like ReCaptcha: This plugin has been tested and works well with PayPal Payments. You can find it here.

    Additionally, we have received several similar reports recently, and these attacks have been seen across various platforms in the last couple of weeks.

    To further assist, it would be helpful if you could provide the logs of these transactions. Please ensure that “Logging” is activated in your plugin settings by going to the “Connection” tab. Once enabled, every transaction will generate a log entry. You can access the logs through WooCommerce > Status > Logs and select the most recent “woocommerce-paypal-payments” log file.

    Please upload the logs to our PrivateBin, and provide us with the link to review them in more detail.

    We hope this helps, and we look forward to your response.

    Kind Regards,
    Krystian

    Thread Starter gyrdnv

    (@gyrdnv)

    Hi Krystian,

    thanks for your reply!

    Most of these fraud orders fail. 3DS is set to “when required”.

    FraudNet has been active all the time.

    Payment intent is set to “Capture”, but as I said, most of these fail anyway, so that’s not the problem.

    reCaptcha did not help.

    One thing you didn’t address is that orders are *always* first created as drafts — this is not how normal orders received through the normal checkout flow are created. Here’s a screenshot of how the Order Notes look like for all of these fraud order attempts: https://imgur.com/a/6qKO2vC

    This isn’t normal, so these are not being submitted on the checkout page. Additionally they all have “unknown” as their origin.

    Moreover, I have now checked Wordfence, which is set to log all traffic. I checked it against one of the IPs used to submit these fraud orders and here’s what I see (I’ve hidden the IP address due to privacy): https://imgur.com/a/zslfP4n — this doesn’t seem right.

    I’m concerned about sharing the the debug log of these orders publicly, as this seems to contain sensitive data.

    In another support thread here, someone suggested disabling the wc_endpoint using a function. I haven’t tried that yet, but it doesn’t seem ideal anyway.

    • This reply was modified 2 months, 4 weeks ago by gyrdnv.
    Plugin Support Krystian from Syde

    (@inpsydekrystian)

    Hello @gyrdnv

    It’s clear these are bot attempts. Thanks for providing the screenshot; I will share it with our developers, as we have an open issue to investigate this further.

    The fact that the orders are being declined is actually a positive outcome in this case, as we’ve seen instances where they progress to the processing state, which is more concerning. As long as the orders are being declined, there’s not much we can do from the plugin side, it just means that PayPal prevention does its job.

    Regarding the logs, please reach out to us privately by contacting our support team.

    As for prevention, considering this is an automated process, are you using Cloudflare? I’ve reviewed some threads related to this issue, and Cloudflare could be an effective solution to help mitigate it.

    Kind regards,
    Krystian

    Thread Starter gyrdnv

    (@gyrdnv)

    We are not using Cloudflare — I will try implementing it on one of the sites and will see how it goes. For some reason I cannot log in to Woo.com, so can open a support ticket with the debug logs at the moment. Will try doing it later.

    In the mean time, if you discover anything or have any other ideas, please share them here.

    Plugin Support Krystian from Syde

    (@inpsydekrystian)

    Hello @gyrdnv

    You can try an alternative route to open a support ticket by using this link: PayPal Support.

    Yes, if we discover anything new we’ll be sure to share them with you here.

    Kind Regards,
    Krystian

    As someone who has been experiencing similar, what I found works in my case (as in reduced the amount of failed orders) was disabling guest checkout. It does seem to be a lot of bots though.

    Thread Starter gyrdnv

    (@gyrdnv)

    Disabling guest checkout didn’t work for any of my sites that are experiencing the current issue.

    For now I mitigated this on one of my sites by using a Cloudflare custom rule, along with Wordfence’s feature “Immediately block IPs that access these URLs” by specifying /wp-json/wc/ and a very particular query string they all have been accessing.

    FYI I looked into the apache log and found this GET request at the start of every spam order:

    GET /wp-json/wc/store/products?stock_status=instock&order=asc&orderby=price&min_price=1&max_price=5000&type=simple&page=1&per_page=100

    If there was a way to easily block that specific request, then it should stop the spam orders. reCaptcha didn’t work for me.

    Thread Starter gyrdnv

    (@gyrdnv)

    @chriscarman there is an easy way to block these. I didn’t put the whole query string here publicly on purpose, since they may change it, etc., but anyway.

    Back to blocking these — you can use either Cloudflare and create a custom rule on the WAF. Or you can use Wordfence and use the “Immediately block IPs that access these URLs” option.

    But I think either WordPress/WooCommerce or WooCommerce PayPal Payments must address this issue sooner, as it’s ridiculous how easy it is to do fraud using WordPress. They are not very worried since most of the attempts fail, but I don’t see it this way. There’s obviously a vulnerability and they refuse to fix it.

    I don’t use CloudFlare and I wasn’t sure if it would work if I put it in Wordfence, so I added this to the .htaccess file:

    # Enable RewriteEngine
    RewriteEngine On
    
    # Block specific request
    RewriteCond %{REQUEST_URI} ^/wp-json/wc/store/products$ [NC]
    RewriteCond %{QUERY_STRING} ^stock_status=instock&order=asc&orderby=price&min_price=1&max_price=5000&type=simple&page=1&per_page=100$ [NC]
    RewriteRule ^ - [F,L]

    Seems to be working so far! It’s pretty likely that the string will change anyway – build a better mousetrap and all that.

    Moderator Support Moderator

    (@moderator)

    PPNSteve

    (@ppnsteve)

    Just want to say we’re seeing this as well. Created our own topic to appease the mods ??

    I hope it’s addressed and fixed soon.

    • This reply was modified 2 months ago by PPNSteve.
Viewing 12 replies - 1 through 12 (of 12 total)
  • You must be logged in to reply to this topic.