首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >GitLab项目导入远程代码执行漏洞分析(CVE-2022-2185)

GitLab项目导入远程代码执行漏洞分析(CVE-2022-2185)

原创
作者头像
qife122
发布2025-08-04 14:19:10
发布2025-08-04 14:19:10
1030
举报

Gitlab Project Import RCE Analysis (CVE-2022-2185)

ENVIRONMENT SETUP & DEBUGGING

本部分详细介绍了如何搭建GitLab调试环境:

  1. 使用Ubuntu 18.04虚拟机
  2. 安装GitLab开发工具包(GDK)
  3. 检出漏洞版本(v15.1.0-ee)
  4. 配置关键文件(gitlab.yml, puma.rb)
  5. 使用RubyMine IDE配置调试环境
  6. 启动相关服务(webpack, sidekiq等)

CVE-2022-2185 ANALYSIS

漏洞存在于GitLab的项目导入功能中,CVSS评分高达9.9分。分析过程分为两个主要案例:

相关背景

  • 修复版本:15.1.1, 14.10.5
  • 关键提交:5d58c705
  • 漏洞点:DecompressedArchiveSizeValidator类中的命令拼接

GitLab中的工作线程机制

GitLab使用Sidekiq作为工作队列处理繁重任务,Web控制器将作业推送到工作队列。

案例1:文件导入路径分析

  1. 通过Import::GitlabProjectsController创建导入任务
  2. 经过多层服务调用(Projects::CreateService)
  3. 最终到达DecompressedArchiveSizeValidator执行命令
  4. @archive_path参数不可控

案例2:批量导入功能分析

  1. 通过隐藏的批量导入功能触发
  2. 使用BulkImportsController处理请求
  3. 通过ProjectPipeline管道处理数据
  4. 利用GraphQL提取器和转换器控制数据
  5. 最终通过模板导入路径触发漏洞

案例1+2组合利用

  1. 利用批量导入功能控制项目参数
  2. 通过模板导入路径绕过限制
  3. 最终实现命令注入
  4. 注入命令需要等待255秒才会执行

概念说明

批量导入中的管道机制

  • 管道包含extract/transform/load/after_run方法
  • 执行顺序:提取数据→转换数据→加载数据→后续处理
  • 通过stage.rb文件定义执行顺序

漏洞验证视频

文章最后提供了漏洞验证视频演示。


原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Gitlab Project Import RCE Analysis (CVE-2022-2185)
    • ENVIRONMENT SETUP & DEBUGGING
    • CVE-2022-2185 ANALYSIS
      • 相关背景
      • GitLab中的工作线程机制
      • 案例1:文件导入路径分析
      • 案例2:批量导入功能分析
      • 案例1+2组合利用
    • 概念说明
      • 批量导入中的管道机制
    • 漏洞验证视频
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档