人工智能驱动的网络攻击:如何检测、预防和抵御智能威胁

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

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

OPSWAT
分享此贴
信息技术大学学生 Tai Tran 和 Hai Dang Bui 在蓝色背景下拍摄专业肖像
学生参加了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。 
信息图表显示了 CVSS 3.x 版的度量标准,包括安全漏洞的严重性和向量字符串

了解 Dompdf 漏洞 

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

SVG(可缩放矢量图形) 

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

以不同颜色显示 SVG 多个多边形的代码片段,说明 XML 格式的编程方法
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 文件执行远程代码。 

详细说明 Phar 归档文件清单基本文件格式的表格,包括以字节为单位的大小和各部分的说明

Dompdf 如何生成 PDF 文件

流程图说明将 HTML 文件转换为 PDF 格式的过程,突出显示中间步骤和文件格式

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

Dompdf 中的安全漏洞

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

处理 SVG 文件的 PHP 代码示例,显示用于解析和验证 SVG 内容的函数

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

PDF 转换器服务的网络界面,允许用户上传 HTML 或 SVG 文件以转换为 PDF 格式

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

显示如何处理数据 URI 的 PHP 脚本,说明网络应用程序中的错误处理和协议验证

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

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

图像处理的 PHP 示例,详细介绍了从数据 URL 绘制图像和处理文件内容的函数

因此,只要在标签名称(如 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 文件。 

基于网络的 PDF 转换器工具的屏幕截图,以人形头像为特色,强调文件上传和转换功能

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

显示使用 Dompdf 库将 HTML 转换为横向 PDF 文件的 PHP 代码片段
Composer.json 文件片段指定了 PHP 项目对 Dompdf 库 2.0.1 版本的要求
开发流程
解释利用 Dompdf 漏洞利用 SVG 文件执行反向 shell 的四步流程图

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

说明 PHP 中对象反序列化漏洞的 PHP 代码示例,该漏洞可导致通过反向 shell 远程执行代码

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

PHP 脚本演示如何创建 Phar 存档,其中包括用于执行远程命令的序列化对象数据

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

SVG 代码片段演示了如何通过图像引用嵌入远程 PHP 反序列化漏洞

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

PDF 转换器的 Web 界面,显示上传 HTML/SVG 文件并将其转换为 PDF 的选项,以数字人体模型为特色
Metasploit 控制台截图,显示成功的反向 TCP 连接和网络配置详情
显示从 Unix 系统获取的网络配置和凭证的终端截图

利用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 漏洞至关重要。这种对应用程序软件组件的全面了解使安全团队能够做出明智的决策,并采取适当的措施来应对已识别的风险。 

安全分析界面显示因漏洞而被阻止的 JavaScript 文件,并提供详细的评估结果

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

详细查看 JavaScript 对象符号文件中的漏洞,利用 CVE 标识符列出关键风险和高安全风险

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

结束语 

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

通过OPSWAT 了解最新信息!

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