Re: Bare repositories in the working tree are a security risk
- From
Taylor Blau <me@ttaylorr.com>
- Date
- Apr 16, 2022, 01:00 UTC
- Message-ID
- <YloVFn0SC/SF33b3@nand.local>
- In-Reply-To
- <kl6l5yn99ahv.fsf@chooglen-macbookpro.roam.corp.google.com>
On Fri, Apr 15, 2022 at 04:45:32PM -0700, Glen Choo wrote:
Show 26 quoted lines
> However, this case shows that --git-dir won't work at all with "git
> init", and I wouldn't be surprised if there are other breakages hiding
> just out of plain sight. This worries me a lot more, and I think
> disabling bare repo detection wholesale might be a nonstarter.
>
> I wonder if all we need to do is make setup.c a little smarter - we
> recognize bare repos, but *only* if they are contained in a directory
> named `.git/`. This should fix "git init" I think, because even though
> we'd ignore "./ (bare)", we'd recognize `../.git/` and we get the right
> behavior again.
>
> I haven't tested it yet, but this proposal sounds like it has quite a
> few merits to me:
>
> - Easy to explain.
> - Easy rationalization ("We used to be quite cavalier about detecting
> bare repos, but now we're being more strict by default").
> - Fixes the embedded bare repo problem (since we don't allow .git).
> - No-op and neglible performance hit for non-bare repo users, even if
> they occasionally run "git" inside ".git".
>
> As with the original proposal of "ignore bare repos altogether", this
> will still be a headache for bare repo users (unless they don't mind
> renaming their bare repo directory to ".git"), so this behavior needs to
> be configurable, but perhaps the fallout is small enough that this
> could be a safe default.I think you are underestimating the fallout, at least if I'm understanding your proposal correctly.
Is the proposal to only detect bare repositories that are called `.git`? I think that's what you're suggesting, though can't we just as easily embed a bare repository named ".git" in a clone as long as its not in the root directory?
But like I said in an earlier message, I think that this is vastly underestimating the number of legitimate repositories that are stored as bare repos on disk (not embedded in a non-bare repo, nor named ".git").
Thanks, Taylor