研究人员发现可绕过签名和执行代码的 Nuclei 漏洞 网络相关


ProjectDiscovery 的广泛使用的开源漏洞扫描程序Nuclei被披露存在一个高严重性安全漏洞,如果成功利用,攻击者可以绕过签名检查并可能执行恶意代码。

该漏洞的编号为CVE-2024-43405,CVSS 评分为 7.4(满分 10.0)。该漏洞影响 Nuclei 3.0.0 之后的所有版本。

根据漏洞描述: “该漏洞源于签名验证过程和 YAML 解析器处理换行符的方式之间的差异,以及处理多个签名的方式。”

“这使得攻击者可以将恶意内容注入模板,同时保留模板良性部分的有效签名。”

Nuclei 是一款漏洞扫描器,旨在探测现代应用程序、基础设施、云平台和网络以识别安全漏洞。扫描引擎利用模板(即 YAML 文件)发送特定请求以确定是否存在漏洞。

此外,它可以使用代码协议在主机操作系统上执行外部代码,从而为研究人员提供更灵活的安全测试工作流程。

发现 CVE-2024-43405 的云安全公司 Wiz 表示,该漏洞根源于模板签名验证过程,该过程用于确保官方模板库中提供的模板的完整性。

成功利用此漏洞可以绕过这一关键的验证步骤,允许攻击者制作可执行任意代码并访问主机敏感数据的恶意模板。

Wiz 研究员 Guy Goldenberg在周五的分析中表示: “由于此签名验证是目前验证 Nuclei 模板的唯一方法,因此它代表着一个潜在的单点故障。”

从本质上讲,该问题源于使用正则表达式 (又名 regex) 进行签名验证,以及由于同时使用正则表达式和 YAML 解析器而产生的解析冲突,从而为攻击者引入“\r”字符打开了大门,这样它就可以绕过基于正则表达式的签名验证,并被 YAML 解析器解释为换行符。

换句话说,这些解析不一致可以链接起来以创建一个 Nuclei 模板,该模板使用“\r”来包含第二个“#digest:”行,以逃避签名验证过程,但由 YAML 解释器解析和执行。

Goldenberg 解释说:“Go 基于正则表达式的签名验证将 \r 视为同一行的一部分,而 YAML 解析器将其解释为换行符。这种不匹配允许攻击者注入绕过验证但由 YAML 解析器执行的内容。”

“验证逻辑仅验证第一个 #digest: 行。其他 #digest: 行在验证期间将被忽略,但仍保留在要由 YAML 解析和执行的内容中。”

此外,验证过程包括从模板内容中排除签名行的步骤,但只验证第一行,而后续行未经验证但可执行。

经过负责任的披露,ProjectDiscovery 于 2024 年 9 月 4 日解决了这个问题,版本为 3.3.2。Nuclei 的当前版本是 3.3.7。

Goldenberg 说:“攻击者可以制作包含操纵的#摘要行或精心放置的\r换行符的恶意模板,以绕过 Nuclei 的签名验证。”

“当组织运行不受信任或社区贡献的模板而没有进行适当的验证或隔离时,就会出现此漏洞的攻击媒介。攻击者可以利用此功能注入恶意模板,导致任意命令执行、数据泄露或系统入侵。”

标签: 漏洞 Nuclei

之参博客 发布于  2025-1-6 14:06