News for hackers. Stuff that matters.
Re:Introducing TAuth: Why OAuth 2.0 is bad for banking APIs ... by obeattie on Thursday May 05, 2016 @12:15PM (#11637372)
The flow we (Mondo) are considering for this:

1. MyLittleApp opens web view to log into Mondo

2. User enters something to identify themselves into the web view (eg. email address, phone number)

3. We dispatch a notification to the user's registered device (ie. the Mondo app where the user is logged in – this may be the same device or a different device)

4. User opens the Mondo app and accepts/rejects the authorisation request

5. User returns to MyLittleApp, OAuth flow completes

In this flow, the user is not exposing their login credentials to the app… at worst, the app could extract their email/phone number. It also introduces another factor into the auth flow: the user's registered device.

Re:Introducing TAuth: Why OAuth 2.0 is bad for banking APIs ... by Maarten88 on Thursday May 05, 2016 @03:11PM (#11638909)
I have two factor auth configured on my most sensitive logins (Microsoft account, Google account, Lastpass), and it works almost exactly the same. Except I use a standard Authenticator app. No need for proprietary protocols or apps.
Re:Introducing TAuth: Why OAuth 2.0 is bad for banking APIs ... by sandGorgon on Thursday May 05, 2016 @02:23PM (#11638564)
This is unnecessary - if you are assuming that people will have Mondo app already, then the SDK will simply trigger an intent to open the app.

The reason webviews are present in the SDK is because of the possibility that your app is not installed.

You cannot depend on SMS pin without your app, because that can be spoofed. I don't see any option except for manual pin copy paste from the app to a well known website that can be opened in the browser.

Re:Introducing TAuth: Why OAuth 2.0 is bad for banking APIs ... by obeattie on Thursday May 05, 2016 @02:35PM (#11638651)
The user may be on a desktop, or a different device. We want to support such flows too.

I agree in the "native app on same device" situation, we can bypass all this by bouncing straight to our app though.

Re:Introducing TAuth: Why OAuth 2.0 is bad for banking APIs ... by sandGorgon on Thursday May 05, 2016 @11:17PM (#11641444)
You misunderstand. I'm not advocating for an app only flow. I'm suggesting that your own flow is restricted to work well only if the Mondo app is preinstalled ... In which case your flow is useless anyway.

I think you should talk about the case when a customer does not have Mondo app installed and another app asks for authorization to access. How will the auth flow work.

Re:Introducing TAuth: Why OAuth 2.0 is bad for banking APIs ... by comex on Thursday May 05, 2016 @09:43PM (#11641116)
SMS spoofing is a problem if the flow depends on the user sending an SMS, and generic impersonation (by the client app) is a problem if users have to do something like click a link in the SMS and enter a password. But if a phone number is already associated with the account, and the only SMS is one from the service to the user containing a randomly generated login code, it should be safe, no? At least, that's the flow everyone and their dog seems to use these days.

Of course, that doesn't work without a phone.

Re:Introducing TAuth: Why OAuth 2.0 is bad for banking APIs ... by sandGorgon on Thursday May 05, 2016 @11:15PM (#11641438)
The problem is hidden in what you wrote.

> and the only SMS is one from the service to the user

There is zero possibility of a customer actually recognizing a phone number...or even a shortcode. Assume that whatever SMS comes in your phone is going to be trusted by users. However the one thing that people will know how to do is Google their banks name and go to the corresponding website.

Re:Introducing TAuth: Why OAuth 2.0 is bad for banking APIs ... by hueving on Friday May 06, 2016 @01:13AM (#11641847)
The customer doesn't need to know the number, that's the point. The only sensitive info is what is being sent, so there is absolutely nothing to gain by spoofing a number and sending junk to the user.

It's like me telling you I'm going to email you the passcode to a gate. If Bob overhears this and knows your email and my email, he still isn't in a position to do anything if he can spoof emails. Best case is he sends you the wrong code and you don't get access until you get the real code from me.

Re:Introducing TAuth: Why OAuth 2.0 is bad for banking APIs ... by sandGorgon on Friday May 06, 2016 @01:35AM (#11641920)
The problem we are attempting to solve is that a third party app is demanding access to your bank account, but you only want to enter your password on the bank page. So the trust that needs to be establishmed, is that a page (being shown by the app through webview) is a genuine bank page and you can go ahead and put in your password there.

Bob is impersonating you in the first place and asking for the password. How do I know whether it is you or him?

Re:Introducing TAuth: Why OAuth 2.0 is bad for banking APIs ... by hueving on Friday May 06, 2016 @01:56PM (#11645552)
Bob sends me a code, I type it in to his phishing site. So what? It doesn't actually result in him gaining anything useful because I still haven't revealed any banking login credentials.
Re:Introducing TAuth: Why OAuth 2.0 is bad for banking APIs ... by supergeek133 on Thursday May 05, 2016 @12:17PM (#11637395)
PIN Code Auth is a way to deal with this as well. Similar to how a Roku works on Netflix or something else.
Re:Introducing TAuth: Why OAuth 2.0 is bad for banking APIs ... by sjtgraham on Thursday May 05, 2016 @12:18PM (#11637403)
What's to stop the app (or anyone in the context of a rooted device) replacing the legit Mondo auth page with a shim? Nothing.
Re:Introducing TAuth: Why OAuth 2.0 is bad for banking APIs ... by jhuckestein on Thursday May 05, 2016 @12:23PM (#11637467)
What does replacing the auth page gain the attacker? At worst the user enters their email address into a phishing page. The important thing is that there isn't a password :)
Re:Introducing TAuth: Why OAuth 2.0 is bad for banking APIs ... by nemothekid on Thursday May 05, 2016 @03:38PM (#11639097)
>What does replacing the auth page gain the attacker?

If the spoof app has a "Connect with Twitter* (and you don't have the Twitter app installed), and then a webview is opened, the spoof app can replace Twitter's login page with their own, and capture the username and password.

Re:Introducing TAuth: Why OAuth 2.0 is bad for banking APIs ... by obeattie on Thursday May 05, 2016 @04:07PM (#11639290)
In the proposed implementation above, the _only_ piece of information that a user enters inside the web view is a username. The user must then use the native Mondo app on a previously-authenticated device to complete the OAuth flow. The Mondo app could also require biometric (ie. Touch ID) authentication.

While a malicious application can inject JavaScript to intercept the username, this alone is useless to an attacker.

Re:Introducing TAuth: Why OAuth 2.0 is bad for banking APIs ... by e12e on Thursday May 05, 2016 @08:18PM (#11640752)
Well, the malicious application can inject a password-field, and an unsuspecting user might not realize that (s)he is giving an app/attacker the password, and not the correct third party.

User education only goes so far, this type of attack can also make a web view that traditionally asks for a TOTP one-time password code susceptible to leaking a users password, even if the normal login flow doesn't ask for that password.

[ed: note that it's pretty trivial to eg: set up hidden cameras in voting booths, if you want to spy on a few people, or perhaps have people film themselves in a voting booth - the point is rather that if most people make an effort to follow the common rules wrt. voting booths, the system is reasonably secure. And it's not trivial to make similar claims about a (presumably) centralized on-line system.]

Re:Introducing TAuth: Why OAuth 2.0 is bad for banking APIs ... by obeattie on Friday May 06, 2016 @04:30AM (#11642497)
On Mondo, there simply are no passwords at all. Instead, when the user wishes to log into our first-party apps, we send a login link to their registered email.

We'll almost certainly add additional required factors to this process (eg. biometrics), as we see the user logging into the Mondo app on a new device as one of the most critical from a security perspective.

Re:Introducing TAuth: Why OAuth 2.0 is bad for banking APIs ... by e12e on Friday May 06, 2016 @01:12PM (#11645286)
I hope that's not biometrics in a potentially attacker-controlled web-view (if such a thing is possible) - biometrics are difficult to revoke...
Re:Introducing TAuth: Why OAuth 2.0 is bad for banking APIs ... by sandGorgon on Thursday May 05, 2016 @11:22PM (#11641460)
As I mentioned earlier..this is predicated on the user having installed a Mondo app. That is not workable.

You must have a flow where this works without your app being installed.

Re:Introducing TAuth: Why OAuth 2.0 is bad for banking APIs ... by obeattie on Friday May 06, 2016 @04:26AM (#11642490)
Why? In order to have a Mondo account, the user must have our app installed.
Re:Introducing TAuth: Why OAuth 2.0 is bad for banking APIs ... by sandGorgon on Friday May 06, 2016 @06:24AM (#11642862)
because people will install your app and then uninstall it. However they may still retain the OTHER developer's app that includes your SDK. This is just how customers behave.

If your flow is blocking on Mondo app being installed - that's fine. This means that the surface area of attack is restricted around your app. That's totally OK.

However - that is a very different positioning than oauth. I would say Oauth will degrade gracefully to your protocol if the endpoint is restricted to another app that must mandatorily be installed on the host device.

Re:Introducing TAuth: Why OAuth 2.0 is bad for banking APIs ... by baby on Thursday May 05, 2016 @12:58PM (#11637791)
Yup. That's every app's problem though. I can also create a webpage and design a fake "bank login" inside of it to make you enter your credentials there. There is nothing you can do about that other than educating the user.
Re:Introducing TAuth: Why OAuth 2.0 is bad for banking APIs ... by mixedbit on Thursday May 05, 2016 @01:25PM (#11638042)
Yes, but browsers design goal is to allow educated users to distinguish fake and legitimate sites (URL bar should never be forgeable). With mobile apps, the app can display anything and there is no way for even well educated user to recognize forgeries.
Re:Introducing TAuth: Why OAuth 2.0 is bad for banking APIs ... by abritishguy on Thursday May 05, 2016 @01:35PM (#11638131)
The aim is therefore to remove the reliance on it being genuine. If you don't have passwords then there is no passwords to steal.
Re:Introducing TAuth: Why OAuth 2.0 is bad for banking APIs ... by baby on Thursday May 05, 2016 @01:56PM (#11638319)
I think that's Android/iOS responsability.
Re:Introducing TAuth: Why OAuth 2.0 is bad for banking APIs ... by Natanael_L on Thursday May 05, 2016 @05:34PM (#11639830)
The OS can't know the intent of the view for certain, so no.
Re:Introducing TAuth: Why OAuth 2.0 is bad for banking APIs ... by chatmasta on Thursday May 05, 2016 @12:21PM (#11637439)
Ok, so in that case the malicious app is able to steal your password... but if login requires two factor auth, the password is useless without also having access to SMS (or whichever 2fa solution) on the associated device.