Jer*_*auw 6 git security githooks
出于安全原因,我希望默认情况下禁用 git hooks。
更具体地说,当我在我的 (Kubuntu) 操作系统帐户上的任何 git 存储库中运行 git 命令时,不应执行任何 git 钩子,除非以某种方式指定。
在 Vagrant 或 Docker 中运行我的所有代码时,我想避免的攻击是虚拟机中的恶意代码写入 git hooks 目录,从而将自身带到主机上的攻击。默认情况下禁用 git hooks 是一种防线。
我正在寻找一种不需要每个存储库工作和状态的解决方案。在我的搜索中,我遇到了这个脚本,它打破了这两个要求。
理想情况下,有一个简单的解决方案,例如将其放入.bash_aliases:
alias git='/usr/bin/git --no-hooks'
Run Code Online (Sandbox Code Playgroud)
小智 8
设置core.hooksPath中$HOME/.gitconfig似乎为我工作
[core]
hooksPath = $SOME_DIR_WITHOUT_HOOKS
Run Code Online (Sandbox Code Playgroud)
要为特定的 repo 启用钩子,你可以在 $REPO/.git/config
[core]
hooksPath = $GIT_DIR/hooks
Run Code Online (Sandbox Code Playgroud)
小智 4
钩子并不是具有目录写入权限的攻击者.git攻击目录用户的唯一方式.git,例如可以将选项diff.external设置为执行任何内容,以及谁跟踪所有新的 Git 功能?
如果您的开发环境在其中查找配置文件,或者如果它有一些在本地执行的脚本,那么即使让攻击者对存储库具有写访问权限也可能是不好的。
保护.git仍然是一个好主意,我提出以下解决方案:
.git只读。.git目录放置在与虚拟机共享的工作目录之外。该--git-dir标志或GIT_DIR环境变量控制 Git 查找.git目录的位置。缺点是,.git如果需要的话,该目录不会与虚拟机共享,并且在使用每个不同的存储库之前需要设置命令行标志或环境变量。