Even if you strike the perfect balance and require MFA only when you absolutely have to, you’ll still occasionally have to make your users authenticate with a second factor. When you do, it’s important to do so consistently, conveniently and securely.
Use MFA consistently across all apps
Large enterprises will likely have multiple, if not dozens, of customer-facing applications. We often hear about the importance of omni-channel experiences across all apps and channels. MFA plays an important role in that omni-channel experience. It affects both the convenience and the security. Having different MFA solutions that each app dev team develops independently can create disjointed experiences for your customers. It can also render some apps more secure than others. For example, some app teams may choose to rely solely on forms of MFA like SMS or email, which have many known vulnerabilities.
The rules for when MFA is required and the forms of MFA available to customers (email, SMS, push notifications, etc.) should be consistent across all channels. That means having a centralized set of policies that dictate when MFA is required and consistent second authentication factors that can be leveraged by all applications.
Use the most secure and convenient form of MFA possible
As mentioned above, some forms of MFA like SMS and email aren’t as secure as others. The National Institute for Standards and Technology (NIST) has stated that SMS is a less secure medium for MFA. It is subject to things like SIM swapping, where fraudsters convince the phone company to tie a phone number that isn’t theirs to their SIM card, allowing them to bypass SMS MFA. There are also many other methods that hackers can use to compromise SMS MFA.
Similarly, email MFA is not very secure. MFA is supposed to be a second line of defense when hackers gain user credentials and use them to log in to your applications. Due to password reuse, hackers can often intercept email one-time passcodes using the same credentials that they fraudulently used to log in to your app as the user. That’s the very thing MFA is supposed to protect users from.
Unfortunately, Reddit discovered SMS’s vulnerabilities too late, and they were the cause of a recent breach. "We learned that SMS-based authentication is not nearly as secure as we would hope, and the main attack was via SMS intercept," stated their chief technology officer, Christopher Slowe.
In addition to being less secure, SMS and email MFA aren’t very user friendly. They each require you to open up additional browser windows or use clunky smartphone copy and paste UIs to paste a one-time passcode into a website. In a world where users will abandon a page if it takes longer than three seconds to load, that friction is not ideal.
Another often-overlooked security flaw associated with SMS MFA is that no information about what a user is approving is contained in the text message. Hackers can take advantage of this by calling a user, posing as a customer service rep, and telling them they need to verify their identity and asking them to read the code aloud over the phone. Since there is no message contained in SMS second factor about what the user is approving, they have no way of knowing they’re actually approving the hacker’s attempt to reset their password. Whichever form of MFA you use, it’s important to deliver a customized message to the user so they know exactly what they’re approving.
How hackers take advantage of MFA that doesn’t give the user details about what they’re approving
Authentication factors such as push notifications are much more secure than SMS and email. Since they don’t require opening up additional browser windows, and usually just need a fingerprint instead of a one-time passcode, they’re also more convenient. However, since customers usually aren’t willing to download a third-party application, it’s best that the push notification should come from your own application. This can be achieved through an MFA mobile SDK.
Don’t get me wrong; SMS and email MFA are more secure than no MFA at all. That being said, when you do have to require customer MFA, it’s ideal to do it in the most secure and convenient way possible, and use less secure mediums as a backup.
How can I put this into practice?
So far we’ve talked about requiring MFA only during risky scenarios, and when you do have to require MFA, minimizing friction further by doing so in the most secure and convenient way possible. Now, let’s talk about how you can actually apply this to real-life use cases.
Below are a few examples of basic data you can access about your users, and how that data can help determine whether or not to require MFA.
- Has the IP address changed in the middle of a session?
There are many problems can be associated with a request suddenly coming from a different IP address. It could be anything from a hacker hijacking a user’s session to something as simple as a user leaving their laptop open and someone stealing it and taking it home. In any of these situations, the user may have an active session with your application that a hacker could use to compromise their data. It’s important to detect IP address changes not only as the user is logging in, but on an ongoing basis. This can help alert you to these types of scenarios. If you detect an IP address change mid-session, your safest option often is to step up authentication and require MFA. Even if the most likely scenario is the customer just taking their laptop to Starbucks, these scenarios are generally few and far between and most users won’t mind the occasional MFA request.
- Is the user accessing a high-risk portion of the application?
Some areas of your applications are associated with higher risk than others. For example, if a customer is just logging into a retail application and adding things to their cart, that’s not a big deal. However, when it comes time to check out and use a saved credit card number, you want to ensure you know who is making the purchase. MFA can help you do that. Often a certain API or subset of URLs within your application can be associated with higher risk and should require MFA. The example retailer above may want to require MFA for all URLS that start with “www.exampleretailer.com/checkout-and-pay.” Similar approaches could be added for URLs like “www.business.com/edit-profile” where users can update their personal profile data.
- What is the reputation of the user’s device?
Many services maintain large databases of devices that have been associated with fraudulent activity. Plugging into these data sources can further help you determine when MFA is required. If a user is logging from a device that has been associated with fraudulent activity, there may be no need for you to wait for them to go to a risky area of your site; you may want to require MFA right away.