ATutor <= 2.2 (confirm.php) Session Variable Overloading Vulnerability

http://www.atutor.ca

• Affected Versions:

Version 2.2 and prior versions.

• Vulnerability Description:

The vulnerable code is located in the /confirm.php script:

140if (isset($_REQUEST['auto_login']))
141{
142     
143    $sql = "SELECT M.member_id, M.login, M.preferences, M.language FROM %smembers M WHERE M.member_id=%d";
144    $row = queryDB($sql, array(TABLE_PREFIX, $_REQUEST["member_id"]), TRUE);
145     
146    if ($row['member_id'] != '') 
147    {
148        $_SESSION['valid_user'] = true;
149        $_SESSION['member_id']  = $_REQUEST["member_id"];
150        $_SESSION['course_id']  = 0;
151        $_SESSION['login']      = $row[login];

This script is intended to be used for the account confirmation. However, its “auto-login” feature uses the same session variables used to authenticate the user in the whole application, and this might enable unauthenticated attackers to bypass the authentication mechanism and impersonate legitimate users by simply knowing their user IDs. Successful exploitation of this vulnerability might allow an attacker to access the application with the most privileged user, leading to achieve arbitrary PHP code execution by leveraging further vulnerabilities.

• Solution:

Apply the vendor patches.

• Disclosure Timeline:

[10/10/2014] – Vendor notified

[13/10/2014] – Vendor response stating this issue will be patched right away

[02/11/2014] – Vendor patch released: http://update.atutor.ca/patch/2_2/2_2-6/patch.xml

[09/11/2014] – Vendor notified about incompleteness of the patch

[10/11/2014] – Vendor released a further patch: http://update.atutor.ca/patch/2_2/2_2-7/patch.xml

[30/09/2015] – CVE number requested

[05/10/2015] – CVE number assigned

[04/11/2015] – Public disclosure

• CVE Reference:

The Common Vulnerabilities and Exposures project (cve.mitre.org) has assigned the name CVE-2014-9753 to this vulnerability.

• Credits:

Vulnerability discovered by Egidio Romano.