The other day I used a website and they didn't let me pick a password.
They sent me a very secure random one via email ๐ in the year 2025, this still happens.
Only the hottest memes in Cybersecurity
The other day I used a website and they didn't let me pick a password.
They sent me a very secure random one via email ๐ in the year 2025, this still happens.
There's really nothing wrong with that, it's a sort of half-baked 1.5FA, I would hope/assume you had to immediately change your password after.
It's just 1 factor, as they are using "something you have," i.e. your email account, to authenticate you initially. Anyone with access to the account would have the password, so it can't count as a unique factor.
99 % of websites even with "2FA" enabled allow to reset all login credentials with an email reset. Or worse, an SMS reset.
aka it's all just 1FA with the password+TOTP just being there for "convenience", and they trust gmail's actual 2FA not to get breached because if it does then the account is donzo.
Not that emailing passwords is good, because users won't change them and are likely to leak them. However login systems that are just an email with temporary credentials are superior to the standard system with the possibility to reset password by email, since they're basically that with less attack surface. The service provider never even has to process the user's password. Literally the only downside is usability, which can be a worthwhile tradeoff.
Alternatively one could do OIDC, but the downside is it only works with whichever authentication providers are setup whereas email registrations work without an intermediary such as google or Microsoft which is a big plus in my book, and might even be a hard requirement in B2B scenarios.
Hmm, yup, you're right, my bad.
I guess it'd help if it still required an MFA code added or something.
Australian Army still does this.
I don't even know how the fuck this happens.
Enter password
Incorrect
Enter password again, carefully to make sure no typos
Incorrect
Change password to the one you remember it to be
"New password can't be the same as old password"
๐ฌ
Shit sometimes gives me this while using a password manager! The saved password is correct. Even the change password thing says it should be correct. Still tells me it's wrong trying to use it.
That just means they're forcing everyone to change their passwords but they don't want to come out and tell you about it.
If you're lucky, some overzealous sysadmin is just trying to enforce regular password updates on his users, and makes them expire every once in a while.
More likely, there was a breach of some sort that they want to keep on the hush.
It's also possible there's a hidden max password size somewhere, like some fields only counting the first x characters of the password but it's inconsistent across different forms.
USAA is guilty of this shit. Let's you set a huge password. Truncates it. Doesn't tell you about it. Error when logging in.
I want to beat the motherfucker behind this strategy.
E: Kagi too. I bitched out the support and I got a 'meh, it should have told you' response. Fix your shit.
Not sure what is worse, not telling you and giving an error or not telling you and letting you log in (ie truncating the password both times, letting you think your password is longer than it is)
but they don't want to come out and tell you about it.
It also doesn't require a code change to continue blaming the user when you invalidate all current passwords.
It's a couple database queries to move all current passwords to old passwords, and change current (hashed) password for everyone to "deadbeef". Nobody can guess a value that adds to their salt and hashes to "deadbeef", and you get this behavior.
What gets me is the "password is too similar to old password".
How do they know? Are they storing them in plain text? I would imagine the hash would change drastically even if I change a single character, no?
I can imagine one legitimate case: when you create a password, they save the hash for the full password as well as the hash for the password without the last character. So if you attempt to change only the last character, they can detect it. They'd need to salt the two separately though.
In theory, they could do the same for every character, but they'd have to save 20+ combinations for that (plus all the salt), so I doubt anyone is doing that.
No need to store it, you can do the opposite, create 20 variations of the new password, hash them, check if any match with the old password.
Edit : nevermind, it would only work if they added data instead of editing it.
The strongly recommended hashing algorithms are slow on purpose, and often use up a lot of RAM, too. Multiplying the number of hashes you would need would multiply CPU/memory load for every new password.
They pay a kid in Bangladesh 14c an hour to visually compare the new password against the old one.
Usually you have to enter your old password on the same form in order to set a new one.
Alternatively they could run a bunch of common substitutions on the new password, hash, and check if anything matches the old hash.
I mean they could technically check common password modifications and test all of those hashes against your old hash to see, if they're storing plaintext and you should delete your account immediately.
My guess is the latter is correct
Storing in plaintext? That's a paddlin'.
Not salting your hashes? That's a paddlin'.
Sending hashes to the front-end? That's a paddlin'.
You gotta salt yer hash, that's how you bring out the flavour!
It pisses me off that so many companies store a database of X number of your old passwords in the first place. Like, fuck off twerps, I probably still use those old passwords for at least 20 other logins. When your shitty database is compromised I now have to worry about all of them.
The old passwords don't have to be stored in plain text. They can still be hashed and salted.
You're like, so close.
Don't reuse passwords between different services, or after a password reset. You're aware of exactly why that's a bad practice (a compromise of any one of those services, or an old database of those services will expose that password), so why knowingly bear that risk?
Last time I had to implement a feature like that, I stored a substring of the old password's hash. If one User in a million gets a False quotation Mark same Passwort quotation Mark message, I can live with it.
Hey, ฤฐ know quotation marks are expensive, but since I like your attitude to keeping your users secure you can have some of mine: " " " " "
You can just paste copy them into your next post.
I mean, that's true if you reuse your passwords instead of using a password manager that can generate random gibberish... Which is itself a very poor habit exactly because of this very fact?
Even assuming a company follows best practices (a bold assumption that is wholly inconsistent with reality) there's ALWAYS a possibility of a breach - and it's not if, it's only when.
So, everyone should be using a password manager by default.
I like to use keepassXC personally because it's fully under my control. I don't really care for ones that are hosted by 3rd parties because that introduces more risk if they get beached, but for many people that's fine; it's more convenient for the user. To me it's important enough that I manage it all locally.
I probably still use those old passwords for at least 20 other logins.
Right at the top of the list of things not to do with a password.
Someone with your Amazon account might assume you use Facebook, Youtube, Steam, and every bank around your location(they know). There's 2factor, but not everywhere
They could still be doing the validation server side even if you didn't hit submit, like when you leave the text box.
Nah it pulls your plain text password in after you enter your email to compare it to ๐
This thread is just a series of people who think they understand.
Thinking you understand when you do not is the real cyber security threat.
This is a password reset form. This requires the user having successfully authenticated or gone through a password recovery form. The best practices in this instance are not the same as the best practices for a login form.
This form can be used to brute force or dictionary guess passwords and infer what they are without a limitation on login attempts. Even if the password has already been invalidated on that service, finding a collision on this service gives you a password that might work on other services for the same email address/username
I mean I guess in theory they could be sending the password to the backend and validating it against your hash? In reality I doubt anybody would do that tho as it's a huge load on the server
Well when the website is so helpful and give you instant feedback on the correctness of your password... Then it would do that to hackers as well.
A password reset occurs within a state that has some form of authorization.
Definitely a thing, usually a debounce meaning it waits half a second after the last key stroke to perform validation.
Can someone explain why this would be bad?
Edit: ah i got it, before i submit as in while you are typing it in it shows you a message. I thought it was just one of those warnings where it goes "has to have capital letters, at least 8 characters, etc".
Because in order to know that the password is the same before submission, it has to store it in plaintext (or I guess it could hash every input and compare it immediately but no way that's happening).
Idk how you came to these conclusions. They might be storing it plain text and comparing directly, sure. Any website might be. But there is nothing about this that indicates that they are actually doing that for sure. They could absolutely just be comparing the hash after each input. The problem that for sure is happening is that they have sent the hash tot the front end, i.e. in the web page elements that the user can inspect, and they are verifying your current/used password(s) on the fly without even a submit attempt counting against them. All of which means a password farmer could just harvest the hashes for every username they try, and/or use bots to put in a username/password, hit "forgot password", and then brute force the stored current/password(s) without any red flags being raised.
Plus if the front end is hashing with each keystroke, I feel like the security of the final hash is far, far, less secure to any observer/eavesdropper.
If the password is hunter2
and the front end sends a hash for h
, then hu
, then hun
, etc., then someone observing all these hashes only has to check each hash against a single keystroke, then move on to the next hash with all but the last keystroke known. That hash table is a much smaller search space, then.
We're all assuming there isn't a "current password" field right next to "new password" on the reset form. Most of them do, though there are arguments that they shouldn't.