Closed
【安全】【权限最小化排查】gc_token明文写入.git/config且用后不恢复 #39
陈明旭Add on  22 days agoClosed at  8 days ago
陈明旭
陈明旭Collaborators
22 days ago Create

问题概述

Action 为访问私有仓将 gc_token 明文拼进 remote URL 持久化写入工作区 .git/config,文件未显式设权(默认 644,self-hosted 共享机其他本地用户可读),且执行完成后不恢复原 URL,token 长期驻留并可能随 git 报错/verbose 日志二次泄露。

问题清单

序号 问题入口/文件 问题代码位置 证据说明
1 PR 门禁取增量文件(git fetch 鉴权) index.js:167-174 token 明文注入 remote URL 后 git remote set-url 落盘,无恢复逻辑

修复建议

改用 git -c http.extraHeader=... 或 GIT_ASKPASS 环境变量注入,不落盘;至少在 finally 中恢复原 remote URL。

likedislike
mafeifei
mafeifeiCollaborators
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 均由此改动覆盖,一并关闭。

likedislike
mafeifeimafeifeiCollaborators
8 days ago Close issue