27

I recently signed up for Privacy.com, which uses a service called Plaid to link a bank account. To do this, it requires the user to provide their banking username and password to a webpage from Plaid, not their bank. Then, Plaid accesses the user’s bank account with those credentials on the user’s behalf to get information. Plaid provides an API for websites and apps to easily access this banking information.

In addition to Privacy.com, plenty of other popular services use Plaid, including Venmo, Robinhood, and Coinbase.

Despite the popularity, this service appears to break two "fundamental" Internet security rules:

  1. Never give credentials to a third party. The standard is to redirect the user to a login page on the website of the service providing the login. Plaid doesn’t do this, instead providing the login form on their own website. Even worse, Plaid allows services to embed the form in their websites (as an iframe). It’s not possible for casual internet users to tell the difference between this and an “unsecured” form on some random website, so this appears to be encouraging bad security practice. Worse still, Plaid provides a login page that looks very official, showing the bank logo and using the bank’s color scheme.
  2. Never store passwords in plaintext. The only way for Plaid to access bank account details is with the password, and since my banking password was only required by Plaid once, they must be storing it in plaintext, or "encrypted" but convertible to plain text, so they can continue to use it to access my account.

Plaid login screen example

The problem seems to be that most banks do not provide an API to retrieve customer data, so a service like Plaid (and all the services that use Plaid) simply wouldn't be possible without breaking these "fundamental" security rules. But I'm not convinced that's justification for breaking them. If it's not possible to do it securely, should it be done at all?

My confusion here is that all of these services are "legitimate". None of them are scams; they're all providing a valuable service and have a solid reputation. Plaid has raised billions in funding!

I would think with Plaid using bank logos to make their “fake” bank login forms look legitimate, banks would be after Plaid with lawsuits. But apparently some of them are investors! On Plaid’s website Citi, American Express, and others are listed as investors. It appears that banks aren’t against this bad practice, and are, in some cases, actually encouraging it.

This makes me think that I might be missing something. Maybe Plaid has some special access to banking systems and it isn’t as bad as it seems. On the other hand, maybe Plaid’s reputation is held up only by the fact that they haven't been hacked yet. If (when) they are hacked it will be devastating, since the worst case scenario means the leaking of millions of user's active bank usernames and passwords. Also, many banks don’t protect users if they knowingly gave their credentials to a third party, so a lot of people could lose a lot of money. But if that's the case, wouldn't banks be working to stop Plaid and protect their customers?

I think many of the services provided by Plaid are neat and would like to use them, but if my suspicious here are correct I don’t think I can do so while remaining secure. Of course, I hope I’m completely wrong here and Plaid has some way to operate securely.

So, does Plaid have some special access to banking systems, or is it using user passwords to log in to bank accounts, which requires storing them in plaintext (or convertible to plaintext) and convincing users to give their credentials to a third-party, encouraging bad security practice?

If it’s the latter, I’m afraid I’ll have to pass on Plaid services for now and consider my banking password compromised.

  • 2
    I wish I asked this question about Plaid years ago. And I finally came here just now to write this question, and you have done a PERFECT job writing it already. Thanks. – Ryan Jul 17 at 14:29
14

So, does Plaid have some special access to banking systems, or is it using user passwords to log in to bank accounts, which requires storing them in plaintext (or convertible to plaintext) and convincing users to give their credentials to a third-party, encouraging bad security practice?

Plaid, and many other services (Mint comes to mind), are storing your passwords and sometimes security questions in an accessible (hopefully, reversible encryption, not plaintext) format.

Is this poor security practice? Yes.

Is there a realistic alternative? No.

Financial systems in the US almost never support any sort of federation or open banking APIs. There is no regulatory requirement or incentive for them to do so. There is no financial incentive for them to do so, as permitting 3rd parties to incorporate their data into value-added services does not benefit them, and may harm them if the 3rd party is chosen over homegrown value-added services.

The good that can be said of Plaid is that by providing a standard middleman service that's used by multiple front-ends and trusted by significant back-ends, they're reducing the number of people trying to re-invent that particular wheel. With no particular evidence, I'd rather someone specialize in this dirty job, if it needs to be done.

You, the consumer, are left with the choice of participating in this less-secure practice, and getting value-added services and inter-operation between accounts, or avoiding these services and the benefits they may offer. Enjoy!

