Git fork
at reftables-rust 60 lines 2.3 kB view raw
1Git v2.30.6 Release Notes 2========================= 3 4This release addresses the security issues CVE-2022-39253 and 5CVE-2022-39260. 6 7Fixes since v2.30.5 8------------------- 9 10 * CVE-2022-39253: 11 When relying on the `--local` clone optimization, Git dereferences 12 symbolic links in the source repository before creating hardlinks 13 (or copies) of the dereferenced link in the destination repository. 14 This can lead to surprising behavior where arbitrary files are 15 present in a repository's `$GIT_DIR` when cloning from a malicious 16 repository. 17 18 Git will no longer dereference symbolic links via the `--local` 19 clone mechanism, and will instead refuse to clone repositories that 20 have symbolic links present in the `$GIT_DIR/objects` directory. 21 22 Additionally, the value of `protocol.file.allow` is changed to be 23 "user" by default. 24 25 * CVE-2022-39260: 26 An overly-long command string given to `git shell` can result in 27 overflow in `split_cmdline()`, leading to arbitrary heap writes and 28 remote code execution when `git shell` is exposed and the directory 29 `$HOME/git-shell-commands` exists. 30 31 `git shell` is taught to refuse interactive commands that are 32 longer than 4MiB in size. `split_cmdline()` is hardened to reject 33 inputs larger than 2GiB. 34 35Credit for finding CVE-2022-39253 goes to Cory Snider of Mirantis. The 36fix was authored by Taylor Blau, with help from Johannes Schindelin. 37 38Credit for finding CVE-2022-39260 goes to Kevin Backhouse of GitHub. 39The fix was authored by Kevin Backhouse, Jeff King, and Taylor Blau. 40 41 42Jeff King (2): 43 shell: add basic tests 44 shell: limit size of interactive commands 45 46Kevin Backhouse (1): 47 alias.c: reject too-long cmdline strings in split_cmdline() 48 49Taylor Blau (11): 50 builtin/clone.c: disallow `--local` clones with symlinks 51 t/lib-submodule-update.sh: allow local submodules 52 t/t1NNN: allow local submodules 53 t/2NNNN: allow local submodules 54 t/t3NNN: allow local submodules 55 t/t4NNN: allow local submodules 56 t/t5NNN: allow local submodules 57 t/t6NNN: allow local submodules 58 t/t7NNN: allow local submodules 59 t/t9NNN: allow local submodules 60 transport: make `protocol.file.allow` be "user" by default