openSUSE Security Update: Security update for git
______________________________________________________________________________

Announcement ID:    openSUSE-SU-2021:2555-1
Rating:             moderate
References:         #1168930 #1183026 #1183580 SLE-17838 SLE-18152 
                    
Cross-References:   CVE-2021-21300
CVSS scores:
                    CVE-2021-21300 (NVD) : 7.5 CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H
                    CVE-2021-21300 (SUSE): 7.5 CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H

Affected Products:
                    openSUSE Leap 15.3
______________________________________________________________________________

   An update that solves one vulnerability, contains two
   features and has two fixes is now available.

Description:

   This update for git fixes the following issues:

   Update from version 2.26.2 to version 2.31.1 (jsc#SLE-18152)

   Security fixes:

   - CVE-2021-21300: On case-insensitive file systems with support for
     symbolic links, if Git is configured globally to apply delay-capable
     clean/smudge filters (such as Git LFS), Git could run remote code during
     a clone. (bsc#1183026)

   Non security changes:

   - Add `sysusers` file to create `git-daemon` user.
   - Remove `perl-base` and `openssh-server` dependency on `git-core`and
     provide a `perl-Git` package. (jsc#SLE-17838)
   - `fsmonitor` bug fixes
   - Fix `git bisect` to take an annotated tag as a good/bad endpoint
   - Fix a corner case in `git mv` on case insensitive systems
   - Require only `openssh-clients` where possible (like Tumbleweed or SUSE
     Linux Enterprise >= 15 SP3). (bsc#1183580)
   - Drop `rsync` requirement, not necessary anymore.
   - Use of `pack-redundant` command is discouraged and will trigger a
     warning. The replacement is `repack -d`.
   - The `--format=%(trailers)` mechanism gets enhanced to make it easier to
     design output for machine consumption.
   - No longer give message to choose between rebase or merge upon pull if
     the history `fast-forwards`.
   - The configuration variable `core.abbrev` can be set to `no` to force no
     abbreviation regardless of the hash algorithm
   - `git rev-parse` can be explicitly told to give output as absolute or
     relative path with the `--path-format=(absolute|relative)` option.
   - Bash completion update to make it easier for end-users to add completion
     for their custom `git` subcommands.
   - `git maintenance` learned to drive scheduled maintenance on platforms
     whose native scheduling methods are not 'cron'.
   - After expiring a reflog and making a single commit, the reflog for the
     branch would record a single entry that knows both `@{0}` and `@{1}`,
     but we failed to answer "what commit were we on?", i.e. `@{1}`
   - `git bundle` learns `--stdin` option to read its refs from the standard
     input. Also, it now does not lose refs when they point at the same
     object.
   - `git log` learned a new `--diff-merges=` option.
   - `git ls-files` can and does show multiple entries when the index is
     unmerged, which is a source for confusion unless `-s/-u` option is in
     use.  A new option `--deduplicate` has been introduced.
   - `git worktree list` now annotates worktrees as prunable, shows locked
     and prunable attributes in `--porcelain mode`, and gained a `--verbose`
     option.
   - `git clone` tries to locally check out the branch pointed at by HEAD of
     the remote repository after it is done, but the protocol did not convey
     the information necessary to do so when copying an empty repository. The
     protocol v2 learned how to do so.
   - There are other ways than `..` for a single token to denote a `commit
     range", namely `^!` and `^-`, but `git range-diff` did not
     understand them.
   - The `git range-diff` command learned `--(left|right)-only` option to
     show only one side of the compared range.
   - `git mergetool` feeds three versions (base, local and remote) of a
     conflicted path unmodified. The command learned to optionally prepare
     these files with unconflicted parts already resolved.
   - The `.mailmap` is documented to be read only from the root level of a
     working tree, but a stray file in a bare repository also was read by
     accident, which has been corrected.
   - `git maintenance` tool learned a new `pack-refs` maintenance task.
   - Improved error message given when a configuration variable that is
     expected to have a boolean value.
   - Signed commits and tags now allow verification of objects, whose two
     object names (one in SHA-1, the other in SHA-256) are both signed.
   - `git rev-list` command learned `--disk-usage` option.
   - `git diff`, `git log` `--{skip,rotate}-to=` allows the user to
     discard diff output for early paths or move them to the end of the
     output.
   - `git difftool` learned `--skip-to=` option to restart an
     interrupted session from an arbitrary path.
   - `git grep` has been tweaked to be limited to the sparse checkout paths.
   - `git rebase --[no-]fork-point` gained a configuration variable
     `rebase.forkPoint` so that users do not have to keep specifying a
     non-default setting.
   - `git stash` did not work well in a sparsely checked out working tree.
   - Newline characters in the host and path part of `git://` URL are now
     forbidden.
   - `Userdiff` updates for PHP, Rust, CSS
   - Avoid administrator error leading to data loss with `git push
     --force-with-lease[=]` by introducing `--force-if-includes`
   - only pull `asciidoctor` for the default ruby version
   - The `--committer-date-is-author-date` option of `rebase` and `am`
     subcommands lost the e-mail address by mistake in 2.29
   - The transport protocol v2 has become the default again
   - `git worktree` gained a `repair` subcommand, `git init
     --separate-git-dir` no longer corrupts administrative data related to
     linked worktrees
   - `git maintenance` introduced for repository maintenance tasks
   - `fetch.writeCommitGraph` is deemed to be still a bit too risky and is no
     longer part of the `feature.experimental` set.
   - The commands in the `diff` family honors the `diff.relative`
     configuration variable.
   - `git diff-files` has been taught to say paths that are marked as
     `intent-to-add` are new files, not modified from an empty blob.
   - `git gui` now allows opening work trees from the start-up dialog.
   - `git bugreport` reports what shell is in use.
   - Some repositories have commits that record wrong committer timezone;
     `git fast-import` has an option to pass these timestamps intact to allow
     recreating existing repositories as-is.
   - `git describe` will always use the `long` version when giving its output
     based misplaced tags
   - `git pull` issues a warning message until the `pull.rebase`
     configuration variable is explicitly given


Patch Instructions:

   To install this openSUSE Security Update use the SUSE recommended installation methods
   like YaST online_update or "zypper patch".

   Alternatively you can run the command listed for your product:

   - openSUSE Leap 15.3:

      zypper in -t patch openSUSE-SLE-15.3-2021-2555=1



Package List:

   - openSUSE Leap 15.3 (aarch64 ppc64le s390x x86_64):

      git-2.31.1-10.3.1
      git-arch-2.31.1-10.3.1
      git-core-2.31.1-10.3.1
      git-core-debuginfo-2.31.1-10.3.1
      git-credential-gnome-keyring-2.31.1-10.3.1
      git-credential-gnome-keyring-debuginfo-2.31.1-10.3.1
      git-credential-libsecret-2.31.1-10.3.1
      git-credential-libsecret-debuginfo-2.31.1-10.3.1
      git-cvs-2.31.1-10.3.1
      git-daemon-2.31.1-10.3.1
      git-daemon-debuginfo-2.31.1-10.3.1
      git-debuginfo-2.31.1-10.3.1
      git-debugsource-2.31.1-10.3.1
      git-email-2.31.1-10.3.1
      git-gui-2.31.1-10.3.1
      git-p4-2.31.1-10.3.1
      git-svn-2.31.1-10.3.1
      git-web-2.31.1-10.3.1
      gitk-2.31.1-10.3.1
      perl-Git-2.31.1-10.3.1

   - openSUSE Leap 15.3 (noarch):

      git-doc-2.31.1-10.3.1


References:

   https://www.suse.com/security/cve/CVE-2021-21300.html
   https://bugzilla.suse.com/1168930
   https://bugzilla.suse.com/1183026
   https://bugzilla.suse.com/1183580