Index: wp-includes/default-widgets.php
===================================================================
--- wp-includes/default-widgets.php	(revision 11256)
+++ wp-includes/default-widgets.php	(working copy)
@@ -628,8 +628,15 @@
 		else if ( $number > 15 )
 			$number = 15;
 
-		if ( !$comments = wp_cache_get( 'recent_comments', 'widget' ) ) {
-			$comments = $wpdb->get_results("SELECT * FROM $wpdb->comments WHERE comment_approved = '1' ORDER BY comment_date_gmt DESC LIMIT 15");
+		$can_view_private_comments = current_user_can('read_private_posts')
+			|| current_user_can('read_private_pages')
+			|| current_user_can('edit_posts')
+			|| current_user_can('edit_pages');
+
+		if ( $can_view_private_comments ) {
+			$comments = $wpdb->get_results("SELECT $wpdb->comments.* FROM $wpdb->comments JOIN $wpdb->posts ON ID = comment_post_ID AND ( post_type = 'post' AND " . get_private_posts_cap_sql('post') . " OR post_type = 'page' AND " . get_private_posts_cap_sql('page') . " ) WHERE comment_approved = '1' ORDER BY comment_date_gmt DESC LIMIT 15");
+		} elseif ( !$comments = wp_cache_get( 'recent_comments', 'widget' ) ) {
+			$comments = $wpdb->get_results("SELECT * FROM $wpdb->comments JOIN wpdb->posts ON ID = comment_post_ID AND ( post_type = 'post' AND " . get_private_posts_cap_sql('post') . " OR post_type = 'page' AND " . get_private_posts_cap_sql('page') . " ) WHERE comment_approved = '1' ORDER BY comment_date_gmt DESC LIMIT 15");
 			wp_cache_add( 'recent_comments', $comments, 'widget' );
 		}
 
