I take initiative and try to patch the most important bugs I could.

So, attached is a patch to various issues fixed with 1.8.12

Fixes back ported from 1.8.12

MSA-09-0032:
Topic: Vulnerability in KSES text cleaning
Severity: Major
Versions affected: <1.8.12 and <1.9.8
Reported by: Sam Marshall
Issue no.: MDL-21026
Solution: upgrade to 1.8.12 or 1.9.8
Workaround: apply patch
http://git.moodle.org/gw?p=moodle.git;a=blobdiff;f=lib/weblib.php;h=202e3e92813864fca71a153f0ea719eb0fa6e4d3;hp=29ffa15c6276f8118adfb29f4a34a978f094071a;hb=52860d13648f6b7f941c446f9e556f45be530c2d;hpb=e5d838ec77a1aeb1598b7cd26096baa35829b0d5
Also reported by Nico Golde as bug #585425 witch CVE
CVE-2010-1619[0]:
| Cross-site scripting (XSS) vulnerability in the
| fix_non_standard_entities function in the KSES HTML text cleaning
| library (weblib.php), as used in Moodle 1.8.x before 1.8.12 and 1.9.x
| before 1.9.8, allows remote attackers to inject arbitrary web script
| or HTML via crafted HTML entities.


MSA-09-0033:
Topic: XSS vulnerabilty in the phpcas module
Severity: Major (if using CAS)
Versions affected: <1.8.12 and <1.9.8
Reported by: Joachim Fritschi
Issue no.: MDL-21802
Solution: upgrade to 1.8.12 or 1.9.8
Workaround: use CAS/Client.php from latest release
http://git.moodle.org/gw?p=moodle.git;a=blobdiff;f=auth/cas/CAS/client.php;h=965b87b82cbc5fa602377609dcd0eb6e7aa409aa;hp=2e4e593dc50cbb6f3b55a4dc07262faeec891da0;hb=1a74d63f8a71bd6812cd2b4d055d28ae45959b07;hpb=f2c36400950b17934970d3d929a972f98893ac8d

Not fixing too changed between 1.8.2 and 1.8.12

MSA-09-0034:
Topic: Disclosure of full user names
Severity: Minor - privacy
Versions affected: <1.8.12 and <1.9.8
Reported by: Klaus Kirchner
Issue no.: MDL-21830
http://git.moodle.org/gw?p=moodle.git;a=blobdiff;f=user/view.php;h=6b6c048056f5f14988983bad1fe5807c9d2dadcf;hp=c5f2b784df7fe60173138a7db548f2b1610d1a74;hb=4597ce9ca5ca4f13bb75c3d8b117c2bf469745d0;hpb=4bbeff335774ffcc75c99e99e3923626c9445bb3

MSA-09-0036:
Topic: Incorrect validation of forms data
Severity: Critical
Versions affected: <1.8.12 and <1.9.8
Reported by: Sascha Herzog
Issue no.: MDL-21767
Solution: upgrade to 1.8.12 or 1.9.8
Workaround: patch
http://git.moodle.org/gw?p=moodle.git;a=blobdiff;f=lib/form/select.php;h=12fa7fa6834fa918da7c111c1428f801e695e8bc;hp=95a1fb4fe40d802e60ce266ad559bbcdd3f65340;hb=9770907db38aae67c2d07a09a41b42772e5b5e2c;hpb=668f994fe0f642c1aa748b837be2c498a6b92125

not fixing the class is too different between 1.8.2 and 1.8.12

MSA-09-0037:
Topic: Incorrect validation of forms data
Severity: Critical
Versions affected: <1.8.12 and <1.9.8
Reported by: Sascha Herzog
Issue no.: MDL-21767
Solution: upgrade to 1.8.12 or 1.9.8

not fixing the class is too different between 1.8.2 and 1.8.12

MSA-09-0038:
Topic: SQL injection in Wiki module
Severity: Critical
Versions affected: <1.8.12 and <1.9.8
Reported by: Matthew Slowe
Issue no.: MDL-21818
Solution: upgrade to 1.8.12 or 1.9.8
http://git.moodle.org/gw?p=moodle.git;a=commit;h=86a7b79b3c0fddcc8d9ba47674ccb533a3769778

