Jonathan Claudius and Ryan Reynolds, white-hats in the security game, have discovered a registry key in Windows 7 and Windows 8 that contains password hints, the little reminders that pop up when you try to log in and make a mistake. The hint is supposed to be an additional cue to a user’s recall, one that is meaningful to the user but not to anyone else.
There’s some debate about the significance of this discovery. On one hand, the hint is freely available to anyone trying to log in to an account, so it’s not meant to be privileged knowledge. Anyone can try to log in to any account, mash the keyboard to make a random guess at the password, and get that account’s hint in return. On the other hand, the hint is crafted by the user with the goal of helping him/herself to remember something. The amount and kind of information they can put into a hint has the potential to make guessing much, much easier, and not just for the user.
Claudius and Reynolds’ discovery shows us that anyone or any program with access to the registry can read the hint. How is this beneficial for an attacker?
For one, there’s no actual failed login attempt needed to get the hint. If I walk up to a machine, click on someone’s account name and type in a random password to get the hint, the login attempt can be logged. In the aftermath of an attack, that log entry can tie me to a particular place or network connection at a particular time. Even if there hasn’t been an attack, it’s a possible sign that someone other than the intended user has probed the system.
The fact that the hint is stored essentially in plaintext is understandable given the way Microsoft intends it to work (it’s given out prior to authentication, so why bother encrypting it for storage?), but it’s a bad, bad, bad, bad, bad idea for security purposes. A user could practically spell out their entire password in the plaintext hint and kneecap the security model altogether.
How can this be fixed? Well, ask the user to remember something before you give them the hint. Show them a set of images, one of which has been pre-selected by the user. The user is asked to click their special image to reveal the hint. Only after this soft authentication would the hint be unencrypted and revealed. The image would (or should) have absolutely no relationship to the password, no relationship to the hint. This would be a small barrier for an attacker, but even a small barrier could profoundly reduce the incidence and success of casual or automated attacks. The additional cognitive burden on the user should be very small, certainly much smaller than that of a password.
Some have called this discovery a non-issue, and in many ways this changes nothing about the Windows security model, but it does highlight some bad characteristics of the model itself.