joeware - never stop exploring... :)

Information about joeware mixed with wild and crazy opinions...

LDAP_SERVER_POLICY_HINTS_OID

by @ 12:41 am on 2/10/2012. Filed under tech

As more and more companies move forward with automated provisioning and automated password management and workflow an issue was found with tools like FIM that proxy the password change. I.E. You identify yourself to FIM and tell it to change the password for you, FIM uses the SET Password operation instead of the CHANGE Password operation which bypasses the password history rules.

What does that mean? In other words, say your company has a password policy that includes complex passwords that have to be changed every month and can’t be repeated for 25 passwords. Normally that means if you want to use JoeRocks1! as your password every month you would have to change it to 24 other values first and then re-change it back to JoeRocks1![1].  Well this "bug", or really, implementation flaw with using SET instead of CHANGE means that you could just tell FIM to re-use JoeRocks1! every month. FIM doesn’t perform any validation, it just depends on the OS and again… It is telling the OS to ignore the history policy via the use of SET.

To fix this, Microsoft released a patch for Active Directory which introduces a new LDAP control that helps alleviate this issue. This control is called… tada – LDAP_SERVER_POLICY_HINTS_OID and is used with password SET operations.

The KB article for the curious is http://support.microsoft.com/kb/2443871

 

For the folks that use AdMod, I added functionality this evening to allow AdMod to take advantage of the new control. There is a new switch called -policyhints which enables the control.

[Thu 02/09/2012 23:03:49.78]
C:\>admod -default -rb cn=testuser1,cn=testusers unicodepwd::Password2! -optenc -exterr -policyhints

AdMod V01.18.00cpp BETA Joe Richards (joe@joeware.net) February 2012

DN Count: 1
Using server: WIN8Dom-DC1.win8dom.loc:389
Directory: Windows Server 8 Developer Preview
Base DN: cn=testuser1,cn=testusers,DC=win8dom,DC=loc

Modifying specified objects…
   DN: cn=testuser1,cn=testusers,DC=win8dom,DC=loc…

The command completed successfully

[Thu 02/09/2012 23:04:01.46]
C:\>admod -default -rb cn=testuser1,cn=testusers unicodepwd::Password2! -optenc -exterr -policyhints

AdMod V01.18.00cpp BETA Joe Richards (joe@joeware.net) February 2012

DN Count: 1
Using server: WIN8Dom-DC1.win8dom.loc:389
Directory: Windows Server 8 Developer Preview
Base DN: cn=testuser1,cn=testusers,DC=win8dom,DC=loc

Modifying specified objects…
   DN: cn=testuser1,cn=testusers,DC=win8dom,DC=loc…: [WIN8Dom-DC1.win8dom.loc] Error 0x35 (53) – Unwilling To Perform

   Extended Error: 0000052D: SvcErr: DSID-031A126A, problem 5003 (WILL_NOT_PERFORM), data 0

ERROR: Too many errors encountered, terminating…

The command did not complete successfully

[Thu 02/09/2012 23:04:04.85]
C:\>admod -default -rb cn=testuser1,cn=testusers unicodepwd::Password2! -optenc -exterr

AdMod V01.18.00cpp BETA Joe Richards (joe@joeware.net) February 2012

DN Count: 1
Using server: WIN8Dom-DC1.win8dom.loc:389
Directory: Windows Server 8 Developer Preview
Base DN: cn=testuser1,cn=testusers,DC=win8dom,DC=loc

Modifying specified objects…
   DN: cn=testuser1,cn=testusers,DC=win8dom,DC=loc…

The command completed successfully

 

[Thu 02/09/2012 23:29:28.30]

C:\>err 52d
# for hex 0x52d / decimal 1325 :
  ERROR_PASSWORD_RESTRICTION                                    winerror.h
# Unable to update the password. The value provided for the
# new password does not meet the length, complexity, or
# history requirement of the domain.
# 1 matches found for "52d"

 

   joe

 

[1] Don’t laugh, a few years ago I ran into some folks who had set up a batch file to do something exactly like this… Well they weren’t using JoeRocks1! but they used the whole idea of looping through enough passwords to be able to reuse the same password every month.

Rating 4.00 out of 5

Comments are closed.

[joeware – never stop exploring… :) is proudly powered by WordPress.]