Closed
【安全】【计算IT应用安全编码要求】输入校验缺失-extra_args白名单可绕过与路径输入无白名单 #45
陈明旭Add on  21 days agoClosed at  8 days ago
陈明旭
陈明旭Collaborators
21 days ago Create

问题概述

extra_args 参数白名单可被未知 --xxx 绕过且部分值整体跳过校验;报告路径输入接受任意绝对路径与相对路径,无工作区白名单。

问题清单

序号 问题位置 证据说明 修复建议
1 index.js:26-42/254 仅拦截非 -- 开头 token,任意未知 --xxx(如 --config/--hook-stage)放行,--from-ref/--to-ref/--files 的值整体跳过校验后 args.split(' ') 直接传给 pre-commit 白名单改为显式枚举允许的参数并校验其值,不再整体放行未知 --xxx
2 index.js:461-496 sarif-file/report-dir 输入接受任意绝对路径与 ../ 相对路径,可收集 runner 上任意目录的 .sarif 输入路径解析后校验位于 GITHUB_WORKSPACE 内
likedislike
mafeifei
mafeifeiCollaborators
8 days ago Comments:

非问题(复用 #21 / #28 已确认判定)

第 1 项 extra_args 白名单可绕过(与 #21 同根因):

  • extra_args 经 execFile 数组传参,无 shell 解析,不存在命令注入面;
  • pre-commit 自身 argparse 会拒绝未知 --xxx,任意长选项直接报错退出;
  • 能改变扫描行为的合法选项(--config / --hook-stage / --files 等)均要求 workflow 配置方权限,而该方本就能直接编辑 .pre-commit-config.yaml,不存在权限提升。
  • 保留非 -- token 的 exit(1) 拦截作为防御纵深。

第 2 项 sarif-file / report-dir 路径无工作区白名单(与 #28 同根因):

  • 输入由 workflow 配置方(具备仓库写权限者)控制,非 PR 攻击者可控;能改 workflow 的人本就能读 runner 上任意文件;
  • 属纵深防御建议,非实际可利用漏洞。

插件侧无可整改项,关闭。

likedislike
mafeifeimafeifeiCollaborators
8 days ago Close issue