网安资讯详情 - SecLens 情报雷达

网安资讯,一网打尽。汇集权威漏洞通告与行业要闻,结合分组浏览、智能过滤、RSS订阅 和 Webhook 推送,多通道拓展您的安全情报视野。

Gogs 组织名称路径遍历导致 Git hooks 远程代码执行漏洞

来源: chaitin_vuldb · 发布时间 2026-06-24 08:00 (UTC+08:00) · 抓取时间 2026-07-21 20:45 (UTC+08:00)

原文链接

摘要

Gogs 是一个开源的自托管 Git 服务,广泛用于团队内部代码托管和协作开发,通常部署在 Linux 服务器上,通过 Web 界面和 API 提供仓库管理、问题跟踪、代码审查等功能。该漏洞存在于 Gogs 0.14.3 之前版本的组织名称处理逻辑中。Gogs 在通过 API 创建组织时,未对组织名称(username)进行充分的路径遍历序列(如 ../)过滤,导致攻击者可以使用包含路径遍历字符的组织名称创建组织。随后,在该组织下创建仓库时,仓库的 Git 目录会被写入文件系统上由路径遍历指定的任意位置。攻击者可以通过巧妙嵌套 Git 仓库结构,覆盖其他仓库的 Git Hook 配置(如 hooks/update 脚本),从而实现远程代码执行(RCE)。成功利用此漏洞的攻击者可在 Gogs 服务器上以 Gogs 进程权限执行任意命令,可能导致服务器被完全控制、数据泄露或进一步横向移动。该漏洞无需认证即可通过 API 触发,影响所有使用受影响版本(<0.14.3)的 Gogs 实例,建议立即升级至修复版本。

正文

Impact: 成功利用该漏洞可导致远程代码执行,攻击者无需认证即可通过 API 创建包含路径遍历的组织和仓库,进而控制 Gogs 服务器。由于 Gogs 通常以非特权用户运行,但仍可访问托管的所有仓库数据、修改配置、执行系统命令,并可能利用该服务器作为跳板攻击内网其他系统。该漏洞影响 Gogs 核心功能,利用复杂度低,危害极高,建议立即修复。 Mitigation: 一、官方修复方案 升级至 Gogs 0.14.3 或更高版本。该版本通过两个层面修复漏洞:1)在 API 层面对组织名称增加 AlphaDashDot 验证和最大长度限制,拒绝包含路径遍历字符的输入;2)在路径处理函数 `repox.UserPath` 和 `repox.RepositoryPath` 中增加 `pathx.Clean` 清理,确保路径被约束在仓库根目录内。 - 修复版本:v0.14.3 - 更新方式(Docker): ``` docker pull gogs/gogs:0.14.3 docker stop <容器名> docker rm <容器名> docker run -d --name=gogs -p 3000:3000 -p 22:22 -v /path/to/data:/data gogs/gogs:0.14.3 ``` - 更新方式(二进制):从 https://github.com/gogs/gogs/releases/tag/v0.14.3 下载对应平台的二进制包,替换原有文件后重启服务。 - 补丁链接:https://github.com/gogs/gogs/commit/f6acd467305943aae8403cbac81f0118dd1235d7 - 升级优先级:严重(Critical),建议立即安排升级。 二、临时缓解措施(无法立即升级时) - 禁用组织创建 API:通过反向代理(如 Nginx)限制 POST /api/v1/orgs 和 POST /api/v1/admin/users/:user/orgs 接口的访问,仅允许受信任的 IP 或内部网络调用。 - 关闭用户注册:如果不需要公开注册,在 `app.ini` 中设置 `[service] DISABLE_REGISTRATION = true`,防止新用户注册,降低被利用风险。 - 监控异常组织名称:检查已有组织名称是否包含路径遍历字符(如 ../),若发现立即删除该组织并排查文件系统是否有异常写入。 - 加强日志审计:关注 Gogs 日志中关于组织创建和仓库创建的操作记录,识别可疑的路径遍历模式。 三、验证方法 - 确认 Gogs 版本:登录 Gogs 管理面板,查看页面底部版本号,或通过命令行执行 `/path/to/gogs --version`。 - 验证补丁有效性:使用任意账户发送 POST 请求创建组织,尝试包含 `../` 的 username(如 `../../../tmp/test`),若返回 422 状态码(验证失败)则说明已修复;若返回 201 Created 则仍有风险。 - 升级后确认服务正常:访问 Gogs Web 界面,检查仓库列表、问题跟踪、Webhook 等功能是否正常运行。 四、操作注意事项 - 升级前请备份 Gogs 数据目录(默认为 /data/gogs,或自定义路径),包括配置文件 `app.ini`、仓库数据、数据库(如使用 SQLite 时需备份数据库文件)。 - 升级后可能需重启服务,建议在业务低峰期进行。 - 若使用 Docker 升级,注意数据卷挂载路径需与之前一致,避免数据丢失。 - 升级后检查自定义配置(如反向代理、SSH 设置)是否仍然有效。 - 该修复不涉及配置兼容性问题,但建议升级后测试核心功能。

标签

扩展字段

{
  "cnnvd_id": "CNNVD-2026-14696434",
  "cnvd_id": null,
  "cve_id": "CVE-2026-52813",
  "cvss3": {
    "A": "H",
    "AC": "L",
    "AV": "N",
    "C": "H",
    "I": "H",
    "MA": "H",
    "MAC": "L",
    "MAV": "N",
    "MC": "H",
    "MI": "H",
    "MPR": "N",
    "MS": "C",
    "MUI": "N",
    "PR": "N",
    "S": "C",
    "UI": "N"
  },
  "raw_updated_at": "2026-06-29T10:56:38.411916+08:00",
  "references": "https://github.com/gogs/gogs/commit/f6acd467305943aae8403cbac81f0118dd1235d7\nhttps://github.com/gogs/gogs/pull/8334\nhttps://github.com/gogs/gogs/releases/tag/v0.14.3\nhttps://github.com/gogs/gogs/security/advisories/GHSA-c39w-43gm-34h5",
  "severity": "critical",
  "vuln_id": "3cf9c568-e34d-413a-828e-a35bb049bdc3"
}