5900 online stores found skimming
gwillem.github.io
gwillem.github.io
Still, and I'm pretty much being called an idiot every time I point this out: You should NEVER have the user enter credit card information on your site. That is something that is best left to your PSP. If you're Amazon or similar size, fine, I can accept that you most likely have the need resources. Anyone smaller should never interact with credit card information, leave it to Stripe, BrainTree, Paypal, someone trusted, with the resources to handle it.
Also I'm not really surprised to see that it seem to be affecting Magento shops. Similarly to not accepting credit card directly: If you don't have the technical resource, don't run Magento. It's big and complicated, and you need to react fast when there's a problem. Contracting is an option, but expensive and the turn around time is a lot higher, especially if there's a critical error in Magento and everyone need the issue fixed right then and there.
Most people don't want to bounce customers to a third party site for payment, it really hurts conversions.
If your site sacrifices user experience, I will hate your site. Simple as that. Amazon understands the convenience factor really well.
I hope Apple Pay (on the web) takes off. While I don't like yet another middle man, and I don't care about its security benefits in the slightest, I appreciate the consistent and convenient interface it provides, so I will use it, if offered the choice.
Even if said sacrifice keeps your credit card safe?
I mean, if you are staying on the same site, you have no guarantees that the site isn't storing your credit card info in an unsecure manner.
My debit card was skimmed once, a few weeks ago. The bank detected fraud, notified me that they sent me a new card, and I didn't lost any money. I only lost two minutes of my life while I was talking to the bank on the phone.
This. We saw about 50% would prefer on-site transactions, 50% would prefer off-site transactions (PayPal or Amazon payments). Remove one of the options and half your customers just disappear.
That is certainly true in my experience.
Also, some of the payment services have a habit of changing the appearance and/or behaviour of their hosted systems, sometimes not for the better, and typically without warning. That is a risk you might not be willing to take for something as important as your payment flow. I know of at least one local business that switched from Stripe Checkout to using Stripe.js from their own site as a direct result of Checkout being significantly changed and resulting in customer support enquiries about the new behaviour that the business had no idea how to answer.
There are providers that use JavaScript to allow you to take payment information on your platform but never let the sensitive details hit your server. I believe this removes your platform as an attack vector for leaking credentials. The only locations that have traces of that information are the browser and the payment provider.
A slightly jarring user interface seems a small price to pay for a much lower chance of my payment details being compromised. Is this a minority view?
On the other hand, Paypal itself is a liability. Blocking your account (and your money!) for months without recourse, randomly reducing expense limits to nothing (50 EUR) are not just some Internet stories, but things that have happened to me personally multiple times.
When my card was stolen (debit card even!), I didn't lose a dime, nor time. Bank just sent me a new card the same day. I didn't even have to report the fraud, they detected it themselves, as they are really good at that. They just called me to tell me about it, and that they sent me a new card.
And tomorrow, when the problem gets worse and the fees start to climb, will you still not care?
Why be content with a system that may indirectly charge you for other people's lack of security?
Why not look for ways to focus the cost on the vendors who lack security?
Personally I think the banks should be paying for the bulk of this fraud out of the 2-3% transaction fees, not merchants who may not have anything to do with the problem. This way, there's strong incentive to actually issue secure cards and improve security. Right now, it's no skin off their backs, so nothing is improving.
You're seriously overestimating the fraud protection Stripe does.
In the end, they hold an unfair power over those who they can extort. I wish we had much better consumer laws - to actually protect us.
We have excellent consumers laws in this particular regard. If only consumers fought for their rights instead of paying the mafia!
> Hire a lawyer for $400/hour?
You don't need a lawyer for small claims court.
They are who fined Wells Fargo.
I don't know, maybe. I have zero liability on credit card purchases, and while it's certainly an inconvenience I never don't buy something because my details might be leaked. Who cares, why put yourself through the constant mental effort for an event that happens maybe once or twice a decade if you are exceedingly careless?
I absolutely despise being sent to a third party site - usually a broken one that takes forever to load, with some annoying "security" authentication, or OTP, etc. when really all I wanted was amazon one click and to move on with my life.
By far the #1 way a small merchant can get me to click the buy button is make it easy for me to checkout and pay. If I have to sign up for an account, be redirected around the world, etc. I generally tend to lose interest and just go back to newegg/amazon. Note that this sometimes is a third party payment link such as Paypal due to the nature of the service - but you have to think about user experience first, not last.
Also your requirement makes absolutely no sense to me. If a merchant is compromised to the point that javascript can be injected, it's not much more difficult at all to direct you to a fake paypal skimmer that you likely won't notice. I agree it raises the bar a bit, but not by an appreciable degree.
Not quite right. Many banks make you liable for the first $50, for each occurrence of fraud. Also they typically require you to notice and report a fraudulent charge within 30-90 days or else you are liable for 100% of the amount.
Most card issuers these days will proactively contact the customer to inquire about suspicious charges.
Most likely. The fact that you understand what is happening when your store webage you're on goes white the words in the www bar change and then you're on a different site and it's asking for credit card info kind of illustrates this point.
Could you imagine trying to buy eggs at the supermarket then when it comes time to swipe your credit card, being asked to leave all your eggs at the register, go over to a different store with your credit card, swipe your card there, sign the paper, then go back to the original store and pick up your eggs? I imagine that's how a lot of people visualize going to a PSP site to enter credit card info.
Especially now that it can be deployed on websites?
The equation for websites is similar given Mac users are a minority, and many Mac users use Chrome.
I want a world where payment is convenient, security is excellent, and there's no mandatory mafia of middle man between my electronic money and the merchant. It's fine that people chose to use banks voluntary, banks provide many services people want. But it should not be mandatory to use banks, if you chose to do so, and most certainly it should not be necessary to implicate yet another 3rd party to the transaction (VISA/Mastercard). And now we are adding a 4th party!
Whether to use a 3rd, 4th, 5th party should be users' choice. Some people value security, others privacy, others convenience; some people want 2FA for every transaction, some people hate PINs and want just to swipe a card, etc. All this should be client side; user's side. Open payment protocol with multiple implementations. Merchant just uses the protocol. If some new payment revolution is coming, merchant should just update his software.
We have technical solutions to do all this, but most people do not understand that this is possible, what the existing system entails; and the people in charge of this don't want to lose the power.
That has to be a local issue, because that is flat out wrong. The majority of all e-commerce sites does exactly that. I have yet to meet a PSP that believe send the entire credit card number, expiry and CVV was the right solution. I've talked to exactly one PSP that supported accepting credit cards in an iframe, and that was only available to existing customers, because they where discontinuing that service.
In most of northern Europe at least, customer have been use to credit card payments redirecting them to third party sites since at least 1999. It has zero effect on conversion.
You can't declare it a possible local issue and then say it's wrong.
And it's definitely been measured (in my own testing at various companies and by many many others) that it hurts conversions to break the flow into separate redirect.
On sites I've been involved with, in 2016, I still have to fight tooth and nail to get SSL on the payment page at all, let alone redirect users somewhere else.
I'm reasonably sure that every payment service I've ever used requires payment pages to be served over HTTPS, not just HTTP, even those that have minimal other requirements and take on most of the security burden themselves with some sort of hosted arrangement.
Are there really significant numbers of merchants who aren't doing that?
I only made it to the third one before I found an http:// checkout page. I tried to change the address to https:// and found it complaining about a cert mismatch. I also viewed source and confirmed the form submits to an http:// address.
So.... yes.
Do some payment services not do at least a basic check of integrations before allowing them to go live? I haven't worked on a site starting out with online payments very recently, but the last time I did, there was a short series of entries in the server logs that did look like someone from the payment service had taken at least a very quick look at the relevant pages.
Wouldn't stripe and braintree still effectively let you handle CC on your own site? i.e. If someone can inject JS code there, they can in high likelihood grab CC details even if you're using stripe or braintree. Am I missing something?
My app client sends the card info to Stripe, then forwards the Stripe token to my server to charge the card each month. So far this is a standard security model.
The problem is that if PayPal come along to offer me a cheaper commission on processing subscription payments, I cannot simply switch my sever to use PayPal for all my existing customers. So I'm tempted to encrypt the credit card info and store it in my database in case I want to switch in future.
Seriously....just don't. The world of pain you'll be in if you mishandle this data and the symmetric encryption key will probably see you or your clients made bankrupt.
Please read up on PCI-DSS before even considering this:
"Thanks for your suggestion, but our shop is totally safe. There is just an annoying javascript error."
please share the stores sending these negligent and insulting responses. they don't deserve any sort of protection.
- trivial enumeration attacks that could be used to retrieve customer information (name, address, order, payment details, ...)
- XSS issues that could be exploited by sending crafted URLs to customers
In all cases, I received rather lame responses as if the person in question was completely nonchalant about the issues.
All I could do was to avoid those stores myself.
So far received one response: "We do not even accept credit cards!". Tried to explain to her why foreign code on your site might still be a problem.
Expecting many similar responses. Where possible I contacted their developers directly, maybe they will do something.
Note that both GitHub and GitLab took down the list already.
For victims added to the list and published within days, the victim is not allowed adequate time time to fix their vulnerability. That does real harm to the victims by inviting attacks before they can avoid the harm the disclosure invites.
Note: I am not from the USA. The 2FA solution is the default in my country, and I have literally never heard anyone lose money because of skimming.
Horror stories on here range from having the 3DSecure in an iframe to having horrible "secret question" style inline enrollment
My banks implement it decently - weird third party URLs (albeit with the banks name on the EV certs), but using mobile 2FA apps or hardware card readers for the verification. One of my banks enforces 3DSecure for their debit cards (but not credit cards) since all domestic stores support it.
To make a transaction:
-add items to cart
-enter card details
-you are redirected to 3DSecure if it's enabled
-you are redirected to a page of your bank where you enter a One time Password(OTP). It's a simple 6 digit number sent to your mobile phone and is unique for every transaction.Enter OTP.
-transaction is confirmed.
So even if someone has my card details they can't make any transaction (unless they also managed to steal my phone).
Sorry if my original comment was not clear.
Follow up question, how widespread is the adoption of 3DSecure in the USA and if it's not available, is it easy to get 3DSecure activated?
So few sites require it that I don't remember the password and entering random characters from KeepassX is always a pain.
I hate it when I see that VbV prompt. That's frustrating security and results in passwords that you use so infrequently they never get changed. I'd much prefer OATH TOTP or even an SMS based code (with a "I don't have my phone" option).
All 3DSecure iframe content is bounced through a third-party site, securesuite.co.uk. I invite you to visit one of the following URLs:
Do you feel reassured about entering your credit card details into anything hosted there? At least the domain's whois information doesn't claim it's registered to "yaron shohat" (sic) any more...
Here's a full writeup:
https://web.archive.org/web/20160603034835/http://www.cl.cam...
We would probably be much better off if we'd evolved a system where the payment authorisation step was always hosted by the customer's bank, and everyone expected that instead of putting card details or the like into some merchant's site, they would only ever deal with their own bank.
In the absence of such a system, modern 2FA schemes are trying to plug the gap, but they almost always introduce more friction in the process and consequently affect conversion rates. When not everyone is using them, that makes adopting 2FA potentially a worse option commercially than accepting the losses due to a certain level of fraud in return for better conversion rates across the board.
A few reasons:
1) Card issuers don't care because it's merchants who are on the hook for card-not-present fraud.
2) Cardholders don't care because they're never on the hook for fraud.
3) If a specific merchant enforced 3DSecure (to move fraud liability back to the issuer/network) they'd lose more money on lost sales from people that hate 3DSecure (everyone?) than they would save on fraud.
That said, I have seen 3DSecure enforced at ultra-high-fraud merchants like Bitcoin resellers.
It depends on the details, because there are also technologies where the templates are separated and you can add text to them without execution rights. But for all that people on HN may tend to prefer that, in the great big real world, thinking separation of execution and data is a requirement for a template language is a niche view. Even here you can start up a rollicking, free-wheeling debate on the topic, and I'm not even sure where I come down myself.
Unsurprisingly, the scammers use scanners that look for the soft targets first, so, statistically, I'd suspect the claim could be modified to a true statement with "If someone can inject Javascript into your site, they could have hacked your database with just a bit more effort on your site." It's easier to write something that sprays a script tag across a whole bunch of sites that can scrape off anything that gets submitted that looks like a credit card number than it is to write something to go dump databases across all those same sites, because the database is more likely to be customized or have quirky local rules that would make your automated code fail, or draw attention to itself when it froze the database for half an hour, or some other issue like that. But if someone paid personal attention to your site, they could probably grab the whole thing. At this scale, clearly personal attention is not being paid to these sites.
[1] https://www.cardbenefits.citi.com/Products/Virtual-Account-N...
In any case the only operate in USA.
They also lack privacy: your name is written on a card and in every transaction you use the same card number so merchants can collect person's shoppping history (and using a name they can find customer's page in social networks). And maybe they even share this information among themselves.
Not in every country there are laws protecting clients. In US there is a law, but in other countries if your card number got stolen you might never get the money back and even be left with a debt if it was a credit card (because it is client's responsibility to keep his card info secure).
When you are buying something online with a card there is no way to check whether it is a real shop or just a fake site to collect card numbers.
As a result merchants make their own sophisticated antifraud system and you never know whether your card would work or not. For example once I was unable to pay for a Digital Ocean server with virtual prepaid card (of course I would never pay with a real card on the Internet) so I chose another cloud hosting and they lost a customer.
Cryptography does not help here. The problem is that better transaction types (3d secure) are badly implemented by banks and as such not deployed because it's seen as an unnecessary second step.
You could also prevent this problem in general with Content Security Policy, by whitelisting only the domains you know JS should come from. Then, even if they do in fact get a script tag on to your page pointing at a hostile domain, it won't execute unless they also nuke your CSP headers. You can even set up your CSP such that it notifies you upon violations. In theory a hacker could still penetrate all that in one shot by disabling your CSP and then adding their script, but it means if they miss the CSP even briefly that you have at least a chance to be notified before they square it away. It at least raises the bar.
But the real problem here is that we're not generally talking about people who know about CSP, nor is it generally reasonable to expect they would or could, at least right now. It's pretty niche stuff in general. I'm sure if I gave a quiz on CSP here, a ton of people could reply with the correct answers, some of them even without Googling, but in general if I talk to my coworkers about that I'm doing well to get a vague "Yeah, I've heard of that I think..."
Plus, I should have pointed out that CSP can be applied at higher layers, including nginx itself or a WAF, that the attacker may not be able to access or modify. I didn't think of it at the time.
with credit cards it's like there is only a pubkey and no private key needed to steal!