[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#609947: marked as done (pu: package git-core/1:1.5.6.5-3+lenny3.3)



Your message dated Sun, 23 Jan 2011 21:36:37 -0600
with message-id <20110124033637.GA10448@burratino>
and subject line Re: Accepted git-core 1:1.5.6.5-3+lenny3.3 (source all amd64)
has caused the Debian Bug report #609947,
regarding pu: package git-core/1:1.5.6.5-3+lenny3.3
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
609947: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=609947
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
User: release.debian.org@packages.debian.org
Usertags: pu
Tags: lenny security

Hi,

git in lenny (and etch) suffers from Bug#607248 (cross-site scripting
vulnerability in gitweb, CVE-2010-3906).  The fix has been present in
sid for about a month with no problems appearing, so I suppose it
should be safe to apply to lenny, too.

debdiff attached.  Would this be ok to upload to spu?

(To save a round-trip: if you give the ok, I welcome any interested DD
to make the actual upload.  Please cc me so I can test the autobuilt
binary packages.)

 http://alioth.debian.org/~jrnieder-guest/git/git-core_1.5.6.5-3+lenny3.3.dsc

Thanks,
Jonathan
diff -u git-core-1.5.6.5/debian/changelog git-core-1.5.6.5/debian/changelog
--- git-core-1.5.6.5/debian/changelog
+++ git-core-1.5.6.5/debian/changelog
@@ -1,3 +1,12 @@
+git-core (1:1.5.6.5-3+lenny3.3) stable; urgency=medium
+
+  * Non-maintainer upload.
+  * debian/diff/0010-CVE-2010-3906.diff:
+    new; gitweb: do not parrot filenames or other arguments given
+    in a request without proper quoting (closes: #607248).
+
+ -- Jonathan Nieder <jrnieder@gmail.com>  Thu, 13 Jan 2011 23:13:05 -0600
+
 git-core (1:1.5.6.5-3+lenny3.2) stable-security; urgency=high
 
   * Non-maintainer upload by the Security Team.
only in patch2:
unchanged:
--- git-core-1.5.6.5.orig/debian/diff/0010-CVE-2010-3906.diff
+++ git-core-1.5.6.5/debian/diff/0010-CVE-2010-3906.diff
@@ -0,0 +1,151 @@
+From 9b177cb2455c30aef3ff88100372cb55c7b0595d Mon Sep 17 00:00:00 2001
+From: Jakub Narebski <jnareb@gmail.com>
+Date: Wed, 15 Dec 2010 00:34:01 +0100
+Subject: gitweb: Introduce esc_attr to escape attributes of HTML elements
+
+It is needed only to escape attributes of handcrafted HTML elements,
+and not those generated using CGI.pm subroutines / methods for HTML
+generation.
+
+While at it, add esc_url and esc_html where needed, and prefer to use
+CGI.pm HTML generating methods than handcrafted HTML code.  Most of
+those are probably unnecessary (could be exploited only by person with
+write access to gitweb config, or at least access to the repository).
+
+This fixes CVE-2010-3906
+
+Reported-by: Emanuele Gentili <e.gentili@tigersecurity.it>
+Helped-by: John 'Warthog9' Hawley <warthog9@kernel.org>
+Helped-by: Jonathan Nieder <jrnieder@gmail.com>
+Signed-off-by: Jakub Narebski <jnareb@gmail.com>
+Signed-off-by: Junio C Hamano <gitster@pobox.com>
+(cherry picked from commit 3017ed62f47ce14a959e2d315c434d4980cf4243)
+Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
+---
+ gitweb/gitweb.perl |   35 +++++++++++++++++++++--------------
+ 1 files changed, 21 insertions(+), 14 deletions(-)
+
+diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
+index f88ce35..6dc9a6a 100755
+--- a/gitweb/gitweb.perl
++++ b/gitweb/gitweb.perl
+@@ -730,6 +730,13 @@ sub esc_url {
+ 	return $str;
+ }
+ 
++# quote unsafe characters in HTML attributes
++sub esc_attr {
++
++	# for XHTML conformance escaping '"' to '&quot;' is not enough
++	return esc_html(@_);
++}
++
+ # replace invalid utf8 character with SUBSTITUTION sequence
+ sub esc_html ($;%) {
+ 	my $str = shift;
+@@ -1106,7 +1113,7 @@ sub format_ref_marker {
+ 				$name = $ref;
+ 			}
+ 
+-			$markers .= " <span class=\"$type\" title=\"$ref\">" .
++			$markers .= " <span class=\"".esc_attr($type)."\" title=\"".esc_attr($ref)."\">" .
+ 			            esc_html($name) . "</span>";
+ 		}
+ 	}
+@@ -2517,11 +2524,11 @@ EOF
+ # print out each stylesheet that exist
+ 	if (defined $stylesheet) {
+ #provides backwards capability for those people who define style sheet in a config file
+-		print '<link rel="stylesheet" type="text/css" href="'.$stylesheet.'"/>'."\n";
++		print '<link rel="stylesheet" type="text/css" href="'.esc_url($stylesheet).'"/>'."\n";
+ 	} else {
+ 		foreach my $stylesheet (@stylesheets) {
+ 			next unless $stylesheet;
+-			print '<link rel="stylesheet" type="text/css" href="'.$stylesheet.'"/>'."\n";
++			print '<link rel="stylesheet" type="text/css" href="'.esc_url($stylesheet).'"/>'."\n";
+ 		}
+ 	}
+ 	if (defined $project) {
+@@ -2534,7 +2541,7 @@ EOF
+ 			my $type = lc($format);
+ 			my %link_attr = (
+ 				'-rel' => 'alternate',
+-				'-title' => "$project - $href_params{'-title'} - $format feed",
++				'-title' => esc_attr("$project - $href_params{'-title'} - $format feed"),
+ 				'-type' => "application/$type+xml"
+ 			);
+ 
+@@ -2561,13 +2568,13 @@ EOF
+ 	} else {
+ 		printf('<link rel="alternate" title="%s projects list" '.
+ 		       'href="%s" type="text/plain; charset=utf-8" />'."\n",
+-		       $site_name, href(project=>undef, action=>"project_index"));
++		       esc_attr($site_name), href(project=>undef, action=>"project_index"));
+ 		printf('<link rel="alternate" title="%s projects feeds" '.
+ 		       'href="%s" type="text/x-opml" />'."\n",
+-		       $site_name, href(project=>undef, action=>"opml"));
++		       esc_attr($site_name), href(project=>undef, action=>"opml"));
+ 	}
+ 	if (defined $favicon) {
+-		print qq(<link rel="shortcut icon" href="$favicon" type="image/png" />\n);
++		print qq(<link rel="shortcut icon" href=").esc_url($favicon).qq(" type="image/png" />\n);
+ 	}
+ 
+ 	print "</head>\n" .
+@@ -2582,7 +2589,7 @@ EOF
+ 	print "<div class=\"page_header\">\n" .
+ 	      $cgi->a({-href => esc_url($logo_url),
+ 	               -title => $logo_label},
+-	              qq(<img src="$logo" width="72" height="27" alt="git" class="logo"/>));
++	              qq(<img src=").esc_url($logo).qq(" width="72" height="27" alt="git" class="logo"/>));
+ 	print $cgi->a({-href => esc_url($home_link)}, $home_link_str) . " / ";
+ 	if (defined $project) {
+ 		print $cgi->a({-href => href(action=>"summary")}, esc_html($project));
+@@ -4287,7 +4294,7 @@ HTML
+ 			$lineno   = $4;
+ 			$data     = $5;
+ 		} else {
+-			print qq(  <tr><td colspan="5" class="error">Unable to parse: $line</td></tr>\n);
++			print qq(  <tr><td colspan="5" class="error">Unable to parse: ).esc_html($line).qq(</td></tr>\n);
+ 			next;
+ 		}
+ 		$short_rev  = substr ($long_rev, 0, 8);
+@@ -4444,14 +4451,14 @@ sub git_blob {
+ 	} else {
+ 		print "<div class=\"page_nav\">\n" .
+ 		      "<br/><br/></div>\n" .
+-		      "<div class=\"title\">$hash</div>\n";
++		      "<div class=\"title\">".esc_html($hash)."</div>\n";
+ 	}
+ 	git_print_page_path($file_name, "blob", $hash_base);
+ 	print "<div class=\"page_body\">\n";
+ 	if ($mimetype =~ m!^image/!) {
+-		print qq!<img type="$mimetype"!;
++		print qq!<img type="!.esc_attr($mimetype).qq!"!;
+ 		if ($file_name) {
+-			print qq! alt="$file_name" title="$file_name"!;
++			print qq! alt="!.esc_attr($file_name).qq!" title="!.esc_attr($file_name).qq!"!;
+ 		}
+ 		print qq! src="! .
+ 		      href(action=>"blob_plain", hash=>$hash,
+@@ -4517,7 +4524,7 @@ sub git_tree {
+ 		undef $hash_base;
+ 		print "<div class=\"page_nav\">\n";
+ 		print "<br/><br/></div>\n";
+-		print "<div class=\"title\">$hash</div>\n";
++		print "<div class=\"title\">".esc_html($hash)."</div>\n";
+ 	}
+ 	if (defined $file_name) {
+ 		$basedir = $file_name;
+@@ -4942,7 +4949,7 @@ sub git_blobdiff {
+ 			git_print_header_div('commit', esc_html($co{'title'}), $hash_base);
+ 		} else {
+ 			print "<div class=\"page_nav\"><br/>$formats_nav<br/></div>\n";
+-			print "<div class=\"title\">$hash vs $hash_parent</div>\n";
++			print "<div class=\"title\">".esc_html("$hash vs $hash_parent")."</div>\n";
+ 		}
+ 		if (defined $file_name) {
+ 			git_print_page_path($file_name, "blob", $hash_base);
+-- 
+1.7.4.rc2
+

--- End Message ---
--- Begin Message ---
Jonathan Nieder wrote:

>  git-core (1:1.5.6.5-3+lenny3.3) stable; urgency=medium
>  .
>    * Non-maintainer upload.
>    * debian/diff/0010-CVE-2010-3906.diff:
>      new; gitweb: do not parrot filenames or other arguments given
>      in a request without proper quoting (closes: #607248).
[...]
> Accepted:

Therefore closing.  Thanks again to all.


--- End Message ---

Reply to: