HackerNews 编译,转载请注明出处:
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)进行签名验证,以及由于同时使用regex和YAML解析器而产生的解析冲突,从而为攻击者打开了引入“\r”字符的大门,该字符可以绕过基于regex的签名验证,并被YAML解析器解释为换行符。
换言之,这些解析不一致性可以被串联起来,创建一个使用“\r”的Nuclei模板,该模板包含第二个“# digest:”行,以绕过签名验证过程,但被YAML解释器解析和执行。
Goldenberg解释道:“Go的基于regex的签名验证将‘\r’视为同一行的一部分,而YAML解析器则将其解释为换行符。这种不匹配允许攻击者注入绕过验证但由YAML解析器执行的内容。”
“验证逻辑仅验证第一个‘# digest:’行。在验证过程中会忽略额外的‘# digest:’行,但它们仍保留在要由YAML解析和执行的内容中。”
此外,验证过程包括一个从模板内容中排除签名行的步骤,但仅验证第一行,从而使后续行未经验证但可执行。
在负责任披露后,ProjectDiscovery于2024年9月4日通过3.3.2版本解决了该问题。目前,Nuclei的版本为3.3.7。
Goldenberg说:“攻击者可以制作包含操纵过的‘# digest’行或精心放置的‘\r’换行符的恶意模板,以绕过Nuclei的签名验证。”
“当组织在没有适当验证或隔离的情况下运行不受信任的或社区贡献的模板时,就会出现针对此漏洞的攻击向量。攻击者可以利用此功能注入恶意模板,导致任意命令执行、数据泄露或系统妥协。”
消息来源:The Hacker News, 编译:zhongx;
本文由 HackerNews.cc 翻译整理,封面来源于网络;
转载请注明“转自 HackerNews.cc”并附上原文