Package: release.debian.org
Severity: normal
User: release.debian....@packages.debian.org
Usertags: unblock

Hi

Please unblock package git

The update fixes CVE-2017-8386, which does not have a bug in the BTS.
The issue was covered with DSA-3848-1 in jessie, so please allow the
fix to go to stretch to avoid a regression.

Details:

https://insinuator.net/2017/05/git-shell-bypass-by-abusing-less-cve-2017-8386/
http://lkml.iu.edu/hypermail/linux/kernel/1705.1/01337.html
http://lkml.iu.edu/hypermail/linux/kernel/1705.1/01346.html

Changelog entry:

git (1:2.11.0-3) unstable; urgency=high

  * Do not allow git helpers run via git-shell to launch a pager
    (CVE-2017-8386).

 -- Jonathan Nieder <jrnie...@gmail.com>  Tue, 09 May 2017 16:23:17 -0700

unblock git/1:2.11.0-3

debdiff attached against the current version in stretch.

Regards,
Salvatore
diff -Nru git-2.11.0/debian/changelog git-2.11.0/debian/changelog
--- git-2.11.0/debian/changelog 2016-12-28 00:17:12.000000000 +0100
+++ git-2.11.0/debian/changelog 2017-05-10 01:23:17.000000000 +0200
@@ -1,3 +1,10 @@
+git (1:2.11.0-3) unstable; urgency=high
+
+  * Do not allow git helpers run via git-shell to launch a pager
+    (CVE-2017-8386).
+
+ -- Jonathan Nieder <jrnie...@gmail.com>  Tue, 09 May 2017 16:23:17 -0700
+
 git (1:2.11.0-2) unstable; urgency=medium
 
   * gitweb: Depends: libcgi-pm-perl; Build-Depends: libcgi-pm-perl
diff -Nru git-2.11.0/debian/patches/series git-2.11.0/debian/patches/series
--- git-2.11.0/debian/patches/series    2016-12-28 00:10:31.000000000 +0100
+++ git-2.11.0/debian/patches/series    2017-05-10 01:22:54.000000000 +0200
@@ -2,3 +2,4 @@
 Normalize-generated-asciidoc-timestamps-with-SOURCE_D.diff
 git-gui-Sort-entries-in-optimized-tclIndex.diff
 xdiff-Do-not-enable-XDL_FAST_HASH-by-default.diff
+shell-disallow-repo-names-beginning-with-dash.patch
diff -Nru 
git-2.11.0/debian/patches/shell-disallow-repo-names-beginning-with-dash.patch 
git-2.11.0/debian/patches/shell-disallow-repo-names-beginning-with-dash.patch
--- 
git-2.11.0/debian/patches/shell-disallow-repo-names-beginning-with-dash.patch   
    1970-01-01 01:00:00.000000000 +0100
+++ 
git-2.11.0/debian/patches/shell-disallow-repo-names-beginning-with-dash.patch   
    2017-05-10 01:20:52.000000000 +0200
@@ -0,0 +1,74 @@
+From 3ec804490a265f4c418a321428c12f3f18b7eff5 Mon Sep 17 00:00:00 2001
+From: Jeff King <p...@peff.net>
+Date: Sat, 29 Apr 2017 08:36:44 -0400
+Subject: [PATCH] shell: disallow repo names beginning with dash
+
+When a remote server uses git-shell, the client side will
+connect to it like:
+
+  ssh server "git-upload-pack 'foo.git'"
+
+and we literally exec ("git-upload-pack", "foo.git"). In
+early versions of upload-pack and receive-pack, we took a
+repository argument and nothing else. But over time they
+learned to accept dashed options. If the user passes a
+repository name that starts with a dash, the results are
+confusing at best (we complain of a bogus option instead of
+a non-existent repository) and malicious at worst (the user
+can start an interactive pager via "--help").
+
+We could pass "--" to the sub-process to make sure the
+user's argument is interpreted as a branch name. I.e.:
+
+  git-upload-pack -- -foo.git
+
+But adding "--" automatically would make us inconsistent
+with a normal shell (i.e., when git-shell is not in use),
+where "-foo.git" would still be an error. For that case, the
+client would have to specify the "--", but they can't do so
+reliably, as existing versions of git-shell do not allow
+more than a single argument.
+
+The simplest thing is to simply disallow "-" at the start of
+the repo name argument. This hasn't worked either with or
+without git-shell since version 1.0.0, and nobody has
+complained.
+
+Note that this patch just applies to do_generic_cmd(), which
+runs upload-pack, receive-pack, and upload-archive. There
+are two other types of commands that git-shell runs:
+
+  - do_cvs_cmd(), but this already restricts the argument to
+    be the literal string "server"
+
+  - admin-provided commands in the git-shell-commands
+    directory. We'll pass along arbitrary arguments there,
+    so these commands could have similar problems. But these
+    commands might actually understand dashed arguments, so
+    we cannot just block them here. It's up to the writer of
+    the commands to make sure they are safe. With great
+    power comes great responsibility.
+
+Reported-by: Timo Schmid <tsch...@ernw.de>
+Signed-off-by: Jeff King <p...@peff.net>
+Signed-off-by: Junio C Hamano <gits...@pobox.com>
+---
+ shell.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/shell.c b/shell.c
+index ace62e4b65..c3bf8ec38a 100644
+--- a/shell.c
++++ b/shell.c
+@@ -13,7 +13,7 @@ static int do_generic_cmd(const char *me, char *arg)
+       const char *my_argv[4];
+ 
+       setup_path();
+-      if (!arg || !(arg = sq_dequote(arg)))
++      if (!arg || !(arg = sq_dequote(arg)) || *arg == '-')
+               die("bad argument");
+       if (!starts_with(me, "git-"))
+               die("bad command");
+-- 
+2.13.0.rc2.291.g57267f2277
+

Reply via email to