根据提供的网页截图,这是一个关于GitLab漏洞修复的合并请求(Merge Request)页面。以下是关键信息的总结: 漏洞概述 漏洞编号/标题: Commit db3335 (对应 CVE-2024-9384,虽然截图标题没直接写CVE,但内容明确提到了修复该漏洞)。 问题描述: 这是一个关于GitLab代码仓库中 文件解析的漏洞。攻击者可以通过构造特殊的YAML文件,利用 标签的解析逻辑,导致GitLab在解析时出现无限递归或拒绝服务(DoS)。 具体表现: 当YAML文件中包含指向自身的 标签(例如 或 )时,解析器会陷入死循环或栈溢出。 影响范围 受影响组件: GitLab 的 YAML 解析器(具体涉及 和 等文件)。 受影响版本: 根据截图中的 上下文,这似乎是一个修复补丁,适用于包含该漏洞解析逻辑的 GitLab 版本(通常涉及较新的版本,具体版本需参考官方公告,但截图显示这是一个修复提交)。 修复方案 核心修复逻辑: 在解析 标签时,增加了对“循环引用”或“自引用”的检测机制。 代码变更: 在 中,修改了 方法,增加了对 参数的检查,防止解析器在处理 时陷入无限递归。 在 中,同样增加了对 的处理逻辑,确保在解析变量时不会触发无限循环。 在 中,增加了针对 标签的测试用例,包括自引用和循环引用的场景,确保修复有效。 POC代码/利用代码 截图中的测试用例(Spec)实际上包含了触发漏洞的POC代码片段: 修复代码片段 (关键逻辑) (注:具体的修复代码逻辑在截图中分散在多个文件中,核心思想是增加对引用路径的检查,避免解析器在处理 时进入死循环。) 漏洞总结 漏洞概述 漏洞类型: 拒绝服务 (DoS) / 无限递归 受影响组件: GitLab CI/CD 配置解析器 (YAML 解析) 问题描述: 在解析 文件时,如果文件包含指向自身的 标签(例如 ),会导致解析器陷入无限递归循环,从而耗尽系统资源或导致服务崩溃。 影响范围 受影响文件: , 触发条件: 在 GitLab CI 配置文件中使用了自引用的 标签。 修复方案 核心逻辑: 在解析 标签时,增加了对引用路径的检查,识别并阻断自引用或循环引用的情况,防止无限递归。 代码变更: 修改了 和 类的解析逻辑,增加了对 参数的验证。 在测试文件 中增加了针对自引用和循环引用的测试用例,确保修复有效。 POC代码/利用代码** 截图中的测试用例(Spec)包含了触发该漏洞的 YAML 配置片段: