Skip to content

Commit

Permalink
t5510: verify that D/F confusion cannot lead to an RCE
Browse files Browse the repository at this point in the history
The most critical vulnerabilities in Git lead to a Remote Code Execution
("RCE"), i.e. the ability for an attacker to have malicious code being
run as part of a Git operation that is not expected to run said code,
such has hooks delivered as part of a `git clone`.

A couple of parent commits ago, a bug was fixed that let Git be confused
by the presence of a path `a-` to mistakenly assume that a directory
`a/` can safely be created without removing an existing `a` that is a
symbolic link.

This bug did not represent an exploitable vulnerability on its
own; Let's make sure it stays that way.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
  • Loading branch information
dscho committed Apr 17, 2024
1 parent e8d0608 commit e4930e8
Showing 1 changed file with 24 additions and 0 deletions.
24 changes: 24 additions & 0 deletions t/t5510-fetch.sh
Original file line number Diff line number Diff line change
@@ -1240,6 +1240,30 @@ EOF
test_cmp fatal-expect fatal-actual
'

test_expect_success SYMLINKS 'clone does not get confused by a D/F conflict' '
git init df-conflict &&
(
cd df-conflict &&
ln -s .git a &&
git add a &&
test_tick &&
git commit -m symlink &&
test_commit a- &&
rm a &&
mkdir -p a/hooks &&
write_script a/hooks/post-checkout <<-EOF &&
echo WHOOPSIE >&2
echo whoopsie >"$TRASH_DIRECTORY"/whoops
EOF
git add a/hooks/post-checkout &&
test_tick &&
git commit -m post-checkout
) &&
git clone df-conflict clone 2>err &&
! grep WHOOPS err &&
test_path_is_missing whoops
'

. "$TEST_DIRECTORY"/lib-httpd.sh
start_httpd

0 comments on commit e4930e8

Please sign in to comment.