Skip to content

Password Lockout Disabled

What does this mean ?

Account lockout is a security feature often present in applications as a countermeasure to the brute force attack on the password based authentication mechanism of the system. After a certain number of failed login attempts, the users' account may be disabled for a certain period of time or until it is unlocked by an administrator. Other security events may also possibly trigger account lockout. However, an attacker may use this very security feature to deny service to legitimate system users. It is therefore important to ensure that the account lockout security mechanism is not overly restrictive.

What can happen ?

A common threat web developers face is a password-guessing attack known as a brute force attack. A brute-force attack is an attempt to discover a password by systematically trying every possible combination of letters, numbers, and symbols until you discover the one correct combination that works.

Recommendation

Implement more intelligent password throttling mechanisms such as those which take IP address into account, in addition to the login name. Implement a lockout timeout that grows as the number of incorrect login attempts goes up, eventually resulting in a complete lockout. Consider alternatives to account lockout that would still be effective against password brute force attacks, such as presenting the user machine with a puzzle to solve.

Sample Code

Vulnerable :

private void AuthenticateRequest(object obj, EventArgs ea)
{
  HttpApplication objApp = (HttpApplication) obj;
  HttpContext objContext = (HttpContext) objApp.Context;  
  // If user identity is not blank, pause for a random amount of time
  if ( objApp.User.Identity.Name != "")
    {
      Random rand = new Random();        
      Thread.Sleep(rand.Next(minSeconds, maxSeconds) * 1000);
    }      
}

References