git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/7] fix segfaults with implicit-bool config
@ 2023-12-07  7:10 Jeff King
  2023-12-07  7:11 ` [PATCH 1/7] config: handle NULL value when parsing non-bools Jeff King
                   ` (7 more replies)
  0 siblings, 8 replies; 17+ messages in thread
From: Jeff King @ 2023-12-07  7:10 UTC (permalink / raw)
  To: git; +Cc: Carlos Andrés Ramírez Cataño

Carlos reported to the security list a case where you can cause Git
to segfault by using an implicit bool like:

  [core]
  someVariable

when the parsing side for core.someVariable does not correctly check a
NULL "value" string. This is mostly harmless, as anybody who can feed
arbitrary config can already execute arbitrary code. There is one case
of this when parsing .gitmodules (which we don't trust), but even there
I don't think the security implications are that interesting. A
malicious repo can get "clone --recurse-submodules" to segfault, but
always with a strict NULL dereference, not any kind of controllable
pointer. See patch 5 for more details.

I audited the whole code base for instances of the problem. It was
fairly manual, so it's possible I missed a spot, but I think this should
cover everything.

The first patch has vanilla cases, and the rest are instances where I
thought it was worth calling out specific details.

  [1/7]: config: handle NULL value when parsing non-bools
  [2/7]: setup: handle NULL value when parsing extensions
  [3/7]: trace2: handle NULL values in tr2_sysenv config callback
  [4/7]: help: handle NULL value for alias.* config
  [5/7]: submodule: handle NULL value when parsing submodule.*.branch
  [6/7]: trailer: handle NULL value when parsing trailer-specific config
  [7/7]: fsck: handle NULL value when parsing message config

 builtin/blame.c        |  2 ++
 builtin/checkout.c     |  2 ++
 builtin/clone.c        |  2 ++
 builtin/log.c          |  5 ++++-
 builtin/pack-objects.c |  6 +++++-
 builtin/receive-pack.c | 11 +++++++----
 compat/mingw.c         |  2 ++
 config.c               |  8 ++++++++
 diff.c                 | 19 ++++++++++++++++---
 fetch-pack.c           | 12 ++++++++----
 fsck.c                 |  8 ++++++--
 help.c                 |  5 ++++-
 mailinfo.c             |  2 ++
 notes-utils.c          |  2 ++
 setup.c                |  2 ++
 submodule-config.c     |  4 +++-
 trace2/tr2_sysenv.c    |  2 ++
 trailer.c              |  8 ++++++++
 18 files changed, 85 insertions(+), 17 deletions(-)

^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2023-12-12  4:10 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-12-07  7:10 [PATCH 0/7] fix segfaults with implicit-bool config Jeff King
2023-12-07  7:11 ` [PATCH 1/7] config: handle NULL value when parsing non-bools Jeff King
2023-12-07  8:14   ` Patrick Steinhardt
2023-12-12  0:58     ` Jeff King
2023-12-07  7:11 ` [PATCH 2/7] setup: handle NULL value when parsing extensions Jeff King
2023-12-07  7:11 ` [PATCH 3/7] trace2: handle NULL values in tr2_sysenv config callback Jeff King
2023-12-07  7:11 ` [PATCH 4/7] help: handle NULL value for alias.* config Jeff King
2023-12-07  7:11 ` [PATCH 5/7] submodule: handle NULL value when parsing submodule.*.branch Jeff King
2023-12-07  8:14   ` Patrick Steinhardt
2023-12-12  0:46     ` Jeff King
2023-12-07  7:11 ` [PATCH 6/7] trailer: handle NULL value when parsing trailer-specific config Jeff King
2023-12-07  8:14   ` Patrick Steinhardt
2023-12-07  7:11 ` [PATCH 7/7] fsck: handle NULL value when parsing message config Jeff King
2023-12-07  8:15   ` Patrick Steinhardt
2023-12-07  8:14 ` [PATCH 0/7] fix segfaults with implicit-bool config Patrick Steinhardt
2023-12-12  0:52   ` Jeff King
2023-12-12  4:10     ` Patrick Steinhardt

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).