研究人员在十几个广泛使用的URL解析器库中发现了漏洞

一项对16种不同的统一资源定位器(URL)解析库的研究发现了不一致和混乱,这些不一致和混乱可能被用来绕过验证,并为各种攻击向量打开大门
在网络安全公司Claroty和Synk联合进行的一项深入分析中,发现了8个安全漏洞,这些漏洞存在于用C、JavaScript、PHP、Python和Ruby语言编写的、多个web应用程序使用的第三方库中
“URL解析中的混乱可能会导致软件(例如web应用程序)中出现意外行为,并可能被威胁行为人利用,造成拒绝服务条件、信息泄漏,或可能进行远程代码执行攻击,”研究人员在与《黑客新闻》共享的一份报告中说
URL是一种基本的机制,通过它,资源—;位于本地或网络上—;解析库解释URL请求的方式不同,可能会给用户带来重大风险
一个典型的例子是上个月在无处不在的Log4j日志框架中披露的关键Log4Shell缺陷,它源于一个事实,即恶意攻击者控制字符串,当评估为易受攻击的应用程序记录时,结果是JNDI查找连接到对手操作的服务器并执行任意Java代码
虽然Apache软件基金会(ASF)很快投入了一个修复漏洞来解决弱点,但很快就发现,通过“${JNDI格式”的一个特别精心制作的输入可以绕过缓解。ldap://127.0.0[.]1#.主持人。com:1389/a}”,再次允许远程JNDI查找以实现代码执行
“这种旁路源于两个不同的(!)在JNDI查找过程中使用了URL解析器,一个用于验证URL,另一个用于获取URL,根据每个解析器如何处理URL的片段部分,权限也会发生变化,”研究人员说

具体来说,如果输入被视为常规HTTP URL,则权限组件—;域名和端口号的组合—;当遇到片段标识符时结束,而当作为LDAP URL处理时,解析器将分配整个“127.0.0[。]1#.主持人。com:1389“作为权威,因为LDP URL规范没有说明该片段
事实上,使用多个解析器是发现这八个漏洞的两个主要原因之一,另一个原因是库遵循不同URL规范时出现的不一致问题,这实际上引入了一个可利用的漏洞
这种不一致的情况包括URL中包含反斜杠(“\”)的混乱,斜杠数量不规则(例如。,https:///www.example[.]com)或URL编码的数据(“%”),指向缺少URL方案的URL,如果成功利用这些URL方案,可能会导致远程代码执行,或导致拒绝服务(DoS)和开放重定向钓鱼攻击
发现的八个漏洞列表如下,所有这些漏洞都已由各自的维护人员解决—
- Belledonne的SIP堆栈(C,CVE-2021-33056)
- 视频。js(JavaScript,CVE-2021-23414)
- 席夫(XP,CVE-2021-7352) 烧瓶安全(Python,CVE-2021-23385)
- Flask安全性(Python,CVE-2021-32618)
- 烧瓶未锁(Python,CVE-2021-23393)
- Flask用户(Python,CVE-2021-23401)
- 许可证(Ruby,CVE-2021-23435)
- “许多现实生活中的攻击场景可能来自不同的解析原语,”研究人员说。为了保护应用程序免受URL解析漏洞的影响,“有必要充分了解整个过程中涉及哪些解析器[以及]解析器之间的差异,无论是它们的宽容程度、它们如何解释不同格式的URL,以及它们支持什么类型的URL。”