了解有关本尼·查尔尼(Benny Czarny)所著《颠覆性的网络安全》一书的更多信息

了解更多
我们利用人工智能进行网站翻译,虽然我们力求准确,但不一定总是 100%精确。感谢您的理解。

揭示并修复 Dompdf 库漏洞OPSWAT MetaDefender Core

作者: OPSWAT
揭示并修复 Dompdf 库漏洞OPSWAT MetaDefender Core
学生参加了OPSWAT 研究金计划

技术的迅猛发展催生了对技术娴熟的开发人员的大量需求。开源软件(OSS)已成为这支不断壮大的开发队伍不可或缺的工具。 目前,各种编程语言中已有数十万个成熟的开源软件包。超过90%的开发人员在其专有应用程序中利用这些开源组件,这凸显了开源软件的效率和价值。进一步凸显其重要性的是,全球开源软件市场预计到2030年将达到807亿美元,年均增长率预计为16.7%。

软件 是全球业务运营不可或缺的组成部分,因此经常成为威胁行为者的攻击目标。2023 年,应用安全支出约为 57.6 亿美元,预计 2024 年将达到 66.7 亿美元。在应用安全领域,软件供应链安全在过去三年中日益突出,成为增长最快的攻击类别,重大漏洞和漏洞利用事件经常成为头条新闻。

企业通常认为,大多数风险都来自面向公众的网络应用程序。然而,近年来这种观点发生了转变。由于每个应用程序中都有数十个小型组件,风险现在可能出现在代码库中的任何地方。对于企业来说,熟悉软件开发生命周期中现有和新出现的安全漏洞比以往任何时候都更为重要。在这篇博文中,我们的研究生研究员将详细介绍 CVE-2023-23924,这是一个在广泛使用的 dompdf 库中发现的关键安全漏洞,该库是一个功能强大的 PHP 工具,可通过 HTML 和 CSS 动态生成 PDF 文档。

通过全面分析,我们将探索该漏洞错综复杂的技术细节、发挥关键作用的相关技术以及利用过程的模拟。我们还将研究 OPSWAT MetaDefender Core,特别是其 软件 Bill of Materials (SBOM)引擎可用于检测和缓解这一漏洞,使软件开发人员和安全团队能够在潜在威胁面前领先一步。

CVE-2023-23924 的背景

在 dompdf 2.0.1 版中发现了一个安全漏洞,并于 2023 年初公布于众:

  • 在解析 SVG 时,可以通过传递 <image> 标记为大写字母。通过 PHAR URL 封装器,该漏洞可导致任意文件删除,甚至远程代码执行,具体取决于可用的类。
  • NVD 分析师将 CVE-2023-23924 的 CVSS 分值定为9.8 CRITICAL。
揭示并修复 Dompdf 库漏洞OPSWAT MetaDefender Core

了解 Dompdf 漏洞

要完全理解 dompdf 中的 CVE-2023-23924 漏洞,就必须熟悉两种密切相关的技术:可缩放矢量图形 (SVG) 和 PHAR 文件。

SVG(可缩放矢量图形)

SVG(可缩放矢量图形)是一种通用的图像格式,由于能在网络上呈现高质量的图形,同时保持轻量级和可缩放性,因此广受欢迎。与光栅图像不同,SVG 基于 XML 标记,可以精确控制线条、形状和文本等元素。SVGs 的主要优势之一是能够无缝缩放而不损失图像质量,因此非常适合响应式网页设计和高分辨率显示器。

揭示并修复 Dompdf 库漏洞OPSWAT MetaDefender Core

PHAR 文件

PHAR(PHP 归档文件)类似于 JAR 文件的概念,但适用于 PHP。它可以将所有 PHP 代码和资源文件捆绑到一个存档文件中,从而方便部署。

PHAR 文件由 4 个部分组成:

  • 存根:包含引导存档的代码。
  • Manifest:包含存档的元数据。元数据以序列化格式存储,可用于在恶意 PHAR 文件中触发 PHP 反序列化攻击。
  • 文件内容:包含存档内容,包括 PHP 代码和资源文件。
  • 签名(可选):包含用于验证文件完整性的数据。

由于元数据是以序列化格式存储的,当 PHAR 封装器和 PHAR 文件的元数据组合用作 PHP 函数的输入时,有可能触发反序列化攻击,例如 file_get_contents()、fopen()、file()、file_exists()、md5_file()、filemtime()、 或 文件大小().这一安全漏洞可使攻击者通过 PHAR 文件执行远程代码。

揭示并修复 Dompdf 库漏洞OPSWAT MetaDefender Core

Dompdf 如何生成 PDF 文件

揭示并修复 Dompdf 库漏洞OPSWAT MetaDefender Core

通过分析,OPSWAT 研究生发现 dompdf 的转换过程分为三个阶段。要将 HTML 文件转换为 PDF 格式,dompdf 库首先要将输入文件解析为 DOM 树,并存储每个对象的定位和布局信息。然后,解析 CSS 样式并将其应用于每个对象。最后,重新组织对象以适应页面,并渲染成最终的 PDF 文件。

Dompdf 中的安全漏洞

为了提高安全性,dompdf 实施了验证,以确保 URI 输入的安全性,然后再进行下一步。这一验证过程在处理 SVG 文件时非常明显。 xlink:href 属性。

揭示并修复 Dompdf 库漏洞OPSWAT MetaDefender Core

如果 SVG 输入文件包含 <image> 标签下的 <svg> 标签,实施一个条件,只允许某些协议,如 http://, https:// 和 file://为 xlink:href field.

