VYPR
Moderate severityNVD Advisory· Published Jun 1, 2015· Updated May 6, 2026

CVE-2015-3176

CVE-2015-3176

Description

The account-confirmation feature in login/confirm.php in Moodle through 2.5.9, 2.6.x before 2.6.11, 2.7.x before 2.7.8, and 2.8.x before 2.8.6 allows remote attackers to obtain sensitive full-name information by attempting to self-register.

Affected packages

Versions sourced from the GitHub Security Advisory.

PackageAffected versionsPatched versions
moodle/moodlePackagist
< 2.6.112.6.11
moodle/moodlePackagist
>= 2.7.0, < 2.7.82.7.8
moodle/moodlePackagist
>= 2.8.0, < 2.8.62.8.6

Affected products

35
  • Moodle/Moodle35 versions
    cpe:2.3:a:moodle:moodle:*:*:*:*:*:*:*:*+ 34 more
    • cpe:2.3:a:moodle:moodle:*:*:*:*:*:*:*:*range: <=2.5.9
    • cpe:2.3:a:moodle:moodle:2.5.0:*:*:*:*:*:*:*
    • cpe:2.3:a:moodle:moodle:2.5.1:*:*:*:*:*:*:*
    • cpe:2.3:a:moodle:moodle:2.5.2:*:*:*:*:*:*:*
    • cpe:2.3:a:moodle:moodle:2.5.3:*:*:*:*:*:*:*
    • cpe:2.3:a:moodle:moodle:2.5.4:*:*:*:*:*:*:*
    • cpe:2.3:a:moodle:moodle:2.5.5:*:*:*:*:*:*:*
    • cpe:2.3:a:moodle:moodle:2.5.6:*:*:*:*:*:*:*
    • cpe:2.3:a:moodle:moodle:2.5.7:*:*:*:*:*:*:*
    • cpe:2.3:a:moodle:moodle:2.5.8:*:*:*:*:*:*:*
    • cpe:2.3:a:moodle:moodle:2.6.0:*:*:*:*:*:*:*
    • cpe:2.3:a:moodle:moodle:2.6.1:*:*:*:*:*:*:*
    • cpe:2.3:a:moodle:moodle:2.6.10:*:*:*:*:*:*:*
    • cpe:2.3:a:moodle:moodle:2.6.2:*:*:*:*:*:*:*
    • cpe:2.3:a:moodle:moodle:2.6.3:*:*:*:*:*:*:*
    • cpe:2.3:a:moodle:moodle:2.6.4:*:*:*:*:*:*:*
    • cpe:2.3:a:moodle:moodle:2.6.5:*:*:*:*:*:*:*
    • cpe:2.3:a:moodle:moodle:2.6.6:*:*:*:*:*:*:*
    • cpe:2.3:a:moodle:moodle:2.6.7:*:*:*:*:*:*:*
    • cpe:2.3:a:moodle:moodle:2.6.8:*:*:*:*:*:*:*
    • cpe:2.3:a:moodle:moodle:2.6.9:*:*:*:*:*:*:*
    • cpe:2.3:a:moodle:moodle:2.7.0:*:*:*:*:*:*:*
    • cpe:2.3:a:moodle:moodle:2.7.1:*:*:*:*:*:*:*
    • cpe:2.3:a:moodle:moodle:2.7.2:*:*:*:*:*:*:*
    • cpe:2.3:a:moodle:moodle:2.7.3:*:*:*:*:*:*:*
    • cpe:2.3:a:moodle:moodle:2.7.4:*:*:*:*:*:*:*
    • cpe:2.3:a:moodle:moodle:2.7.5:*:*:*:*:*:*:*
    • cpe:2.3:a:moodle:moodle:2.7.6:*:*:*:*:*:*:*
    • cpe:2.3:a:moodle:moodle:2.7.7:*:*:*:*:*:*:*
    • cpe:2.3:a:moodle:moodle:2.8.0:*:*:*:*:*:*:*
    • cpe:2.3:a:moodle:moodle:2.8.1:*:*:*:*:*:*:*
    • cpe:2.3:a:moodle:moodle:2.8.2:*:*:*:*:*:*:*
    • cpe:2.3:a:moodle:moodle:2.8.3:*:*:*:*:*:*:*
    • cpe:2.3:a:moodle:moodle:2.8.4:*:*:*:*:*:*:*
    • cpe:2.3:a:moodle:moodle:2.8.5:*:*:*:*:*:*:*

Patches

4
e2e7e35da31e

MDL-50099 auth: less verbose account confirmed message

