因此Git可以跳过抓取文件的步骤,并直接在磁盘上的工作目录中使用子模块。但是并非所有文件都可以被复制,当客户端复制代码库时,无法从服务器获取重要的配置,这包括.git 或配置文件的内容。另外,在Git工作流中的特定执行的钩子(如Git)将在将文件写入工作目录时执行Post-checkout钩子。不应该从远程服务器复制配置文件的一个重要原因就是,远程服务器可能提供由Git 执行的恶意代码。
CE 2018-11235的漏洞正是犯了这个错误,所以Git有子模块来设置漏洞。子模块存储库提交给父存储库,并且从未实际复制过。子模块存储库中可能存在已配置的挂钩,当用户再次出现时,恶意的父库会被精心设计。将写入工作目录,然后Git读取子模块,将这些子模块写入工作目录,最后一步执行子模块存储库中的任何Post-checkout挂钩。
网友评论 ()条 查看