Index: wp-includes/widgets.php
===================================================================
--- wp-includes/widgets.php	(revision 10626)
+++ wp-includes/widgets.php	(working copy)
@@ -1388,8 +1388,11 @@
 	else if ( $number > 15 )
 		$number = 15;
 
+	$can_read_priv_posts = current_user_can('read_private_posts') ? " OR (p.post_status = 'private' and p.post_type = 'post') " : "";
+	$can_read_priv_pages = current_user_can('read_private_pages') ? " OR (p.post_status = 'private' and p.post_type = 'page') " : ""; 
+
 	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 $number");
+		$comments = $wpdb->get_results("SELECT c.* FROM $wpdb->comments c inner join $wpdb->posts p on c.comment_post_id = p.ID WHERE c.comment_approved = '1' AND (p.post_status = 'publish' $can_read_priv_posts $can_read_priv_pages ) ORDER BY comment_date_gmt DESC LIMIT $number");
 		wp_cache_add( 'recent_comments', $comments, 'widget' );
 	}
 ?>