揭示并修复 Dompdf 库漏洞OPSWAT MetaDefender Core

"(《世界人权宣言》) resolve_url() 函数将验证 URI,然后再用 drawImage() 功能。如果 URI 中的方案不在允许的协议之列,则 resolve_url() 函数将向应用程序返回一个异常。

揭示并修复 Dompdf 库漏洞OPSWAT MetaDefender Core

如果 URI 通过了验证,它将被传递给 drawImage() 函数,该函数使用 file_get_contents() 函数来处理 xlink:href 属性。安全漏洞就出现在这一点上:如果攻击者绕过验证并将 PHAR 封装器传递到 URI 中,就可能触发 PHAR 反序列化攻击。

经过分析,我们发现只有在标签名称与图像完全一致时才会执行验证。

揭示并修复 Dompdf 库漏洞OPSWAT MetaDefender Core

因此,只要在标签名称(如 Image)中将一个或多个字符大写,就可以轻松绕过验证。因此,特制的 SVG 文件如果使用 Image 而不是 image,就可以规避这一验证。

在随后的步骤中 drawImage() 函数,将 SVG 文件的 URI 传递给 file_get_contents() 功能。因此,结合对 PHAR 文件的验证绕过和反序列化攻击,攻击者可以执行远程代码执行。如果 SVG 文件是由存在漏洞的 dompdf 版本处理的,那么该漏洞就会为恶意攻击者通过 SVG 文件控制应用程序服务器打开大门。

Dompdf 开发模拟

易受攻击的应用程序

为了模拟现实世界中的这种利用情况,OPSWAT 研究生研究员开发了一个网络应用程序,使用 dompdf 库 2.0.1 版将 HTML 转换为 PDF。该应用程序允许用户上传 HTML、XML 或 SVG 等文件类型,然后将其转换为 PDF 文件。

揭示并修复 Dompdf 库漏洞OPSWAT MetaDefender Core

攻击者可按照以下步骤,在使用易受攻击的 dompdf 版本(2.0.1 版)的应用程序中利用此漏洞:

揭示并修复 Dompdf 库漏洞OPSWAT MetaDefender Core
揭示并修复 Dompdf 库漏洞OPSWAT MetaDefender Core

开发流程

揭示并修复 Dompdf 库漏洞OPSWAT MetaDefender Core

首先,攻击者会生成一个恶意对象,在调用析构函数时创建一个反向外壳。

揭示并修复 Dompdf 库漏洞OPSWAT MetaDefender Core

其次,攻击者会创建一个包含恶意元数据对象的 PHAR 文件。当 PHAR 封装器在 file_get_content() 函数,对元数据进行反序列化,并处理指定对象。在反序列化过程中,它会触发析构函数并执行反向 shell。

揭示并修复 Dompdf 库漏洞OPSWAT MetaDefender Core

最终,攻击者会将包含 PHAR 封装器的 URI 链接嵌入到 xlink:href 属性,从而绕过验证、执行恶意代码并将该恶意文件上传到应用程序。

揭示并修复 Dompdf 库漏洞OPSWAT MetaDefender Core

在处理上传的恶意 SVG 文件时,应用程序会与攻击者建立反向连接,使他们能够入侵应用程序服务器。

揭示并修复 Dompdf 库漏洞OPSWAT MetaDefender Core
揭示并修复 Dompdf 库漏洞OPSWAT MetaDefender Core
揭示并修复 Dompdf 库漏洞OPSWAT MetaDefender Core

利用OPSWAT MetaDefender Core

为了检测和缓解 dompdf 中的 CVE-2023-23924 漏洞,我们的研究生研究员使用了OPSWAT MetaDefender Core ,这是一款多层网络安全产品,提供先进的恶意软件预防和检测技术,包括 SBOM。

OPSWAT SBOM 通过为源代码和容器提供全面的组件清单来确保软件供应链的安全。通过分析 dompdf 库及其依赖关系,OPSWAT SBOM 可以快速识别存在漏洞的 2.0.1 版本,并提醒用户注意潜在风险。

此外,OPSWAT SBOM 还能检测 SVG 和 PHAR 文件等相关技术,这些技术对于了解和缓解 CVE-2023-23924 漏洞至关重要。这种对应用程序软件组件的全面了解使安全团队能够做出明智的决策,并采取适当的措施来应对已识别的风险。

揭示并修复 Dompdf 库漏洞OPSWAT MetaDefender Core

除了检测存在漏洞的 dompdf 版本外,OPSWAT SBOM 还能提供有关受影响组件、其版本以及任何可用更新或补丁的宝贵信息。安全团队可以利用这些信息确定修复工作的优先次序,确保应用程序更新到安全的 dompdf 版本,从而有效解决 CVE-2023-23924 漏洞。

揭示并修复 Dompdf 库漏洞OPSWAT MetaDefender Core

通过利用MetaDefender Core 中的 SBOM 引擎,企业可以主动监控其软件供应链,识别开源组件中的潜在漏洞,并及时实施缓解策略,从而确保其应用程序的整体安全性和完整性。

结束语

在 dompdf 库中发现 CVE-2023-23924 强调了在应用程序安全的动态环境中保持警惕的重要性。通过利用本篇博文中概述的见解和策略,安全团队可以有效地检测、缓解和保护其应用程序免受此类漏洞的侵害,从而确保其软件生态系统的整体安全性和完整性。

通过OPSWAT 了解最新信息!

立即注册,获取最新的公司动态、故事、活动信息等。