Closed
【安全】【权限最小化排查】gc_token明文写入.git/config且用后不恢复 #39
陈明旭Add on 22 days agoClosed at 8 days ago
mafeifei
8 days ago Comments:
8 days ago Comments:
整改已完成(!13 已合入 master)
- 删除
git remote set-url/git remote get-url整段逻辑,token 不再写入.git/config,也不再出现在命令行参数中。 - 改用
GIT_ASKPASS临时凭证脚本(index.js:176-225):脚本权限 0o700,仅在git fetch子进程 env 中注入GIT_ASKPASS/PRE_COMMIT_GC_TOKEN,并设GIT_TERMINAL_PROMPT=0。 - 脚本在任务结束的 finally 中立即删除(
index.js:197-203),异常路径也会清理。 - 当前 master 全仓已无
remote set-url、remote get-url调用残留,原先「remoteUrl 未转义拼入 bash 命令」的代码整体不存在。
同类 issue #13 / #22 / #35 / #36 / #39 / #42 / #44 / #47 均由此改动覆盖,一并关闭。


8 days ago Close issue
问题概述
Action 为访问私有仓将 gc_token 明文拼进 remote URL 持久化写入工作区 .git/config,文件未显式设权(默认 644,self-hosted 共享机其他本地用户可读),且执行完成后不恢复原 URL,token 长期驻留并可能随 git 报错/verbose 日志二次泄露。
问题清单
index.js:167-174git remote set-url落盘,无恢复逻辑修复建议
改用
git -c http.extraHeader=...或 GIT_ASKPASS 环境变量注入,不落盘;至少在 finally 中恢复原 remote URL。