Microsoft’s research team studied this extensively. They looked at what actually happens when you enforce complexity requirements. Users don’t create randomly generated passwords. They follow predictable patterns. Capital letter at the start. Numbers at the end. Exclamation point at the very end. The word “Password” appears in about eight percent of “complex” passwords. When you force rotation, users increment numbers. Summer2024 becomes Fall2024. Or they add exclamation points. Or they change a single character and call it done. The false sense of security is dangerous. IT departments see compliance numbers go up. Everyone is following the password policy. The auditors are happy. Meanwhile, actual security hasn’t improved at all.


MONTH??
It’s monthly at my company. Combined with other complexity requirements, it’s pushed everyone into such predictable patterns that I could probably guess my way into any manager’s PC in probably a few minutes.
Also, there’s no lockdown after X attempts. I can try infinitely, as far as I’m aware.
Eh, AFAIK that’s not a best practice anyway, at least not any low number. From what I recall, the recommendation is to either have a high number of attempts that causes a lockout (50+?) or high-priority alerts when a large number of invalid attempts is detected. One of the problems with lockouts based on X attempts, especially low numbers like you often see, at least in my mind, is that it opens people up to a denial of service attack. Let’s say that all account names are predictable, like first initial and last name. A rogue user could lock out anyone they wanted to with that knowledge. What if they know or can easily predict the usernames for all admins or IT people in the organization and they lock them all out?
Typically you want to do the lockout for a location, not the user, or you step up the auth level. 3 bad logins -> please mfa before trying again.
But yeah, letting an attacker do that at will is bad. I’m a fan of token bucket rate limiting with exponential back off. You get 10 attempts. A new attempt is added every second. An attempt while the bucket is empty makes that become two, then four and so on.
Most people never notice because a buffer of ten and a new attempt every second just never runs out. If you accidentally hold down enter you’re only blocked for a few moments. A dumb attacker quickly locks themselves out forever.
Good points, thanks. I wasn’t familiar with token bucket rate limiting.
Our organization got hacked and there was about a year after where CISO had us changing passwords every two weeks.
ThisPasswordisforJANUARY1stMonth!
That was the recommendation for years.
It was commonly 90 days for regular user accounts, and 30 days for admin/privileged accounts.
with automated password rotation, and no api access (no permission to use api access, that is) to the keyvault. And they expected us to automate stuff too!
I had companies where it was monthly. suxed