CVE-2021-21300 是 Git(2.14.2 至 2.30.1 版本)中的一个严重漏洞,允许攻击者通过利用符号链接和不区分大小写的文件系统在受害者机器上执行任意代码。
A/post-checkout 解析为 .git/hooks/post-checkout。Git 允许用户自定义钩子存储在 .git/hooks/ 中。在不区分大小写的文件系统上:
A/post-checkout 这样精心构造的文件夹可能会被解释为 .git/hooks/post-checkout。A/ 替换为 .git/hooks/,从而绕过限制。A 和一个包含恶意命令的文件 A/post-checkout。A 替换为指向 .git/hooks/ 的符号链接。A/post-checkout 时,它实际上运行的是 .git/hooks/ 中的恶意文件。.git/hooks/ 的符号链接。.gitattributes 以触发 LFS 处理 A/post-checkout。A/post-checkout(例如,打印 "PWNED")。A/a、A/b 以使其看起来合法。A/ 替换为指向 .git/hooks/ 的符号链接。git clone -c core.symlinks=true
git config --system core.symlinks true
##💡 其他潜在防御措施
使用 Git 别名自动化安全克隆
创建目录。
启用区分大小写(Windows):
fsutil file setcasesensitiveinfo <DESTINATION FOLDER> enable
克隆到该目录中。
创建 Git 别名来自动化这些步骤,实现更安全的克隆。