Many of you have been asking for my thoughts on the #LastPass breach, and I apologize that I'm a couple days late delivering.

Apart from all of the other commentary out there, here's what you need to know from a #password cracker's perspective!

Your vault is encrypted with #AES256 using a key that is derived from your master password, which is hashed using a minimum of 100,100 rounds of PBKDF2-HMAC-SHA256 (can be configured to use more rounds, but most people don't). #PBKDF2 is the minimum acceptable standard in key derivation functions (KDFs); it is compute-hard only and fits entirely within registers, so it is highly amenable to acceleration. However, it is the only #KDF that is FIPS/NIST approved, so it's the best (or only) KDF available to many applications. So while there are LOTS of things wrong with LastPass, key derivation isn't necessarily one of them.

Using #Hashcat with the top-of-the-line RTX 4090, you can crack PBKDF2-HMAC-SHA256 with 100,100 rounds at about 88 KH/s. At this speed an attacker could test ~7.6 billion passwords per day, which may sound like a lot, but it really isn't. By comparison, the same GPU can test Windows NT hashes at a rate of 288.5 GH/s, or ~25 quadrillion passwords per day. So while LastPass's hashing is nearly two orders of magnitude faster than the < 10 KH/s that I recommend, it's still more than 3 million times slower than cracking Windows/Active Directory passwords. In practice, it would take you about 3.25 hours to run through rockyou.txt + best64.rule, and a little under two months to exhaust rockyou.txt + rockyou-30000.rule.

Keep in mind these are the speeds for cracking a single vault; for an attacker to achieve this speed, they would have to single out your vault and dedicate their resources to cracking only your vault. If they're trying 1,000 vaults simultaneously, the speed would drop to just 88 H/s. With 1 million vaults, the speed drops to an abysmal 0.088 H/s, or 11.4 seconds to test just one password. Practically speaking, what this means is the attackers will target four groups of users:

1. users for which they have previously-compromised passwords (password reuse, credential stuffing)
2. users with laughably weak master passwords (think top20k)
3. users they can phish
4. high value targets (celebs, .gov, .mil, fortune 100)

If you are not in this list / you don't get phished, then it is highly unlikely your vault will be targeted. And due to the fairly expensive KDF, even passwords of moderate complexity should be safe.

I've seen several people recommend changing your master password as a mitigation for this breach. While changing your master password will help mitigate future breaches should you continue to use LastPass (you shouldn't), it does literally nothing to mitigate this current breach. The attacker has your vault, which was encrypted using a key derived from your master password. That's done, that's in the past. Changing your password will re-encrypt your vault with the new password, but of course it won't re-encrypt the copy of the vault the attacker has with your new password. That would be impossible unless you somehow had access to the attacker's copy of the vault, which if you do, please let me know?

A proper mitigation would be to migrate to #Bitwarden or #1Password, change the passwords for each of your accounts as you migrate over, and also review the MFA status of each of your accounts as well. The perfect way to spend your holiday vacation! Start the new year fresh with proper password hygiene.

For more password insights like this, give me a follow!

@epixoip 100,100 rounds is a new default. Many old accounts have the rounds set to 5,000.

@alx Incorrect. It was 5000 *client side* iterations plus 100,000 server-side iterations. See my comments on the 2015 LastPass breach for reference:

https://arstechnica.com/information-technology/2015/06/hack-of-cloud-based-lastpass-exposes-encrypted-master-passwords/

Hack of cloud-based LastPass exposes hashed master passwords

Users: Change your master password and enable 2-factor authentication immediately.

Ars Technica

@epixoip No, the server-side iterations were a joke. They only applied that to the hash used to verify correct logins, but the encryption key was still derived with 5000 iterations and it was used to encrypt pretty much everything. In 2018 I actually found pieces of data that were encrypted with that key and that any website could easily steal: https://palant.info/2018/07/09/is-your-lastpass-data-really-safe-in-the-encrypted-online-vault/. That’s why they changed the default, but they apparently didn’t bother upgrading old accounts (or at least not all of them).