MSA-09-0039:
Topic: Reflective Cross Site Scripting (XSS) in the Moodle Global Search Engine
Severity: Major (if global search enabled)
Versions affected: <1.8.12 and <1.9.8
Reported by: Sascha Herzog
Issue no.: MDL-21649
Solution: upgrade to 1.8.12 or 1.9.8
http://git.moodle.org/gw?p=moodle.git;a=commit;h=311956cf45f92ac83d515759134b80cce381f27b

MSA-09-0040:
Topic: Persistent XSS when using Login-as feature
Severity: Major
Versions affected: <1.8.12 and <1.9.8
Reported by: Sascha Herzog
Issue no.: MDL-21769
Solution: upgrade to 1.8.12 or 1.9.8
http://git.moodle.org/gw?p=moodle.git;a=commit;h=49ac14a86841ae12b540d6b68f29e4298d6c7607


Index: moodle/search/query.php
===================================================================
--- moodle/search/query.php	(revision 4)
+++ moodle/search/query.php	(working copy)
@@ -145,37 +145,37 @@
 
   if (isset($vars)) {
     foreach ($vars as $key => $value) {
-      $adv->$key = stripslashes(htmlentities($value));
+      $adv->$key = stripslashes($value);
     } //foreach
   }
 ?>
 
 <form id="query" method="get" action="query.php">
   <?php if (!$advanced) { ?>
-    <input type="text" name="query_string" length="50" value="<?php print stripslashes(htmlentities($query_string)) ?>" />
+    <input type="text" name="query_string" length="50" value="<?php print p(stripslashes($query_string)) ?>" />
     &nbsp;<input type="submit" value="Search" /> &nbsp;
     <a href="query.php?a=1">Advanced search</a> |
     <a href="stats.php">Statistics</a>
   <?php } else {
     print_simple_box_start('center', '', 'white', 10);
   ?>
-    <input type="hidden" name="a" value="<?php print $advanced; ?>"/>
+    <input type="hidden" name="a" value="<?php print p($advanced); ?>"/>
 
     <table border="0" cellpadding="3" cellspacing="3">
 
     <tr>
       <td width="240">These words must appear:</td>
-      <td><input type="text" name="mustappear" length="50" value="<?php print $adv->mustappear; ?>" /></td>
+      <td><input type="text" name="mustappear" length="50" value="<?php print p($adv->mustappear;) ?>" /></td>
     </tr>
 
     <tr>
       <td>These words must not appear:</td>
-      <td><input type="text" name="notappear" length="50" value="<?php print $adv->notappear; ?>" /></td>
+      <td><input type="text" name="notappear" length="50" value="<?php print p($adv->notappear;) ?>" /></td>
     </tr>
 
     <tr>
       <td>These words help improve rank:</td>
-      <td><input type="text" name="canappear" length="50" value="<?php print $adv->canappear; ?>" /></td>
+      <td><input type="text" name="canappear" length="50" value="<?php print p($adv->canappear;) ?>" /></td>
     </tr>
 
     <tr>
@@ -195,12 +195,12 @@
 
     <tr>
       <td>Words in title:</td>
-      <td><input type="text" name="title" length="50" value="<?php print $adv->title; ?>" /></td>
+      <td><input type="text" name="title" length="50" value="<?php print p($adv->title;) ?>" /></td>
     </tr>
 
     <tr>
       <td>Author name:</td>
-      <td><input type="text" name="author" length="50" value="<?php print $adv->author; ?>" /></td>
+      <td><input type="text" name="author" length="50" value="<?php print p($adv->author;) ?>" /></td>
     </tr>
 
     <tr>
@@ -256,7 +256,7 @@
 
     print "<br />";
 
-    print $hit_count." results returned for '".stripslashes($query_string)."'.";
+    print $hit_count." results returned for '".s(stripslashes($query_string))."'.";
     print "<br />";
 
     if ($hit_count > 0) {
@@ -295,4 +295,4 @@
 
   print_simple_box_end();
   print_footer();
-?>
\ No newline at end of file
+?>
Index: moodle/lib/weblib.php
===================================================================
--- moodle/lib/weblib.php	(revision 4)
+++ moodle/lib/weblib.php	(working copy)
@@ -1676,8 +1676,8 @@
         default:
 
         /// Fix non standard entity notations
-            $text = preg_replace('/(&#[0-9]+)(;?)/', "\\1;", $text);
-            $text = preg_replace('/(&#x[0-9a-fA-F]+)(;?)/', "\\1;", $text);
+            $text = preg_replace('/&#0*([0-9]+);?/', "&#\\1;", $text);
+            $text = preg_replace('/&#x0*([0-9a-fA-F]+);?/', "&#x\\1;", $text);
 
         /// Remove tags that are not allowed
             $text = strip_tags($text, $ALLOWED_TAGS);
Index: moodle/mod/wiki/view.php
===================================================================
--- moodle/mod/wiki/view.php	(revision 4)
+++ moodle/mod/wiki/view.php	(working copy)
@@ -10,7 +10,7 @@
     require_once($CFG->libdir . '/ajax/ajaxlib.php');
     require_js(array('yui_yahoo','yui_connection'));
 
-    $ewiki_action = optional_param('ewiki_action', '', PARAM_ALPHA);     // Action on Wiki-Page
+    $ewiki_action = null; // this is a bloody global which is set up elsewhere
     $id           = optional_param('id', 0, PARAM_INT);                  // Course Module ID, or
     $wid          = optional_param('wid', 0, PARAM_INT);                 // Wiki ID
     $page         = optional_param('page', false);       // Wiki Page Name
@@ -262,10 +262,16 @@
                addslashes("view.php?id=$cm->id&amp;groupid=$groupid&amp;userid=$userid&amp;page=$ewiki_title"),
                format_string($wiki->name,true).": ".$ewiki_title, $cm->id, $userid);
     } else if ($ewiki_action != 'edit') {
-        add_to_log($course->id, "wiki", $ewiki_action, 
-               addslashes("view.php?id=$cm->id&amp;groupid=$groupid&amp;userid=$userid&amp;page=$ewiki_title"),
-               format_string($wiki->name,true).": ".$ewiki_title, $cm->id, $userid);
-    } 
+       if (!in_array($ewiki_action, array('view', 'links', 'info'))) {    
+          add_to_log($course->id, "wiki", 'bogus', 
+                 addslashes("view.php?id=$cm->id&amp;groupid=$groupid&amp;userid=$userid&amp;page=$ewiki_title"),
+                 format_string($wiki->name,true).": ".$ewiki_title, $cm->id, $userid);
+      } else {
+          add_to_log($course->id, "wiki", $ewiki_action, 
+                 addslashes("view.php?id=$cm->id&amp;groupid=$groupid&amp;userid=$userid&amp;page=$ewiki_title"),
+                 format_string($wiki->name,true).": ".$ewiki_title, $cm->id, $userid);
+      }
+} 
 
 
 /// Print the page header