https://github.com/moodle/moodleMarina GlancyMay 3, 2015via ghsa
3 files changed · +8 9
  • auth/email/auth.php+4 4 modified
    @@ -139,12 +139,12 @@ function user_confirm($username, $confirmsecret) {
             $user = get_complete_user_data('username', $username);
     
             if (!empty($user)) {
    -            if ($user->confirmed) {
    -                return AUTH_CONFIRM_ALREADY;
    -
    -            } else if ($user->auth != $this->authtype) {
    +            if ($user->auth != $this->authtype) {
                     return AUTH_CONFIRM_ERROR;
     
    +            } else if ($user->secret == $confirmsecret && $user->confirmed) {
    +                return AUTH_CONFIRM_ALREADY;
    +
                 } else if ($user->secret == $confirmsecret) {   // They have provided the secret key to get in
                     $DB->set_field("user", "confirmed", 1, array("id"=>$user->id));
                     if ($user->firstaccess == 0) {
    
  • auth/ldap/auth.php+4 4 modified
    @@ -604,12 +604,12 @@ function user_confirm($username, $confirmsecret) {
             $user = get_complete_user_data('username', $username);
     
             if (!empty($user)) {
    -            if ($user->confirmed) {
    -                return AUTH_CONFIRM_ALREADY;
    -
    -            } else if ($user->auth != $this->authtype) {
    +            if ($user->auth != $this->authtype) {
                     return AUTH_CONFIRM_ERROR;
     
    +            } else if ($user->secret == $confirmsecret && $user->confirmed) {
    +                return AUTH_CONFIRM_ALREADY;
    +
                 } else if ($user->secret == $confirmsecret) {   // They have provided the secret key to get in
                     if (!$this->user_activate($username)) {
                         return AUTH_CONFIRM_FAIL;
    
  • login/confirm.php+0 1 modified
    @@ -63,7 +63,6 @@
             $PAGE->set_heading($COURSE->fullname);
             echo $OUTPUT->header();
             echo $OUTPUT->box_start('generalbox centerpara boxwidthnormal boxaligncenter');
    -        echo "<h3>".get_string("thanks").", ". fullname($user) . "</h3>\n";
             echo "<p>".get_string("alreadyconfirmed")."</p>\n";
             echo $OUTPUT->single_button("$CFG->wwwroot/course/", get_string('courses'));
             echo $OUTPUT->box_end();
    
80eb5bc7b7da

MDL-50099 auth: less verbose account confirmed message

https://github.com/moodle/moodleMarina GlancyMay 3, 2015via ghsa
3 files changed · +8 9
  • auth/email/auth.php+4 4 modified
    @@ -139,12 +139,12 @@ function user_confirm($username, $confirmsecret) {
             $user = get_complete_user_data('username', $username);
     
             if (!empty($user)) {
    -            if ($user->confirmed) {
    -                return AUTH_CONFIRM_ALREADY;
    -
    -            } else if ($user->auth != $this->authtype) {
    +            if ($user->auth != $this->authtype) {
                     return AUTH_CONFIRM_ERROR;
     
    +            } else if ($user->secret == $confirmsecret && $user->confirmed) {
    +                return AUTH_CONFIRM_ALREADY;
    +
                 } else if ($user->secret == $confirmsecret) {   // They have provided the secret key to get in
                     $DB->set_field("user", "confirmed", 1, array("id"=>$user->id));
                     if ($user->firstaccess == 0) {
    
  • auth/ldap/auth.php+4 4 modified
    @@ -604,12 +604,12 @@ function user_confirm($username, $confirmsecret) {
             $user = get_complete_user_data('username', $username);
     
             if (!empty($user)) {
    -            if ($user->confirmed) {
    -                return AUTH_CONFIRM_ALREADY;
    -
    -            } else if ($user->auth != $this->authtype) {
    +            if ($user->auth != $this->authtype) {
                     return AUTH_CONFIRM_ERROR;
     
    +            } else if ($user->secret == $confirmsecret && $user->confirmed) {
    +                return AUTH_CONFIRM_ALREADY;
    +
                 } else if ($user->secret == $confirmsecret) {   // They have provided the secret key to get in
                     if (!$this->user_activate($username)) {
                         return AUTH_CONFIRM_FAIL;
    
  • login/confirm.php+0 1 modified
    @@ -63,7 +63,6 @@
             $PAGE->set_heading($COURSE->fullname);
             echo $OUTPUT->header();
             echo $OUTPUT->box_start('generalbox centerpara boxwidthnormal boxaligncenter');
    -        echo "<h3>".get_string("thanks").", ". fullname($user) . "</h3>\n";
             echo "<p>".get_string("alreadyconfirmed")."</p>\n";
             echo $OUTPUT->single_button("$CFG->wwwroot/course/", get_string('courses'));
             echo $OUTPUT->box_end();
    
4f8b6d567494

MDL-50099 auth: less verbose account confirmed message

https://github.com/moodle/moodleMarina GlancyMay 3, 2015via ghsa
3 files changed · +8 9
  • auth/email/auth.php+4 4 modified
    @@ -142,12 +142,12 @@ function user_confirm($username, $confirmsecret) {
             $user = get_complete_user_data('username', $username);
     
             if (!empty($user)) {
    -            if ($user->confirmed) {
    -                return AUTH_CONFIRM_ALREADY;
    -
    -            } else if ($user->auth != $this->authtype) {
    +            if ($user->auth != $this->authtype) {
                     return AUTH_CONFIRM_ERROR;
     
    +            } else if ($user->secret == $confirmsecret && $user->confirmed) {
    +                return AUTH_CONFIRM_ALREADY;
    +
                 } else if ($user->secret == $confirmsecret) {   // They have provided the secret key to get in
                     $DB->set_field("user", "confirmed", 1, array("id"=>$user->id));
                     return AUTH_CONFIRM_OK;
    
  • auth/ldap/auth.php+4 4 modified
    @@ -607,12 +607,12 @@ function user_confirm($username, $confirmsecret) {
             $user = get_complete_user_data('username', $username);
     
             if (!empty($user)) {
    -            if ($user->confirmed) {
    -                return AUTH_CONFIRM_ALREADY;
    -
    -            } else if ($user->auth != $this->authtype) {
    +            if ($user->auth != $this->authtype) {
                     return AUTH_CONFIRM_ERROR;
     
    +            } else if ($user->secret == $confirmsecret && $user->confirmed) {
    +                return AUTH_CONFIRM_ALREADY;
    +
                 } else if ($user->secret == $confirmsecret) {   // They have provided the secret key to get in
                     if (!$this->user_activate($username)) {
                         return AUTH_CONFIRM_FAIL;
    
  • login/confirm.php+0 1 modified
    @@ -63,7 +63,6 @@
             $PAGE->set_heading($COURSE->fullname);
             echo $OUTPUT->header();
             echo $OUTPUT->box_start('generalbox centerpara boxwidthnormal boxaligncenter');
    -        echo "<h3>".get_string("thanks").", ". fullname($user) . "</h3>\n";
             echo "<p>".get_string("alreadyconfirmed")."</p>\n";
             echo $OUTPUT->single_button("$CFG->wwwroot/course/", get_string('courses'));
             echo $OUTPUT->box_end();
    
d5922686e762

MDL-50099 auth: less verbose account confirmed message

https://github.com/moodle/moodleMarina GlancyMay 3, 2015via ghsa
3 files changed · +8 9
  • auth/email/auth.php+4 4 modified
    @@ -139,12 +139,12 @@ function user_confirm($username, $confirmsecret) {
             $user = get_complete_user_data('username', $username);
     
             if (!empty($user)) {
    -            if ($user->confirmed) {
    -                return AUTH_CONFIRM_ALREADY;
    -
    -            } else if ($user->auth != $this->authtype) {
    +            if ($user->auth != $this->authtype) {
                     return AUTH_CONFIRM_ERROR;
     
    +            } else if ($user->secret == $confirmsecret && $user->confirmed) {
    +                return AUTH_CONFIRM_ALREADY;
    +
                 } else if ($user->secret == $confirmsecret) {   // They have provided the secret key to get in
                     $DB->set_field("user", "confirmed", 1, array("id"=>$user->id));
                     if ($user->firstaccess == 0) {
    
  • auth/ldap/auth.php+4 4 modified
    @@ -604,12 +604,12 @@ function user_confirm($username, $confirmsecret) {
             $user = get_complete_user_data('username', $username);
     
             if (!empty($user)) {
    -            if ($user->confirmed) {
    -                return AUTH_CONFIRM_ALREADY;
    -
    -            } else if ($user->auth != $this->authtype) {
    +            if ($user->auth != $this->authtype) {
                     return AUTH_CONFIRM_ERROR;
     
    +            } else if ($user->secret == $confirmsecret && $user->confirmed) {
    +                return AUTH_CONFIRM_ALREADY;
    +
                 } else if ($user->secret == $confirmsecret) {   // They have provided the secret key to get in
                     if (!$this->user_activate($username)) {
                         return AUTH_CONFIRM_FAIL;
    
  • login/confirm.php+0 1 modified
    @@ -63,7 +63,6 @@
             $PAGE->set_heading($COURSE->fullname);
             echo $OUTPUT->header();
             echo $OUTPUT->box_start('generalbox centerpara boxwidthnormal boxaligncenter');
    -        echo "<h3>".get_string("thanks").", ". fullname($user) . "</h3>\n";
             echo "<p>".get_string("alreadyconfirmed")."</p>\n";
             echo $OUTPUT->single_button("$CFG->wwwroot/course/", get_string('courses'));
             echo $OUTPUT->box_end();
    

Vulnerability mechanics

Generated on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.

References

12

News mentions

0

No linked articles in our index yet.