(Actually, with Privacy.com, you have another option - you can link your back-end bank account as an ACH source using your bank routing number and account number. You may need to contact support to set it up, but it is an option. That's about as insecure as writing a check.)


Rant:

It's ridiculous. Wells Fargo, for example, allows you to create read-only sub-accounts - exactly what we'd want if we're handing credentials off to a 3rd party! However, those sub-accounts cannot be used with 3rd parties, because of the way their authentication is set up. It's like banging your head against gravel, looking for a financial that has a well-thought-out security and inter-operability model.

I understand that Capital One is actually trying to do this right, but haven't played with it myself.

  • What about... I pair my Bank account with Coinbase, transfer money and then change the Bank password? I assume, if someone breaks into Plaid he would get an old password, so I guess it's safe. – Ish Thomas Jan 25 at 2:56
  • @IshThomas That would protect your account, but be careful, as it will likely lock you out of your account - because Plaid will keep trying to log in with the old password and failing. Better to delete the account from Coinbase before changing the password. (I speak from experience, I did this to myself, I had to change my bank username to get my account unlocked (and stay unlocked) again.) – gowenfawr Jan 25 at 13:43
  • 1
    Oh wow. Thanks for the tip! I wouldn't think that's even the danger. Why wouldn't you force the user to reauthenticate? That's so stupid – Ish Thomas Jan 26 at 4:10
  • @IshThomas the entire episode reinforced my belief that banks are idiotic. They log user-agent string of bad attempts for me to see. I asked them for the source IP of the bad attempts so I could ensure it wasn't one of my many computers; they refused, said they would release on warrant or would show me if I came into the branch but couldn't give them to me. They opened a "fraud case" based on my call, but then wouldn't allow me to rename the account because no changes are possible with an open fraud case... It was a nightmare. – gowenfawr Jan 26 at 15:00
  • 1
    @gowenfawr But at least in this case, Plaid seems to be idiotic too. Retrying an authentication attempt that fails is just asking for trouble. It's possible that the banks have backed them into this by providing ambiguous error responses, some of which are legitimately retry-safe, but even then Plaid should be using more caution to avoid this worst case scenario. – GrandOpener Mar 22 at 14:00
9

I want to point out that despite Plaids apparently honest attempts at security, their approach is a privacy nightmare, as you give full access to Plaid, to all and every single information your bank has on you, including loans, funds, investment accounts, credit card statements, etc. This makes Plaid differ substantially from other payment services, such as PayPal, as they only have your account number.

If you don't believe me, here's their data collection description from their privacy statement (Effective Date: May 29, 2019, my italics):

Information collected from your financial institutions. The information we receive from the financial institutions and other financial service providers that maintain your financial accounts varies depending on the specific Plaid services our developers use to power their applications, as well as the information made available by those institutions and providers. But, in general, we collect the following types of information from your financial institutions and other financial service providers:

  • Account information, including financial institution name, account name, account type, branch number, IBAN, BIC, and account and routing number;

  • Information about an account balance, including current and available balance;

  • Information about credit accounts, including statement due dates and balances owed, payment amounts and dates, transaction history, and interest rate;

  • Information about loan accounts, including due dates, balances, payment amounts and dates, interest rate, loan type, payment plan, and terms;

  • Information about investment accounts, including identifying details about assets, quantity, and cost basis;

  • Information about the account owner(s), including name, email address, phone number, and address information; and

  • Information about account transactions, including amount, date, type, quantity, price, involved securities, and a description of the transaction.

  • The data collected from your financial accounts includes information from all your sub-accounts (e.g., checking, savings, and credit card) accessible through a single set of account credentials.

To make matters even worse, they can share all that information with their customers, i.e., the company that wants you to link with them. That means that when, e.g., your rent is paid via Plaid (my landlord uses a service that relies on Plaid), all of that information may be shared with that service! And while they, in turn, may not distribute that data further, you now have to trust another party that they are able to keep your data safe.

Again, here's the relevant excerpt from that privacy statement (again, my italics):

How We Share and Store Your Information

We do not sell or rent end user information to marketers or other third parties. But we do share end user information with third parties as described in this Policy. For example, we share your information with the developer of the application you are using and as directed by that developer (such as with another third party if so directed by you). We also share your information:

  • With your consent;

  • With our service providers, partners, or contractors in connection with the services they perform for us or our developers;

  • If we believe in good faith that disclosure is appropriate to comply with applicable law, regulation, or legal process (such as a court order or subpoena);

  • In connection with a change in ownership or control of all or a part of our business (such as a merger, acquisition, reorganization, or bankruptcy);

  • Between and among Plaid and our current and future parents, affiliates, subsidiaries and other companies under common control or ownership; or

  • As we believe reasonably appropriate to protect the rights, privacy, safety, or property of you, our developers, our partners, or Plaid.

  • I can't believe this is legal and that banks allow this! – tobiv Oct 16 at 14:27
-2

Yes, Plaid is safe. They don't store the password, they create a "bank relation" between the bank account and the service that is using Plaid with tokens. And if the customer changes his bank account password, the bank notifies Plaid of this NOC (notice of change), and you will have to reauthenticate on the Plaid link to get your bank account relation reconnected.

  • 6
    Can you provide references to the information that they use tokens, not passwords? That would certainly be the ideal way for them to do things, but other than services like Plaid, there is little indication that banks are willing/able to provide such tokens to third party services. – GrandOpener Mar 22 at 14:19
  • 6
    I believe the Plaid "tokens" you see referred to are the arbitrary token Plaid generates and hands to the business that is using Plaid as a middleman; the business will then use that token to tell Plaid which bank account to access (which Plaid will then access using the stored credentials they have, in most cases). So, yes, tokens exist, but not between Plaid and the banks; between Plaid's customers and Plaid. – gowenfawr Mar 22 at 14:32
  • 1
    I don't buy that for a second. They claim that "Plaid supports ~9,600 financial institutions in the U.S. and Canada - from national banks to local credit unions." There's no way they integrated with each individual institution using some sort of token exchange. I'd bet that a lot of the smaller banks and credit unions have no dev team to speak of and wouldn't be able to implement such systems. – Glyoko Oct 2 at 17:53

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.