git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Limited local file inclusion with .mailmap symlinks and git-archive

From
Jeff King <peff@peff.net>
Date
Feb 15, 2021, 23:17 UTC
Message-ID
<YCsBA002yv8XpppM@coredump.intra.peff.net>
In-Reply-To
<CAP3OtXj15f9XV=Rzz2oBXQ1TQH3WWKJGBbeaWrmp6Ha4ZTn9nA@mail.gmail.com>
On Sat, Feb 13, 2021 at 11:49:32AM -0600, Blake Burkhart wrote:
Show 7 quoted lines
> I reported this issue to the private security list first and discussed
> this issue with Peff. This is similar to existing concerns with
> .gitmodules, .gitattributes and .gitignore. Git already disallows
> checking out a .gitmodules file from a repository, and I understand
> there are in progress patches to add similar protection for
> .gitattributes and .gitignore. Please ensure the .mailmap file gets
> similar symlink protection.
Thanks again for bringing this up.

Here are some patches that I think will help. They're meant to be applied on the stalled jk/symlinked-dotgitx-files topic, which Junio has been carrying in "seen" for a few months now.

The sticking point there was that we were concerned that the fsck checks for .gitattributes/.gitignore would catch historical commits in real projects, making them annoying to work with. So the first patch here loosens those checks to warnings. I think this is safe enough, as the real protection is in preventing checkouts in the index code paths (the fsck checks are really just about protecting other clients using older versions, but the severity of these attacks is so low that the tradeoff doesn't make as much sense).

Obviously this could be squashed into the earlier patches, but I think documenting the change of direction with a separate commit makes sense.

And then the second patch adds similar .mailmap support (also as a warning, since I think it is largely in the same boat, and it makes sense to be consistent).

  [1/2]: fsck: make symlinked .gitignore and .gitattributes a warning
  [2/2]: disallow symlinked .mailmap files
 cache.h                      |  1 +
 fsck.c                       | 10 ++++++++--
 path.c                       |  5 +++++
 read-cache.c                 |  6 ++++--
 t/helper/test-path-utils.c   |  5 +++++
 t/t0060-path-utils.sh        | 10 ++++++++++
 t/t7450-bad-dotgitx-files.sh | 26 +++++++++++++++++++-------
 utf8.c                       |  5 +++++
 utf8.h                       |  1 +
 9 files changed, 58 insertions(+), 11 deletions(-)
-Peff
Previous: Blake BurkhartNext: Jeff King
Message 2 of 25 in “Limited local file inclusion with .mailmap symlinks and git-archive”
  1. Blake BurkhartFeb 13, 2021
  2. Jeff KingFeb 15, 2021
  3. 1/2 fsck: make symlinked .gitignore and .gitattributes a warningJeff King, Feb 15, 2021
  4. Ævar Arnfjörð BjarmasonFeb 16, 2021
  5. Jeff KingFeb 16, 2021
  6. Junio C HamanoFeb 16, 2021
  7. Jeff KingFeb 16, 2021
  8. Jeff KingFeb 16, 2021
  9. 0/6 open in-tree files with O_NOFOLLOWJeff King, Feb 16, 2021
  10. 1/6 add open_nofollow() helperJeff King, Feb 16, 2021
  11. Jeff KingFeb 16, 2021
  12. Taylor BlauFeb 16, 2021
  13. Jeff KingFeb 16, 2021
  14. Taylor BlauFeb 16, 2021
  15. Taylor BlauFeb 16, 2021
  16. Jeff KingFeb 16, 2021
  17. 2/6 attr: convert "macro_ok" into a flags fieldJeff King, Feb 16, 2021
  18. 4/6 attr: do not respect symlinks for in-tree .gitattributesJeff King, Feb 16, 2021
  19. 5/6 exclude: do not respect symlinks for in-tree .gitignoreJeff King, Feb 16, 2021
  20. 3/6 exclude: add flags parameter to add_patterns()Jeff King, Feb 16, 2021
  21. 6/6 mailmap: do not respect symlinks for in-tree .mailmapJeff King, Feb 16, 2021
  22. Jeff KingFeb 16, 2021
  23. Junio C HamanoFeb 25, 2021
  24. Jeff KingFeb 26, 2021
  25. 2/2 disallow symlinked .mailmap filesJeff King, Feb 15, 2021

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.