Skip to content

v1.5.2 - Remove payment_hash from block tokens to fix false positives

Choose a tag to compare

@ccmrik ccmrik released this 05 Mar 22:47
· 3 commits to main since this release

Bug Fix

  • Remove payment_hash from block tokens — The payment signature (gateway + total + country) is shared by every buyer using the same payment method, amount, and country. When a fraudster was blocked, their payment_hash entered the block list and every legitimate customer with the same payment profile was caught by matched_existing_block.

Root Cause

Your colleague at 180.150.45.221 was blocked because the store owner's test order at 180.181.228.227 (braintree_cc, $1.00, AU) was blocked earlier. That block stored the payment_hash for "braintree_cc|1.00|AU" in the block list. Any subsequent $1.00 Braintree order from Australia then matched that token.

This is the same class of false-positive as the ua_hash issue fixed in v1.5.1.

What changed

  • payment_hash is no longer stored in the block list when a visitor is blocked
  • payment_hash is no longer checked for matched_existing_block on future attempts
  • payment_hash is still used for the reused_gateway_amount_identity_churn scoring signal (counts unique emails per gateway+amount+country combo)

Block tokens now only include

  • ip_hash (unique per IP address)
  • email_hash (unique per email)
  • address_hash (unique per billing address)