git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jeremy Maitin-Shepard <jbms@cmu.edu>
To: "Roman V. Shaposhnik" <rvs@sun.com>
Cc: Junio C Hamano <gitster@pobox.com>,
	Ping Yin <pkufranky@gmail.com>,
	Avery Pennarun <apenwarr@gmail.com>,
	stuart.freeman@et.gatech.edu, git@vger.kernel.org
Subject: Re: Intricacies of submodules
Date: Thu, 17 Apr 2008 14:09:29 -0400	[thread overview]
Message-ID: <87lk3c4ali.fsf@jeremyms.com> (raw)
In-Reply-To: <1208317795.26863.91.camel@goose.sun.com> (Roman V. Shaposhnik's message of "Tue, 15 Apr 2008 20:49:55 -0700")

"Roman V. Shaposhnik" <rvs@sun.com> writes:

[snip]

> I'm sorry, but I don't buy this argument. If you have a malicious user
> gaining access to the repository all bets are off. To single out 
> in-tree .gitconfig as the only place which could be hacked seems to
> be a bit shortsighted and unfair. Any "executable" portion of your
> project that rarely gets eyeballed (such as Makefile infrastrucutre)
> could be used. In fact, under your scenario in-tree .gitconfig is
> likely to be the least of your worries. 

> And here's one more thing: in-tree .gitconfig and in-tree 
> update-my-git-settings.sh are absolutely identical as far
> as their security ramifications are concerned. If you really paranoid
> you have to eyeball either of them.

There is a huge difference: if you allow in-tree .gitconfig by default,
then git clone <some-repository> becomes an unsafe operation.  I can't
even inspect some arbitrary repository to _see_ if I like the code and
think it is safe very easily, since I'd normally do that by cloning the
repository.

Obviously actually executing untrusted code is unsafe regardless of
whether you type "git clone" or "make" to do it, but not everyone
intends to type "make" after checking out an unknown repository, and the
user is explicitly invoking make with the knowledge that it is running
whatever code is in the repository.  Similarly, if the user explicitly
calls some shell script in order to set things up, he is conscious that
he is performing a potentially unsafe operation.

As a silly analogy, it is currently perfectly safe to clone a repository
that has a text document containing instructions about committing
suicide, because there is the assumption that the instructions are not
automatically executed simply because they are on the user's hard drive.

[snip]

> Why? I'm really confused here. Unless I'm given a clear example of at
> least one setting that somehow becomes dangerous when stored inside
> in-tree .gitconfig, I really do consider such an enforcement to be
> as meaningful as enforcing that Git MUST manage source code and nothing
> else. You seemed to mention the trust issue. Well, why don't you trust
> the user to place whatever he wants in in-tree .gitconfig? And yes,
> we are talking about trustworthy users here and repositories that
> haven't been compromised.

Obviously any configuration option that specifies a shell command to run
is unsafe to specify in an in-tree .gitconfig.  As Junio noted,
smudge/clean commands are especially unsafe because they will be
executed even if the user only uses the clone command.

You actually seem to be the one assuming that a Git repository must
store source code (in particular source code that is then blindly
executed by anyone that clones the repository), as that is the only case
in which an in-tree .gitconfig can introduce no additional security
risk, since your security is then already completely dependent on
trusting the contents of the repository.

-- 
Jeremy Maitin-Shepard

  reply	other threads:[~2008-04-17 18:10 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-03-31 20:59 Migrating svn to git with heavy use of externals D. Stuart Freeman
2008-04-08 18:07 ` D. Stuart Freeman
2008-04-08 20:06   ` Avery Pennarun
2008-04-08 20:49     ` D. Stuart Freeman
2008-04-08 21:01       ` Avery Pennarun
2008-04-08 22:47         ` D. Stuart Freeman
2008-04-09  3:03         ` Roman Shaposhnik
2008-04-09  3:33           ` Avery Pennarun
2008-04-09  4:39             ` Roman Shaposhnik
2008-04-09  6:34               ` Avery Pennarun
2008-04-09  6:43                 ` Junio C Hamano
2008-04-10  3:43                   ` Intricacies of submodules [was: Migrating svn to git with heavy use of externals] Roman Shaposhnik
2008-04-10  5:53                     ` Intricacies of submodules Junio C Hamano
2008-04-10 20:32                       ` Roman Shaposhnik
2008-04-11  5:20                         ` Junio C Hamano
2008-04-11 16:04                           ` Ping Yin
2008-04-11 22:32                             ` Junio C Hamano
2008-04-12  3:13                               ` Roman Shaposhnik
2008-04-12  5:11                                 ` Junio C Hamano
2008-04-14 19:52                                   ` Roman Shaposhnik
2008-04-15  1:13                                     ` Junio C Hamano
2008-04-15  2:13                                       ` Ping Yin
2008-04-16  3:49                                       ` Roman V. Shaposhnik
2008-04-17 18:09                                         ` Jeremy Maitin-Shepard [this message]
2008-04-17 19:06                                           ` Linus Torvalds
2008-04-17 20:04                                             ` Junio C Hamano
     [not found]                                               ` <32541b130804181128j57d76edcsbbd5fb8d4c782ae7@mail.gmail.com>
2008-04-18 18:30                                                 ` Avery Pennarun
2008-04-17 19:50                                           ` Roman V. Shaposhnik
2008-04-17 20:06                                             ` Martin Langhoff
2008-04-17 20:44                                               ` Junio C Hamano
2008-04-17 21:00                                                 ` Sverre Rabbelier
2008-04-17 21:25                                                   ` Martin Langhoff
2008-04-17 21:27                                                     ` Sverre Rabbelier
2008-04-17 21:31                                                       ` Martin Langhoff
2008-04-18  1:41                                                         ` Ping Yin
2008-04-17 22:29                                             ` Dmitry Potapov
2008-04-17 22:32                                             ` Linus Torvalds
2008-04-18  1:48                                               ` Ping Yin
2008-04-18 14:02                                             ` Jakub Narebski
2008-04-12  3:20                               ` Ping Yin
2008-04-14 19:56                           ` Roman Shaposhnik
2008-04-12  4:02                       ` Ping Yin
2008-04-12  5:25                         ` Junio C Hamano
2008-04-12  6:26                           ` Ping Yin
2008-04-10 16:07                     ` Intricacies of submodules [was: Migrating svn to git with heavy use of externals] Ping Yin
2008-04-10 19:27                       ` Roman Shaposhnik
2008-04-09 19:57                 ` Roman Shaposhnik
2008-04-09 20:27                   ` Avery Pennarun

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87lk3c4ali.fsf@jeremyms.com \
    --to=jbms@cmu.edu \
    --cc=apenwarr@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=pkufranky@gmail.com \
    --cc=rvs@sun.com \
    --cc=stuart.freeman@et.gatech.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).