this post was submitted on 05 Jun 2024
50 points (79.1% liked)

Open Source

31122 readers
324 users here now

All about open source! Feel free to ask questions, and share news, and interesting stuff!

Useful Links

Rules

Related Communities

Community icon from opensource.org, but we are not affiliated with them.

founded 5 years ago
MODERATORS
 

Just wondering what people are using to meet the 2FA requirement GitHub has been rolling out. I don't love the idea of having an authenticator app installed on my phone just to log into GitHub. And really don't want to give them my phone number just to log in.

Last year, we announced our commitment to require all developers who contribute code on GitHub.com to enable two-factor authentication (2FA)...

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 6 points 5 months ago (1 children)

I generate a TOTP with my password manager, it stores all my other login details and keeps it simple.

[–] [email protected] 5 points 5 months ago (3 children)

That seems like it defeats the "2" part of 2FA. If your password manager is compromised the attackers now how complete access.

[–] [email protected] 6 points 5 months ago

Technically true.

You are right, having the password in the same vault does mean that if the vault itself is compromised they have both. Guess I could move the TOTP to a separate authenticator app but the only other apps I have a mobile only and there are times I need to login without having hands on my phone.

I guess the time based aspect of the TOTP makes it a little more resistant to having someone monitor my keystrokes or clipboard or whatever and capture a relatively long lived secret like my password. So I guess its a comprise I'm willing to make.

[–] [email protected] 3 points 5 months ago* (last edited 5 months ago) (1 children)

That's minimal to me. I chose 1password for this exact reason, read all of their technical docs.

1password uses encryption with a 2-part key, your password and your "Secret key" which is essentially a salt. Combining those two, they encrypt your entire storage blob and store it. They're very clear that there is no backdoor, there it is encrypted using your keys, and they do not store those keys anywhere - and that if you lose your keys you're out. There are zero recovery options. Which I love. (Which means I do not recommend it to non tech folks who will probably lose one of these keys)

So the secret key is similar to a guid, can have that written down somewhere, and your password should never be written down anywhere, and be completely unique. Doing those two things, I feel confident that keeping my 2FA in my most secure area is safe. There is minimal chance that someone is able to log in remotely to my 1password, even if they got my key, my password isn't written down.

The convenience of this is x1000, while the risk to me is negligible. It's why when I worked in fintech it was the manager of choice, and I recommend it for secrets in kubernetes. Until they prove me wrong, security is truly number one with them.

[–] [email protected] 2 points 5 months ago* (last edited 5 months ago) (1 children)

I love 1Password, they're great (I personally use Bitwarden for my passwords, but would happily recommend either of them). But by putting both your authenticator codes and your passwords in the same place, you now have a single point of failure. What happens if someone finds an exploit in 1Password that gives them access to your account? The whole point of 2FA is to not have a single point of failure.

[–] [email protected] 3 points 5 months ago

I'll happily take that chance for the convenience. Even if 1password leaks, they don't have the keys to my vault. They would need my key and password to unlock it. The only time that isn't needed is if it's unlocked, which only is on my linux computer, which means they need to find an exploit with their app. In the 7 years I've used them I've never even heard a wiff of something even small happening.

[–] [email protected] 2 points 5 months ago (1 children)

If you only need one factor to log into your password manager, you’re doing it wrong.

[–] [email protected] 3 points 5 months ago (1 children)

That's still a single point of failure. What happens if someone finds an exploit that bypasses the login process entirely?

[–] [email protected] 2 points 5 months ago (1 children)

That's still a single point of failure.

So is TLS or the compromise of a major root certificate authority, and those have no bearing on whether an approach qualifies as using 2FA.

The question is “How vulnerable is your authentication approach to attack?” If an approach is especially vulnerable, like using SMS or push notifications (where you tap to confirm vs receiving a code that you enter in the app) for 2FA, then it should be discouraged. So the question becomes “Is storing your TOTP secrets in your password manager an especially vulnerable approach to authentication?” I don’t believe it is, and further, I don’t believe it’s any more vulnerable than using a separate app on your mobile device (which is the generally recommended alternative).

What happens if someone finds an exploit that bypasses the login process entirely?

Then they get a copy of your encrypted vault. If your vault password is weak, they’ll be able to crack it and get access to everything. This is a great argument for making sure you have a good vault password, but there are a lot of great arguments for that.

Or do you mean that they get access to your logged in vault by compromising your device? That’s the most likely worst case scenario, and in such a scenario:

  • all of your logged in accounts can be compromised by stealing your sessions
  • even if you use a different app for your 2FA, those TOTP secrets and passkeys can be stolen - they have to be on a different device
  • you’re also likely to be subject to a ransomware attack

In other words, your only accounts that are not vulnerable in this situation solely because their TOTP secret is on a different device are the ones you don’t use on that device in the first place. This is mostly relevant if your computer is compromised - if your phone is compromised, then it doesn’t matter that you use a separate password manager and authenticator app.

If you use an account on your computer, since it can be compromised without having the credentials on device, you might as well have the credentials on device. If you’re concerned about the device being compromised and want to protect an account that you don’t use on that device, then you can store the credentials in a different vault that isn’t stored on your device.

Even more common, though? MITM phishing attacks. If your password manager verifies the url, fills the password, and fills your TOTP, then that can help against those. Start using a different device and those protections fall away. If your vault has been compromised and your passwords are known to an attacker, but they don’t have your TOTP secrets, you’re at higher risk of erroneously entering them into a phishing site.

Either approach (same app vs different app) has trade-offs and both approaches are vulnerable to different sorts of attacks. It doesn’t make sense to say that one counts as 2FA but the other doesn’t. They’re differently resilient - that’s it. Consider your individual threat model and one may be a better option than the other.

That said, if you’re concerned about the resiliency of your 2FA approach, then look into using dedicated security keys. U2F / WebAuthn both give better phishing resistance than a browser extension filling a password or TOTP can, and having the private key inaccessible can help mitigate device compromise concerns.

[–] [email protected] 2 points 5 months ago

That's still a single point of failure. What happens if someone finds an exploit that bypasses the login process entirely?

I read this as someone bypassing the GitHub login entirely. Good luck 2FAing your way out of that one! 😜