KoreLogic Blog
New LibPathWell Release, and an Updated Talk 2017-05-12 23:30

A couple of weeks ago we released a PathWell update, version 0.7.0, available here. I had the pleasure of giving a talk about it at RMISC yesterday that highlighted the new features; the slides are here. [PDF warning]

The primary user-visible change in this release is an administrator-configurable hinting engine, to provide different levels of feedback to users whose new password choice is rejected.

The hint engine suggests changes to a rejected candidate password which, if adopted by the user, would result in a new password that would be accepted. The amount of detail returned to the user is configurable to a variety of "levels". For example, at medium hint level, the hint engine suggests a randomly-generated topology change such as the one shown below:

### Trying to set a password of 'April2017!'
testuser@foo ~ $ passwd
Changing password for testuser.
Current password:
New password:
Retype new password:
pam_pathwell:
                                            ull lldddds
                                               |       |
  insert a special character ------------------+       |
                                                       |
    insert a digit ------------------------------------+

 This should produce the following topology: ullsllddddsd

passwd: Authentication token manipulation error
passwd: password unchanged
testuser@foo ~ $
At high hint level, the hint engine actually suggests a randomly-modified version of the chosen password. Obviously, the hinting capability must be used with care; an attacker who can shoulder-surf or recover script sessions of users changing their passwords will obtain sensitive information. More details, examples, and caveats are available in my RMISC presentation slides.

The hint engine supports multiple output methods; simple text is appropriate for the PAM module. There is also JSON output for use with other front-ends, such as web applications seeking to use PathWell for dynamic password strength enforcement. Currently the hint engine is only enabled for blacklist failures, but we intend to connect it for violations of the other enforcement options of minlev (minimum Levenshtein distance) and maxuse (maximum use count) as well.

Less visible changes in this release include some restructuring of the code/API, adding and moving functionality into the core library. This facilitates using libpathwell for things other than PAM, such as integrating into an LDAP server, calling from Java code using JNI, etc. As a result, the PAM module code was reduced and simplified. We also expanded unit test coverage and added two more command-line utilities: pathwell-setuc and pathwell-chkpw. The core and PAM library versions have both been bumped as a result of these changes.

Our next steps for the project include the expansion of the hint engine as mentioned above, Perl Compatible Regular Expression (PCRE) blacklist support, and Active Directory (AD) support. We have an AD passfilt.dll version of PathWell in alpha, but since we do not run any production Windows systems, we are looking for organizations that want to help us with larger scale tests. Please contact us at pathwell-project at korelogic.com [PGP key] if you are interested in being a alpha tester, or in using libpathwell in a commercial product.


0 comments Posted by Hank at: 23:30 permalink

Comments are closed for this story.