@alx

Is your LastPass data really safe in the encrypted online vault?

LastPass fanboys often claim that a breach of the LastPass server isn't a big deal because all data is encrypted. In reality, somebody able to compromise the LastPass server will likely gain access to the decrypted data as well.

Almost Secure
@WPalant @alx Oh shit! Ok that definitely changes some things...

@epixoip Yeah. Back in 2018 I urged them to check their logs for suspicious referrers on requests to that script. Just to see whether anybody was already stealing this data. Because the vulnerability was way too obvious.

They never replied, and I don’t think that they did this. Their philosophy seems to be: if we don’t go looking, we won’t learn about a compromise, so we don’t have to publicly admit it.

And here they at least had logs. For way too many critical vulnerabilities in their browser extension there was no way for them to know whether these were already being exploited to exfiltrate people’s passwords. This didn’t stop them from confidently declaring that they fixed the issue before anyone could exploit it.

@alx

@WPalant @epixoip @alx one could read this LastPass blog as a promise to upgrade all existing users from 5000 to 100,100 clientside iterations (2018) https://blog.lastpass.com/2018/07/lastpass-bugcrowd-update/
LastPass BugCrowd Update - The LastPass Blog

Learn about a few recent product improvements that are now live, as a result of the bug bounty program.  

The LastPass Blog

@valentijn Yes, same in the statement they gave me and which I quoted under https://palant.info/2018/07/09/is-your-lastpass-data-really-safe-in-the-encrypted-online-vault/:

> The default for new users was changed in February 2018 and we are in the process of automatically migrating all existing LastPass users to the new default.

They certainly didn’t deliver for some users, and I’m not certain whether they delivered at all.

@epixoip @alx

Is your LastPass data really safe in the encrypted online vault?

LastPass fanboys often claim that a breach of the LastPass server isn't a big deal because all data is encrypted. In reality, somebody able to compromise the LastPass server will likely gain access to the decrypted data as well.

Almost Secure

@WPalant

Did they not even change the default in Feb 2018? I have an account created on 7 July 2018 that was set to 5000...

@valentijn @epixoip @alx

@popcorncx That’s weird. They definitely changed it in February 2018, I verified that.

Edit: Just checked this, I confirmed the default being changed on Februar 24, 2018. Did they reverse the change at some point to reinstate it later maybe?

@valentijn @epixoip @alx

@popcorncx @WPalant @valentijn @epixoip @alx Where can we check our own account value? This is going to be a whole mess as I get all my non technical people sorted out.

@AGTMADCAT Here is the help article: https://support.lastpass.com/help/general

It’s under General preferences in Account Settings, a setting called “Password Iterations”

@popcorncx @valentijn @epixoip @alx

How do I change my General preferences in Account Settings? - LastPass Support

You can manage various general preferences in the Account Settings for your LastPass account.

@WPalant @valentijn @epixoip @alx They certainly did for some -- I'm a very old account, and they definitely upped me to 100,100 at least a couple of years ago. (And then screwed something else up, with the result that I wound up setting my account to a different, somewhat higher number.)

@epixoip Fun fact: also back in 2018 I pointed out that not encrypting “equivalent domains” data is a bad idea. Anybody who can manipulate the data on the LastPass server will be able to trick the extension into filling in passwords on the wrong sites – exfiltrating passwords without having to decrypt anything. I received a bug bounty for this report, it was marked as “resolved” in 2018. Yet now I see that this data is still unencrypted. No idea how this is supposed to be resolved.

And I’m afraid to even look into the “custom_js” attribute of theirs. It was pointed out back in 2015 just how dangerous this is: https://www.martinvigo.com/even-the-lastpass-will-be-stolen-deal-with-it/. Yet this attribute is still present today. I suspect that it is still in use and still unencrypted.

@alx

Even the LastPass Will be Stolen Deal with It!

How to obtain encryption keys to decrypt the LastPass vault in different scenarios

Martin Vigo