clone: prevent hooks from running during a clone
commit8db1e8743c0f1ed241f6a1b8bf55b6fef07d6751
authorJohannes Schindelin <johannes.schindelin@gmx.de>
Thu, 28 Mar 2024 18:21:06 +0000 (28 19:21 +0100)
committerJohannes Schindelin <johannes.schindelin@gmx.de>
Fri, 19 Apr 2024 10:38:23 +0000 (19 12:38 +0200)
tree271bcbf04a20143fe57abd04110239e8ef08df7b
parent584de0b4c235209fa60ca4a733678472263bdce0
clone: prevent hooks from running during a clone

Critical security issues typically combine relatively common
vulnerabilities such as case confusion in file paths with other
weaknesses in order to raise the severity of the attack.

One such weakness that has haunted the Git project in many a
submodule-related CVE is that any hooks that are found are executed
during a clone operation. Examples are the `post-checkout` and
`fsmonitor` hooks.

However, Git's design calls for hooks to be disabled by default, as only
disabled example hooks are copied over from the templates in
`<prefix>/share/git-core/templates/`.

As a defense-in-depth measure, let's prevent those hooks from running.

Obviously, administrators can choose to drop enabled hooks into the
template directory, though, _and_ it is also possible to override
`core.hooksPath`, in which case the new check needs to be disabled.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
builtin/clone.c
hook.c
t/t5601-clone.sh