VYPR
High severity8.8NVD Advisory· Published Apr 20, 2017· Updated May 13, 2026

CVE-2016-3734

CVE-2016-3734

Description

Cross-site request forgery (CSRF) vulnerability in markposts.php in Moodle 3.0 through 3.0.3, 2.9 through 2.9.5, 2.8 through 2.8.11, 2.7 through 2.7.13 and earlier allows remote attackers to hijack the authentication of users for requests that marks forum posts as read.

Affected packages

Versions sourced from the GitHub Security Advisory.

PackageAffected versionsPatched versions
moodle/moodlePackagist
< 2.7.142.7.14
moodle/moodlePackagist
>= 2.8, < 2.8.122.8.12
moodle/moodlePackagist
>= 2.9, < 2.9.62.9.6
moodle/moodlePackagist
>= 3.0, < 3.0.43.0.4

Patches

5
01408d619ba8

MDL-53755 forum: Check session when marking posts

https://github.com/moodle/moodleAndrew NicolsApr 8, 2016via ghsa
3 files changed · +5 4
  • mod/forum/index.php+2 2 modified
    @@ -230,7 +230,7 @@
                     } else if ($unread = forum_tp_count_forum_unread_posts($cm, $course)) {
                             $unreadlink = '<span class="unread"><a href="view.php?f='.$forum->id.'">'.$unread.'</a>';
                         $unreadlink .= '<a title="'.$strmarkallread.'" href="markposts.php?f='.
    -                                   $forum->id.'&amp;mark=read"><img src="'.$OUTPUT->pix_url('t/markasread') . '" alt="'.$strmarkallread.'" class="iconsmall" /></a></span>';
    +                                   $forum->id.'&amp;mark=read&amp;sesskey=' . sesskey() . '"><img src="'.$OUTPUT->pix_url('t/markasread') . '" alt="'.$strmarkallread.'" class="iconsmall" /></a></span>';
                     } else {
                         $unreadlink = '<span class="read">0</span>';
                     }
    @@ -368,7 +368,7 @@
                         } else if ($unread = forum_tp_count_forum_unread_posts($cm, $course)) {
                             $unreadlink = '<span class="unread"><a href="view.php?f='.$forum->id.'">'.$unread.'</a>';
                             $unreadlink .= '<a title="'.$strmarkallread.'" href="markposts.php?f='.
    -                                       $forum->id.'&amp;mark=read"><img src="'.$OUTPUT->pix_url('t/markasread') . '" alt="'.$strmarkallread.'" class="iconsmall" /></a></span>';
    +                                       $forum->id.'&amp;mark=read&sesskey=' . sesskey() . '"><img src="'.$OUTPUT->pix_url('t/markasread') . '" alt="'.$strmarkallread.'" class="iconsmall" /></a></span>';
                         } else {
                             $unreadlink = '<span class="read">0</span>';
                         }
    
  • mod/forum/lib.php+2 2 modified
    @@ -3714,7 +3714,7 @@ function forum_print_discussion_header(&$post, $forum, $group = -1, $datestring
                         echo $post->unread;
                         echo '</a>';
                         echo '<a title="'.$strmarkalldread.'" href="'.$CFG->wwwroot.'/mod/forum/markposts.php?f='.
    -                         $forum->id.'&amp;d='.$post->discussion.'&amp;mark=read&amp;returnpage=view.php">' .
    +                         $forum->id.'&amp;d='.$post->discussion.'&amp;mark=read&amp;returnpage=view.php&amp;sesskey=' . sesskey() . '">' .
                              '<img src="'.$OUTPUT->pix_url('t/markasread') . '" class="iconsmall" alt="'.$strmarkalldread.'" /></a>';
                         echo '</span>';
                     } else {
    @@ -5402,7 +5402,7 @@ function forum_print_latest_discussions($course, $forum, $maxdiscussions = -1, $
                     if ($forumtracked) {
                         echo '<a title="'.get_string('markallread', 'forum').
                              '" href="'.$CFG->wwwroot.'/mod/forum/markposts.php?f='.
    -                         $forum->id.'&amp;mark=read&amp;returnpage=view.php">'.
    +                         $forum->id.'&amp;mark=read&amp;returnpage=view.php&amp;sesskey=' . sesskey() . '">'.
                              '<img src="'.$OUTPUT->pix_url('t/markasread') . '" class="iconsmall" alt="'.get_string('markallread', 'forum').'" /></a>';
                     }
                     echo '</th>';
    
  • mod/forum/markposts.php+1 0 modified
    @@ -55,6 +55,7 @@
     $user = $USER;
     
     require_login($course, false, $cm);
    +require_sesskey();
     
     if ($returnpage == 'index.php') {
         $returnto = new moodle_url("/mod/forum/$returnpage", array('id' => $course->id));
    
d98c24659935

MDL-53755 forum: Check session when marking posts

https://github.com/moodle/moodleAndrew NicolsApr 8, 2016via ghsa
3 files changed · +5 4
  • mod/forum/index.php+2 2 modified
    @@ -230,7 +230,7 @@
                     } else if ($unread = forum_tp_count_forum_unread_posts($cm, $course)) {
                             $unreadlink = '<span class="unread"><a href="view.php?f='.$forum->id.'">'.$unread.'</a>';
                         $unreadlink .= '<a title="'.$strmarkallread.'" href="markposts.php?f='.
    -                                   $forum->id.'&amp;mark=read"><img src="'.$OUTPUT->pix_url('t/markasread') . '" alt="'.$strmarkallread.'" class="iconsmall" /></a></span>';
    +                                   $forum->id.'&amp;mark=read&amp;sesskey=' . sesskey() . '"><img src="'.$OUTPUT->pix_url('t/markasread') . '" alt="'.$strmarkallread.'" class="iconsmall" /></a></span>';
                     } else {
                         $unreadlink = '<span class="read">0</span>';
                     }
    @@ -368,7 +368,7 @@
                         } else if ($unread = forum_tp_count_forum_unread_posts($cm, $course)) {
                             $unreadlink = '<span class="unread"><a href="view.php?f='.$forum->id.'">'.$unread.'</a>';
                             $unreadlink .= '<a title="'.$strmarkallread.'" href="markposts.php?f='.
    -                                       $forum->id.'&amp;mark=read"><img src="'.$OUTPUT->pix_url('t/markasread') . '" alt="'.$strmarkallread.'" class="iconsmall" /></a></span>';
    +                                       $forum->id.'&amp;mark=read&sesskey=' . sesskey() . '"><img src="'.$OUTPUT->pix_url('t/markasread') . '" alt="'.$strmarkallread.'" class="iconsmall" /></a></span>';
                         } else {
                             $unreadlink = '<span class="read">0</span>';
                         }
    
  • mod/forum/lib.php+2 2 modified
    @@ -3843,7 +3843,7 @@ function forum_print_discussion_header(&$post, $forum, $group=-1, $datestring=""
                         echo $post->unread;
                         echo '</a>';
                         echo '<a title="'.$strmarkalldread.'" href="'.$CFG->wwwroot.'/mod/forum/markposts.php?f='.
    -                         $forum->id.'&amp;d='.$post->discussion.'&amp;mark=read&amp;returnpage=view.php">' .
    +                         $forum->id.'&amp;d='.$post->discussion.'&amp;mark=read&amp;returnpage=view.php&amp;sesskey=' . sesskey() . '">' .
                              '<img src="'.$OUTPUT->pix_url('t/markasread') . '" class="iconsmall" alt="'.$strmarkalldread.'" /></a>';
                         echo '</span>';
                     } else {
    @@ -5530,7 +5530,7 @@ function forum_print_latest_discussions($course, $forum, $maxdiscussions = -1, $
                     if ($forumtracked) {
                         echo '<a title="'.get_string('markallread', 'forum').
                              '" href="'.$CFG->wwwroot.'/mod/forum/markposts.php?f='.
    -                         $forum->id.'&amp;mark=read&amp;returnpage=view.php">'.
    +                         $forum->id.'&amp;mark=read&amp;returnpage=view.php&amp;sesskey=' . sesskey() . '">'.
                              '<img src="'.$OUTPUT->pix_url('t/markasread') . '" class="iconsmall" alt="'.get_string('markallread', 'forum').'" /></a>';
                     }
                     echo '</th>';
    
  • mod/forum/markposts.php+1 0 modified
    @@ -55,6 +55,7 @@
     $user = $USER;
     
     require_login($course, false, $cm);
    +require_sesskey();
     
     if ($returnpage == 'index.php') {
         $returnto = new moodle_url("/mod/forum/$returnpage", array('id' => $course->id));
    
e90e0ea5700e

MDL-53755 forum: Check session when marking posts

https://github.com/moodle/moodleAndrew NicolsApr 8, 2016via ghsa
3 files changed · +5 4
  • mod/forum/index.php+2 2 modified
    @@ -245,7 +245,7 @@
                     } else if ($unread = forum_tp_count_forum_unread_posts($cm, $course)) {
                             $unreadlink = '<span class="unread"><a href="view.php?f='.$forum->id.'">'.$unread.'</a>';
                         $unreadlink .= '<a title="'.$strmarkallread.'" href="markposts.php?f='.
    -                                   $forum->id.'&amp;mark=read"><img src="'.$OUTPUT->pix_url('t/markasread') . '" alt="'.$strmarkallread.'" class="iconsmall" /></a></span>';
    +                                   $forum->id.'&amp;mark=read&amp;sesskey=' . sesskey() . '"><img src="'.$OUTPUT->pix_url('t/markasread') . '" alt="'.$strmarkallread.'" class="iconsmall" /></a></span>';
                     } else {
                         $unreadlink = '<span class="read">0</span>';
                     }
    @@ -383,7 +383,7 @@
                         } else if ($unread = forum_tp_count_forum_unread_posts($cm, $course)) {
                             $unreadlink = '<span class="unread"><a href="view.php?f='.$forum->id.'">'.$unread.'</a>';
                             $unreadlink .= '<a title="'.$strmarkallread.'" href="markposts.php?f='.
    -                                       $forum->id.'&amp;mark=read"><img src="'.$OUTPUT->pix_url('t/markasread') . '" alt="'.$strmarkallread.'" class="iconsmall" /></a></span>';
    +                                       $forum->id.'&amp;mark=read&sesskey=' . sesskey() . '"><img src="'.$OUTPUT->pix_url('t/markasread') . '" alt="'.$strmarkallread.'" class="iconsmall" /></a></span>';
                         } else {
                             $unreadlink = '<span class="read">0</span>';
                         }
    
  • mod/forum/lib.php+2 2 modified
    @@ -3741,7 +3741,7 @@ function forum_print_discussion_header(&$post, $forum, $group = -1, $datestring
                         echo $post->unread;
                         echo '</a>';
                         echo '<a title="'.$strmarkalldread.'" href="'.$CFG->wwwroot.'/mod/forum/markposts.php?f='.
    -                         $forum->id.'&amp;d='.$post->discussion.'&amp;mark=read&amp;returnpage=view.php">' .
    +                         $forum->id.'&amp;d='.$post->discussion.'&amp;mark=read&amp;returnpage=view.php&amp;sesskey=' . sesskey() . '">' .
                              '<img src="'.$OUTPUT->pix_url('t/markasread') . '" class="iconsmall" alt="'.$strmarkalldread.'" /></a>';
                         echo '</span>';
                     } else {
    @@ -5433,7 +5433,7 @@ function forum_print_latest_discussions($course, $forum, $maxdiscussions = -1, $
                     if ($forumtracked) {
                         echo '<a title="'.get_string('markallread', 'forum').
                              '" href="'.$CFG->wwwroot.'/mod/forum/markposts.php?f='.
    -                         $forum->id.'&amp;mark=read&amp;returnpage=view.php">'.
    +                         $forum->id.'&amp;mark=read&amp;returnpage=view.php&amp;sesskey=' . sesskey() . '">'.
                              '<img src="'.$OUTPUT->pix_url('t/markasread') . '" class="iconsmall" alt="'.get_string('markallread', 'forum').'" /></a>';
                     }
                     echo '</th>';
    
  • mod/forum/markposts.php+1 0 modified
    @@ -55,6 +55,7 @@
     $user = $USER;
     
     require_login($course, false, $cm);
    +require_sesskey();
     
     if ($returnpage == 'index.php') {
         $returnto = new moodle_url("/mod/forum/$returnpage", array('id' => $course->id));
    
7873e36f0cc0

MDL-53755 forum: Check session when marking posts

https://github.com/moodle/moodleAndrew NicolsApr 8, 2016via ghsa
3 files changed · +5 4
  • mod/forum/index.php+2 2 modified
    @@ -230,7 +230,7 @@
                     } else if ($unread = forum_tp_count_forum_unread_posts($cm, $course)) {
                             $unreadlink = '<span class="unread"><a href="view.php?f='.$forum->id.'">'.$unread.'</a>';
                         $unreadlink .= '<a title="'.$strmarkallread.'" href="markposts.php?f='.
    -                                   $forum->id.'&amp;mark=read"><img src="'.$OUTPUT->pix_url('t/markasread') . '" alt="'.$strmarkallread.'" class="iconsmall" /></a></span>';
    +                                   $forum->id.'&amp;mark=read&amp;sesskey=' . sesskey() . '"><img src="'.$OUTPUT->pix_url('t/markasread') . '" alt="'.$strmarkallread.'" class="iconsmall" /></a></span>';
                     } else {
                         $unreadlink = '<span class="read">0</span>';
                     }
    @@ -368,7 +368,7 @@
                         } else if ($unread = forum_tp_count_forum_unread_posts($cm, $course)) {
                             $unreadlink = '<span class="unread"><a href="view.php?f='.$forum->id.'">'.$unread.'</a>';
                             $unreadlink .= '<a title="'.$strmarkallread.'" href="markposts.php?f='.
    -                                       $forum->id.'&amp;mark=read"><img src="'.$OUTPUT->pix_url('t/markasread') . '" alt="'.$strmarkallread.'" class="iconsmall" /></a></span>';
    +                                       $forum->id.'&amp;mark=read&sesskey=' . sesskey() . '"><img src="'.$OUTPUT->pix_url('t/markasread') . '" alt="'.$strmarkallread.'" class="iconsmall" /></a></span>';
                         } else {
                             $unreadlink = '<span class="read">0</span>';
                         }
    
  • mod/forum/lib.php+2 2 modified
    @@ -3805,7 +3805,7 @@ function forum_print_discussion_header(&$post, $forum, $group=-1, $datestring=""
                         echo $post->unread;
                         echo '</a>';
                         echo '<a title="'.$strmarkalldread.'" href="'.$CFG->wwwroot.'/mod/forum/markposts.php?f='.
    -                         $forum->id.'&amp;d='.$post->discussion.'&amp;mark=read&amp;returnpage=view.php">' .
    +                         $forum->id.'&amp;d='.$post->discussion.'&amp;mark=read&amp;returnpage=view.php&amp;sesskey=' . sesskey() . '">' .
                              '<img src="'.$OUTPUT->pix_url('t/markasread') . '" class="iconsmall" alt="'.$strmarkalldread.'" /></a>';
                         echo '</span>';
                     } else {
    @@ -5486,7 +5486,7 @@ function forum_print_latest_discussions($course, $forum, $maxdiscussions = -1, $
                     if ($forumtracked) {
                         echo '<a title="'.get_string('markallread', 'forum').
                              '" href="'.$CFG->wwwroot.'/mod/forum/markposts.php?f='.
    -                         $forum->id.'&amp;mark=read&amp;returnpage=view.php">'.
    +                         $forum->id.'&amp;mark=read&amp;returnpage=view.php&amp;sesskey=' . sesskey() . '">'.
                              '<img src="'.$OUTPUT->pix_url('t/markasread') . '" class="iconsmall" alt="'.get_string('markallread', 'forum').'" /></a>';
                     }
                     echo '</th>';
    
  • mod/forum/markposts.php+1 0 modified
    @@ -55,6 +55,7 @@
     $user = $USER;
     
     require_login($course, false, $cm);
    +require_sesskey();
     
     if ($returnpage == 'index.php') {
         $returnto = forum_go_back_to(new moodle_url("/mod/forum/$returnpage", array('id' => $course->id)));
    
1f5c494f761e

MDL-53755 forum: Check session when marking posts

https://github.com/moodle/moodleAndrew NicolsApr 8, 2016via ghsa
3 files changed · +5 4
  • mod/forum/index.php+2 2 modified
    @@ -228,7 +228,7 @@
                     } else if ($unread = forum_tp_count_forum_unread_posts($cm, $course)) {
                             $unreadlink = '<span class="unread"><a href="view.php?f='.$forum->id.'">'.$unread.'</a>';
                         $unreadlink .= '<a title="'.$strmarkallread.'" href="markposts.php?f='.
    -                                   $forum->id.'&amp;mark=read"><img src="'.$OUTPUT->pix_url('t/markasread') . '" alt="'.$strmarkallread.'" class="iconsmall" /></a></span>';
    +                                   $forum->id.'&amp;mark=read&amp;sesskey=' . sesskey() . '"><img src="'.$OUTPUT->pix_url('t/markasread') . '" alt="'.$strmarkallread.'" class="iconsmall" /></a></span>';
                     } else {
                         $unreadlink = '<span class="read">0</span>';
                     }
    @@ -366,7 +366,7 @@
                         } else if ($unread = forum_tp_count_forum_unread_posts($cm, $course)) {
                             $unreadlink = '<span class="unread"><a href="view.php?f='.$forum->id.'">'.$unread.'</a>';
                             $unreadlink .= '<a title="'.$strmarkallread.'" href="markposts.php?f='.
    -                                       $forum->id.'&amp;mark=read"><img src="'.$OUTPUT->pix_url('t/markasread') . '" alt="'.$strmarkallread.'" class="iconsmall" /></a></span>';
    +                                       $forum->id.'&amp;mark=read&sesskey=' . sesskey() . '"><img src="'.$OUTPUT->pix_url('t/markasread') . '" alt="'.$strmarkallread.'" class="iconsmall" /></a></span>';
                         } else {
                             $unreadlink = '<span class="read">0</span>';
                         }
    
  • mod/forum/lib.php+2 2 modified
    @@ -3913,7 +3913,7 @@ function forum_print_discussion_header(&$post, $forum, $group=-1, $datestring=""
                         echo $post->unread;
                         echo '</a>';
                         echo '<a title="'.$strmarkalldread.'" href="'.$CFG->wwwroot.'/mod/forum/markposts.php?f='.
    -                         $forum->id.'&amp;d='.$post->discussion.'&amp;mark=read&amp;returnpage=view.php">' .
    +                         $forum->id.'&amp;d='.$post->discussion.'&amp;mark=read&amp;returnpage=view.php&amp;sesskey=' . sesskey() . '">' .
                              '<img src="'.$OUTPUT->pix_url('t/markasread') . '" class="iconsmall" alt="'.$strmarkalldread.'" /></a>';
                         echo '</span>';
                     } else {
    @@ -5824,7 +5824,7 @@ function forum_print_latest_discussions($course, $forum, $maxdiscussions=-1, $di
                     if ($forumtracked) {
                         echo '<a title="'.get_string('markallread', 'forum').
                              '" href="'.$CFG->wwwroot.'/mod/forum/markposts.php?f='.
    -                         $forum->id.'&amp;mark=read&amp;returnpage=view.php">'.
    +                         $forum->id.'&amp;mark=read&amp;returnpage=view.php&amp;sesskey=' . sesskey() . '">'.
                              '<img src="'.$OUTPUT->pix_url('t/markasread') . '" class="iconsmall" alt="'.get_string('markallread', 'forum').'" /></a>';
                     }
                     echo '</th>';
    
  • mod/forum/markposts.php+1 0 modified
    @@ -55,6 +55,7 @@
     $user = $USER;
     
     require_login($course, false, $cm);
    +require_sesskey();
     
     if ($returnpage == 'index.php') {
         $returnto = forum_go_back_to($returnpage.'?id='.$course->id);
    

Vulnerability mechanics

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

References

13

News mentions

0

No linked articles in our index yet.