Detect breaches with Canary credit cards
blog.thinkst.com
blog.thinkst.com
I have uncovered flaws in online merchants this way, and notified them. They were usually grateful, especially so since the fraudulent charges failed.
Because both types are virtual prepaid type cards, some services (e.g. car rental) will not accept such cards.
Of course a few of the largest banks find it worthwhile to add a page to their website where you can generate virtual card numbers, but it's not a huge win for them by any means even when they're liable for stolen cards.
The US has more of a free market approach here, and experience has shown that the conversion rate hit is often much more severe than the reduction in fraud. Consumers will just use the most convenient card, and that turns out to be the one that just lets them buy (almost) everything without additional challenges.
The EU is taking the approach of forcing all issuers to challenge cardholders for most (higher value/risk) transactions. Given that the rules are the same for everyone, cardholders have nowhere to "escape" to – and issuers finally were forced to invest into making their implementations more usable.
I’d suggest, rather than looking for a “detached service” that does this, look at what (probably larger) European banks besides than your own offer their customers built-in.
Thier at-time debit cards were good only for domestic transactions, but this virtual was good for international, & used to come up as Visa Prepaid. I used it for registering domains & amazon international shopping.
The banks here in Denmark har just less competitive and more entrenched than in the US
Payment initiation or confirmation can be an entirely separate layer (such as chip + PIN or 3D Secure).
This is actually the goal of European regulators right now (with some carve-outs for low value and low-risk transactions).
At the moment you need to provide a complete "private key" to each processor, who up the ante to: CC Number + Expiry + Security Code + Name + Address. They all ask for it, so any of them could leak it, or it could be phished.
In the US, debit card interchange is heavily regulated for most issuers (to an extremely low rate of 0.05% plus a flat 0.24$ per transaction, which can be frustrating for microtransactions, but that's a different story).
Some issuers are exempt from this requirement, though – very likely including the one that Privacy/Lithic use. This gives them a very nice arbitrage opportunity which can pay for the product and even return a profit.
In Europe, there is no such exemption, so a proxy card can even theoretically never be profitable (you earn 0.2% but also pay 0.2% per debit transaction, and after network fees, you're in the red).
What would be possible is to offer single-used debit cards that are funded from a bank account via direct debit, which is effectively fee-free (but decidedly not risk-free). Privacy offers that option as well in the US.
But given the direction into which the EU is moving (heavily guided by regulation), which is to effectively mandate 3D Secure for almost all online transactions, it's questionable how much demand for such a product there really will be, going forward.
I've only used this for the sketchiest of vendors though. Chargebacks are pretty easy for the once-a-decade event where I get billed for something incorrectly.
I used them for a purchase, the company then blatantly lied about everything (tweeted that "everyone's order was shipped" 2 weeks before I even got a tracking number).
They asked me for the following:
- Order receipts
- Email communication with the company
- Tracking numbers
- FedEx investigation (consumers can't open these, only the shipper)
I showed them the chat history with FedEx refusing to open a claim, and provided the other information.
They then proceeded to IMPERSONATE ME to FedEx live chat "to prove I was lying." The sent screenshots only showed them asking if a tracking number had been delivered, not any of the actual data around the tracking number.
Needless to say, I've never used them for anything again and post this everywhere I see them mentioned.
Higher tier credit cards often have additional insurance that goes beyond what the chargeback mechanism is designed for, though, but for fraud, you shouldn’t need these.
I think something like 85%+ of banks now offer next day refund of fraudulent charges from debit card charges. But that statistic is kind of meaningless in that, if your bank offers it, there's not a lot of extra protection a CC card grants you unless there's a specific value-add to the card that is meant to retain you as a customer.
And if it's international dispute raised after 14 days you might get no where.
At least for consumer debit cards, that's not the case. Regulation E requires provisional credits (until the investigation and/or chargeback process is complete) in essentially all instances of fraud.
> And if it's international dispute raised after 14 days you might get no where.
Where do you get that number from?
At least in the US, federal law limits liability for lost and stolen cards to $50 (when reported within two business days) or $500 (within 60 days after receiving your statement). For non-lost/stolen cards, which covers all online fraud (due to stolen card numbers, compromised merchants etc.), there is no such time limit, as far as I know.
And these are just the legal caps on consumer liability: Most issuers go far above and beyond that, and extend zero liability for effectively all scenarios, just like for credit cards.
I'm probably entirely wrong!
Not just ACH information from a check for the linked account, which is all they should require.
No, despite supposedly being privacy-concerned, they require credentials (or auth token, hopefully) that gain access to everything the login has visibility into. I have multiple accounts at these places, the checking account is a tiny fraction of what's available with creds in hand.
That tab was promptly closed and effort abandoned.
Privacy is owned / created by Lithic, but if you look at Lithic's investors you'll see that the plurality of the company's investors are in the private equity or VC space: Bessemer Ventures, Tusk Partner Ventures, Index Ventures, etc. You can see the Privacy.com / Privacy mobile app's funders here: https://www.crunchbase.com/organization/lithic-pay
Thus, I have no doubt that my transactions on cleverly-named Privacy app are being gifted or sold to Wall Street so that hedge funds can squeeze out a few addition drops of 'signal' from consumer purchase pattern data that would otherwise remain dark. (I'd imagine that many folks use the Privacy app to buy things that they'd rather not have show up on their regular credit card bills: 'adult websites', marijuana or tobacco products, etc.
So, two questions:
(1) Does anyone have a privacy-respecting alternative to Privacy.com's virtual credit cards?
(2) Does anyone know of a recent blog post where these virtual credit card services are compared / contrasted by
- the services that they offer, - the cost: free, paid, etc., - the terms of service: how your data is re-sold / who your data is transmitted to
Capital One offers virtual cards through Eno (https://www.capitalone.com/digital/eno/virtual-card-numbers/) that are merchant locked. They make it somewhat cumbersome to use, but I've really enjoyed using them.
It doesn't block wall street knowing about what you're buying, but at least it's likely got one (or more) fewer middlemen looking at all your transactions.
Now if only law enforcement would give a shit and do something about all of the rampant fraud. Sadly, I do not believe that will ever happen.
When someone is far away, and in a different jurisdiction, it’s hard to track them down and do anything to them.
Not likely to get better anytime soon, unfortunately.
This leads to a hell of a dystopia, but spammers have left me no choice but to contemplate dystopias.
For something major, it’s generally already possible to investigate and get someone extradited already, for instance, when the cultural gaps aren’t too large and the cultures have a common agreement on what a ‘major crime’ is and looks like. Murder, for instance.
The issue is the bar for ‘major enough’ gets higher and higher the more jurisdictions/cultures you cross, and it is super easy now to scam across a large enough gap there that no one is going to arrest or participate in investigating all but the largest and most blatant scams.
Good luck getting someone arrested in Russia, Nigeria, China, etc. for wire fraud, for example.
Also, the goal of hiring a bounty hunter, presumably, wouldn’t be to get them arrested for things that are crimes in some other country, but rather to get them arrested for things that are crimes in their own country (or in whatever country they happen to be hiding it.)
Bounties in the US are issued by the court. You can’t issue one as a private person.
For it to be legal for a bounty hunter to do anything, they need to comply with some laws while doing it. Otherwise, it’s false arrest and/or kidnapping.
Which I’m sure with some work, and a lot of money, some folks would be willing to do for you. However, I doubt it would go well for anyone, and certainly wouldn’t result in the person being taken going to jail if all they did was scam someone.
Targeted International kidnapping (human trafficking?) is one of the ‘quite serious’ things likely to get whoever initiated it tracked down and thrown in jail though.
Near as I can tell, only the Philippines has a similar system.
It gets a lot of press and there are a lot of legends around it, but it isn’t what you think.
The formal system for having someone arrested and sent to another county is extradition, and it works rather differently. It’s slow, expensive, and rarely used outside of serious crimes.
Having someone arrested, tried, and penalized in another country for committing a crime against you somewhere else is also not easy.
1) often the courts in the attackers country will say they have no jurisdiction to try them, as the crimes were committed elsewhere. This can also happen if you try it in the victims country.
2) you run across all sorts of ‘meh, don’t care’ issues when the attacker is bringing in good money locally and the victims are seen as ‘not here/not anyone we care about’
3) good luck collecting evidence, making a case, getting them arrested, etc. in a foreign county, speaking a foreign language, with a legal system that you don’t understand. It’s hard enough doing it when it’s local.
4) if the local legal system is known for corruption, good luck figuring out which buttons to push. The attacker almost certainly is already familiar with them.
Not impossible. But the costs can easily be > $100k, sometimes in the millions.
Hence the ‘serious enough’ bar too.
This is the strategy used by the harder-to-kill scam call-centres in India; certain cities in India (I believe Hyderabad?) have been repeatedly handed damning evidence of criminal acts by scammers operating there, but it gets swept under the rug every time. When a big-enough stink is made that it makes their own local news, they just give the criminals a slap on the wrist or lest (e.g. an arrest on low bail that they easily afford to pay, with the case then being dropped before it ever goes to trial, as soon as it’s out of the news.)
Seems like a great way for an ambitious team to make a popular difference in the world.
I put the numbers on e-crime forums for people to snap up, and it was funny watching what kinds of transactions were being made. Most people were using it to buy cryptocurrency.
Most of the transactions were vague though and didn't mention the merchant in question, but with a bit of digging I discovered they were so called 'Discreet Billing' companies which are largely used for adult websites and used to mask the fact you were buying porn to people casually glancing at your CC statement.
>Credit Card Rate-Limiting currently in place. Please try again later.
Maybe tomorrow.
If you run this experiment, would you do a tell HN ?
> It’s a compelling argument: “Would you like attackers to first remove your bank’s cards from dumps they steal?”
If the latter (and whatever similar feature android has) were somehow perfect, scammers would have a bad time. But.. if they convinced (paid) some (more-)legitimate companies to have their outgoing calls show up as the same number as the scammers use, people would eventually learn that they have to pick up scam calls or else miss calls from their bank/pharmacy/whatever.
In the US the STIR/SHAKEN[1] protocol adds source-verification. If/when this finally gets fully rolled out, spoofing caller ID without it being blocked is going to get much harder.
But, I'm sure the next step for them is to just go after the millions of small-medium business IP telephony systems that are either poorly configured with default/guessable passwords, or have wide-open security holes.
edit: They mention this in the article, I missed it.
[0] https://en.wikipedia.org/wiki/Payment_card_number#Issuer_ide...
"Savvy attackers may start looking for patterns in the bank identification numbers (BINs) that we issue, and proactively deleting or excluding them from their dumps. For this reason we are in discussions with a number of banks to onboard their BINs to the system too, further mixing in legitimate cards with tokens."
We are getting lots of phishing by text, email and hacked IMs. They use a bunch of redirections to get you to "login to your bank" with our security devices. In reality, they'll use MITM it and transfer money to some mules.
If we could have people fill in some canary bank account that would trigger a fraud alert at the banks, we could stop those payments a lot more easily.
The banks don't really seem to care because the payments are signed with the card and PIN of the owner, so they refuse to refund it. No loss to the bank, no action. :(
I used to do this all the time by hand when I was actively dealing with phishing sites. I'd submit credentials to the site and watch for it on our account login page to identify the perpetrator.
It was quite interesting, AFAIK we had a range of CC numbers that we could use, and we had to "answer" to an API call (a "lower-level webhook", it wasn't HTTP) that provided all the user data for verification, and we had to authorize in a maximum amount of time (hard real-time). The verification happened entirely on our side, so it was even possible to reuse numbers by changing the CVV or expiration date, for example. At least that was how it was explained to me, someone could chime in and correct some mistakes here! :)
This feature later enabled some banks to allow the customer to change their "credit limit" as much as they wanted, or to block/unblock the card using a toggle in the app. But "real time confirmation" wasn't possible because of the hard-real-time constraint we had. I remember we had to reply very fast at the time, and could get punished if we had too many timeouts.
This might not be the reality on every country or region, but by giving everyone a dummy credit card in those conditions, the costs would be only of servers + personnel.
Of course, a partnership with zero dollars worth of transactions would make zero sense to the partnering bank, so they would obviously complain. But this here seems to be a special case where there's a previous agreement.
You know what would be better? If every bank provided as a service/feature the ability to create single-use (and single-merchant!) debit cards. Revolut can do it, why can't huge banks do it as well? (BTW if you know one that does, let me know.)
FWIW, I use Revolut and am a fan of their service. However, the one time I tried to use the single-use feature it just didn’t work for some reason. So I had to enter my “permanent” card details instead in order to proceed with payment.
I can definitely see that adding a couple of these to ones password manager would be hugely valuable!
alarm klaxon sounds
Why do you have a database containing customer payment information?
Also, tons of companies have one-click payment options (ever order something from Chipoltle or Dominos app?)
Edit: It should be disincentivised, but look at any "punishment" for a data leak and it's cheaper for them to just lose the data
Individual retailers have no need to store actual cardholder information. All the payment platforms provide ways to persist cardholder information, in a way that allows it to be reused but never read.
This is usually called tokenization, if you want to search for it.
Yes, in many cases you can have your payment service provider store that data for you, but sometimes that's impracticable.
Honestly shocked by how much pushback I've had on this on this thread. I feel like I made a fairly innocuous comment that, essentially, was just suggesting that it's probably best practice to avoid storing customer card details in your own database. That seems to me about as uncontroversial as saying 'you should not be storing plaintext passwords', but apparently, judging from the replies I've seen, it's hopelessly naive, and you can't actually handle payments without storing CC numbers.
Which comes as a bit of a surprise to me, as in my day job I work on an e-commerce system that handles a billion dollars of credit card transactions a year, including stored payment methods and processing recurring billing - and we haven't got a single credit card number in any of our databases. So I kind of suspect it can be done.
Having multiple payment service providers, for example (or the plan to do so in the near future).
Another example would be complex legacy systems (especially in the travel segment, constellations between various service providers get complex quickly).
> I'm prepared to go to quite an extraordinary amount of effort to make sure PANs and cardholder data never comes near any system I am responsible for.
No objections there :)
> you can't actually handle payments without storing CC numbers.
Now you're putting up a straw man. It's definitely not impossible, but in some circumstances, it can be very hard.
Also, somebody will have to store the PANs in a database in the end, even if it's just the payment service providers themselves. There are much less payment service providers than merchants out there, but by the same logic, that makes them a much more valuable goal for attackers.
A couple examples where the Stripe model and scale of tokenization breaks down today:
- You're an airline and you need to have a digital wallet that stores payment details so you can buy your ticket on web, upgrade your seat on mobile, and buy a drink in-flight using the flight attendant's POS device
- You sell a product at high-risk of chargebacks that is not permitted by the major tokenization providers' terms-of-service (there are some surprises here that rule out several Fortune 100 use cases!)
- You're a $10B+ retailer where the difference between a 2.9% payment processing cost and a 1.6% payment processing cost pays for an entire team of people to focus on minimize processing costs by routing different payments to different gateways depending on fees (eg American Express goes one place, Visa goes another)
Now: if you are a mom-and-pop scale DTC shop selling only via web, you should probably be taking advantage of tokenization instead of storing credit card data yourself!
The PCI-DSS council does give guidance on how you handle credit card information securely when you cannot use a tokenization approach, and a lot of it boils down to what we'd consider foundational software engineering practices. (Don't let engineers have access to production data! Rotate your credentials periodically! Log events and maintain those logs so they can be audited!) It does increase your costs, complexity, and talent needs but it's also not an antipattern and there is relatively straightforward guidance on how to do so securely.
To seed with canary credit card numbers! But seriously, for widely implemented (i.e. not-proprietary) databases of CC numbers it would be great if there were more automated ways of seeding them with CC canaries. Sort of a "LetsEncrypt for CC databases." E.g. for CCs saved by your browser, I'd like to see a plugin that lets you use one click to seed that DB with a few random CCs.
The whole idea would be to reduce the burden on the end user, who we all know will probably not take the time to do this manually.
Spring into action, to shut the barn door after the cows already got out?
Getting alerted is good, but it's unfortunate that infosec practice still has so much band-aids, theatre, and reacting after that doesn't work.
It's basically an answer to: do you want to know that things went bad shortly after they did, or months later?
Isn’t a major value prop of Apple Pay and the likes is your creditial can’t be stolen.
Apple also seems to have no interest in letting other browsers on macOS use it, and I do most of my shopping on my mac, so I end up using my plain card number in almost all cases.
If the merchant seems particularly sketchy about security or not charging the card for more than what was agreed on (or makes it very hard to cancel their service), I need a one-time use card number anyway, since Apple and Google Pay don't yet protect against the latter.
To use a physical security analogy, real world bank robbery is a fool’s game now because of many measures which do not perfectly prevent theft but effectively reduce the profits & odds of avoiding capture. If attackers can’t get enough money to be worth the risk & effort far fewer people are going to try even though it’s still possible.
I dream of a payment system where payment generates some token, which the intended recipient can redeem, perhaps bearer ones for casual transactions, with support for periodic payments, revoking existing tokens or placing per-token limits.
One day perhaps...
I like how you can set a budget for a particular card, as well.
That makes quite the contrast with the large sums routinely and irrecoverably stolen from blockchain users. If you want people to buy your random hashes, spend your time unbreaking the system instead of marketing it.
You might not lose money when someone steals your credit card, but someone does: either your bank or the merchant will suffer a fraud loss.
Consumer fraud protections with regards to credit cards are necessary because credit cards are fundamentally insecure technology and would be unusable if issuers didn't take on so much of the fraud risk themselves.
> and I don’t even need to do that with the modern systems like Apple Pay which use unique per-merchant identifiers.
Apple Pay is a big improvement over standard credit card technology. It's also closed and proprietary, and requires special equipment to use, on both the merchant side and the consumer side.
> spend your time unbreaking the system instead of marketing it.
Are you criticizing me for writing this comment on HN because I am not at this very moment writing code? In your mind, people can't even talk about a project they may be interested in or working on until the project is finished?
> If you want people to buy your random hashes
Are you sure you are not confusing stablecoins and cryptocurrencies? These are very different things. Stablecoins are transferrable sovereign currency obligations the balances of which are recorded on a blockchain. Stablecoin tech can be used to allow consumers and merchants to interact with any type of monetary account as might otherwise be embodied by a debit or credit card, with similar business terms.
> That makes quite the contrast with the large sums routinely and irrecoverably stolen from blockchain users.
No doubt blockchain security needs to be substantially improved. It will happen, though!
The new credit cards which chips generate a unique token for each merchant account. This is also how Apple pay works.
Seems to me this is the wrong solution to the problem this is trying to solve.
So if you can find out that one of your canary cards have been tested, you can have some confidence that your whole set has been compromised.