Browse Source
* maint-2.37: Git 2.37.6 Git 2.36.5 Git 2.35.7 Git 2.34.7 http: support CURLOPT_PROTOCOLS_STR http: prefer CURLOPT_SEEKFUNCTION to CURLOPT_IOCTLFUNCTION http-push: prefer CURLOPT_UPLOAD to CURLOPT_PUT Git 2.33.7 Git 2.32.6 Git 2.31.7 Git 2.30.8 apply: fix writing behind newly created symbolic links dir-iterator: prevent top-level symlinks without FOLLOW_SYMLINKS clone: delay picking a transport until after get_repo_path() t5619: demonstrate clone_local() with ambiguous transportmaint
Johannes Schindelin
2 years ago
22 changed files with 418 additions and 53 deletions
@ -0,0 +1,52 @@
@@ -0,0 +1,52 @@
|
||||
Git v2.30.8 Release Notes |
||||
========================= |
||||
|
||||
This release addresses the security issues CVE-2023-22490 and |
||||
CVE-2023-23946. |
||||
|
||||
|
||||
Fixes since v2.30.7 |
||||
------------------- |
||||
|
||||
* CVE-2023-22490: |
||||
|
||||
Using a specially-crafted repository, Git can be tricked into using |
||||
its local clone optimization even when using a non-local transport. |
||||
Though Git will abort local clones whose source $GIT_DIR/objects |
||||
directory contains symbolic links (c.f., CVE-2022-39253), the objects |
||||
directory itself may still be a symbolic link. |
||||
|
||||
These two may be combined to include arbitrary files based on known |
||||
paths on the victim's filesystem within the malicious repository's |
||||
working copy, allowing for data exfiltration in a similar manner as |
||||
CVE-2022-39253. |
||||
|
||||
* CVE-2023-23946: |
||||
|
||||
By feeding a crafted input to "git apply", a path outside the |
||||
working tree can be overwritten as the user who is running "git |
||||
apply". |
||||
|
||||
* A mismatched type in `attr.c::read_attr_from_index()` which could |
||||
cause Git to errantly reject attributes on Windows and 32-bit Linux |
||||
has been corrected. |
||||
|
||||
Credit for finding CVE-2023-22490 goes to yvvdwf, and the fix was |
||||
developed by Taylor Blau, with additional help from others on the |
||||
Git security mailing list. |
||||
|
||||
Credit for finding CVE-2023-23946 goes to Joern Schneeweisz, and the |
||||
fix was developed by Patrick Steinhardt. |
||||
|
||||
|
||||
Johannes Schindelin (1): |
||||
attr: adjust a mismatched data type |
||||
|
||||
Patrick Steinhardt (1): |
||||
apply: fix writing behind newly created symbolic links |
||||
|
||||
Taylor Blau (3): |
||||
t5619: demonstrate clone_local() with ambiguous transport |
||||
clone: delay picking a transport until after get_repo_path() |
||||
dir-iterator: prevent top-level symlinks without FOLLOW_SYMLINKS |
||||
|
@ -0,0 +1,6 @@
@@ -0,0 +1,6 @@
|
||||
Git v2.31.7 Release Notes |
||||
========================= |
||||
|
||||
This release merges up the fixes that appear in v2.30.8 to |
||||
address the security issues CVE-2023-22490 and CVE-2023-23946; |
||||
see the release notes for that version for details. |
@ -0,0 +1,6 @@
@@ -0,0 +1,6 @@
|
||||
Git v2.32.6 Release Notes |
||||
========================= |
||||
|
||||
This release merges up the fixes that appear in v2.30.8 and v2.31.7 |
||||
to address the security issues CVE-2023-22490 and CVE-2023-23946; |
||||
see the release notes for these versions for details. |
@ -0,0 +1,7 @@
@@ -0,0 +1,7 @@
|
||||
Git v2.33.7 Release Notes |
||||
========================= |
||||
|
||||
This release merges up the fixes that appear in v2.30.8, v2.31.7 |
||||
and v2.32.6 to address the security issues CVE-2023-22490 and |
||||
CVE-2023-23946; see the release notes for these versions for |
||||
details. |
@ -0,0 +1,7 @@
@@ -0,0 +1,7 @@
|
||||
Git v2.34.7 Release Notes |
||||
========================= |
||||
|
||||
This release merges up the fixes that appear in v2.30.8, v2.31.7, |
||||
v2.32.6 and v2.33.7 to address the security issues CVE-2023-22490 |
||||
and CVE-2023-23946; see the release notes for these versions |
||||
for details. |
@ -0,0 +1,7 @@
@@ -0,0 +1,7 @@
|
||||
Git v2.35.7 Release Notes |
||||
========================= |
||||
|
||||
This release merges up the fixes that appear in v2.30.8, v2.31.7, |
||||
v2.32.6, v2.33.7 and v2.34.7 to address the security issues |
||||
CVE-2023-22490 and CVE-2023-23946; see the release notes for |
||||
these versions for details. |
@ -0,0 +1,7 @@
@@ -0,0 +1,7 @@
|
||||
Git v2.36.5 Release Notes |
||||
========================= |
||||
|
||||
This release merges up the fixes that appear in v2.30.8, v2.31.7, |
||||
v2.32.6, v2.33.7, v2.34.7 and v2.35.7 to address the security |
||||
issues CVE-2023-22490 and CVE-2023-23946; see the release notes |
||||
for these versions for details. |
@ -0,0 +1,7 @@
@@ -0,0 +1,7 @@
|
||||
Git v2.37.6 Release Notes |
||||
========================= |
||||
|
||||
This release merges up the fixes that appear in v2.30.8, v2.31.7, |
||||
v2.32.6, v2.33.7, v2.34.7, v2.35.7 and v2.36.5 to address the |
||||
security issues CVE-2023-22490 and CVE-2023-23946; see the release |
||||
notes for these versions for details. |
@ -0,0 +1,70 @@
@@ -0,0 +1,70 @@
|
||||
#!/bin/sh |
||||
|
||||
test_description='test local clone with ambiguous transport' |
||||
|
||||
. ./test-lib.sh |
||||
. "$TEST_DIRECTORY/lib-httpd.sh" |
||||
|
||||
if ! test_have_prereq SYMLINKS |
||||
then |
||||
skip_all='skipping test, symlink support unavailable' |
||||
test_done |
||||
fi |
||||
|
||||
start_httpd |
||||
|
||||
REPO="$HTTPD_DOCUMENT_ROOT_PATH/sub.git" |
||||
URI="$HTTPD_URL/dumb/sub.git" |
||||
|
||||
test_expect_success 'setup' ' |
||||
mkdir -p sensitive && |
||||
echo "secret" >sensitive/secret && |
||||
|
||||
git init --bare "$REPO" && |
||||
test_commit_bulk -C "$REPO" --ref=main 1 && |
||||
|
||||
git -C "$REPO" update-ref HEAD main && |
||||
git -C "$REPO" update-server-info && |
||||
|
||||
git init malicious && |
||||
( |
||||
cd malicious && |
||||
|
||||
git submodule add "$URI" && |
||||
|
||||
mkdir -p repo/refs && |
||||
touch repo/refs/.gitkeep && |
||||
printf "ref: refs/heads/a" >repo/HEAD && |
||||
ln -s "$(cd .. && pwd)/sensitive" repo/objects && |
||||
|
||||
mkdir -p "$HTTPD_URL/dumb" && |
||||
ln -s "../../../.git/modules/sub/../../../repo/" "$URI" && |
||||
|
||||
git add . && |
||||
git commit -m "initial commit" |
||||
) && |
||||
|
||||
# Delete all of the references in our malicious submodule to |
||||
# avoid the client attempting to checkout any objects (which |
||||
# will be missing, and thus will cause the clone to fail before |
||||
# we can trigger the exploit). |
||||
git -C "$REPO" for-each-ref --format="delete %(refname)" >in && |
||||
git -C "$REPO" update-ref --stdin <in && |
||||
git -C "$REPO" update-server-info |
||||
' |
||||
|
||||
test_expect_success 'ambiguous transport does not lead to arbitrary file-inclusion' ' |
||||
git clone malicious clone && |
||||
test_must_fail git -C clone submodule update --init 2>err && |
||||
|
||||
test_path_is_missing clone/.git/modules/sub/objects/secret && |
||||
# We would actually expect "transport .file. not allowed" here, |
||||
# but due to quirks of the URL detection in Git, we mis-parse |
||||
# the absolute path as a bogus URL and die before that step. |
||||
# |
||||
# This works for now, and if we ever fix the URL detection, it |
||||
# is OK to change this to detect the transport error. |
||||
grep "protocol .* is not supported" err |
||||
' |
||||
|
||||
test_done |
Loading…
Reference in new issue