Index: moodle/mod/journal/edit.html
===================================================================
--- moodle/mod/journal/edit.html	(revision 4)
+++ moodle/mod/journal/edit.html	(working copy)
@@ -15,7 +15,7 @@
       ?>
 </td></tr>
 <tr><td align="center">
-<?php  print_textarea($usehtmleditor, 20, 60, 630, 400, "text", $entry->text); ?>
+<?php  print_textarea($usehtmleditor, 20, 60, 630, 400, "text", clean_entry($entry->text, $entry->format)); ?>
 </td></tr>
 <tr><td align="center">
 <?php
Index: moodle/user/view.php
===================================================================
--- moodle/user/view.php	(revision 4)
+++ moodle/user/view.php	(working copy)
@@ -78,7 +78,7 @@
             }
         } else {   // Normal course
             if (!has_capability('moodle/course:view', $coursecontext, $user->id, false)) {
-                if (has_capability('moodle/course:view', $coursecontext)) {
+                if (has_capability('moodle/role:assign', $coursecontext)) {
                     print_header("$strpersonalprofile: ", "$strpersonalprofile: ",
                                      "<a href=\"../course/view.php?id=$course->id\">$course->shortname</a> ->
                                   <a href=\"index.php?id=$course->id\">$strparticipants</a> -> $fullname",

Reply via email to