一名研究员在互联网最受欢迎的负责 PDF 文件创建的 PHP 库中发现一个严重漏洞。

该漏洞影响PHP“三剑客”库之一 TCPDF(其它两个是 mPDF 和 FPDF),负责将 HTML 代码转换为 PDF 文档或编译 PDF 文件。

攻击者可通过利用该漏洞在使用 TCPDF 库的网站和 web 应用上获得“远程代码执行”效果,运行恶意代码并可能接管这些系统。

该漏洞实际上是另外一名研究人员研究成果的变体。

Secarma 公司的研究员 Sam Thomas 在2018年夏天发现了一个影响 PHP 应用的反序列化漏洞。他在论文中详细说明了针对 WordPress 和 Typo3 CMS 平台以及内嵌在 Contao CMS 中的 TCPDF 库的 PHP 序列化攻击。

攻击运行原理

一名昵称为 Polict 的意大利研究员在上周末发布博客文章公布了影响 TCPDF 的新型 PHP 序列化缺陷,和 Thomas 去年发现的方式一样。

Polict 表示他发现的漏洞可通过两种方式遭利用。一种是网站允许用户输入作为 PDF 文件生成流程的一部分,例如添加发票中的名称或其它细节。

第二种利用方式是网站中包含 XSS 漏洞,攻击者能够在 HTML 源代码中植入恶意代码,通过 TCPDF 库转入 PDF 中。

这种技术利用的是 TCPDF 库中提供的恶意数据。该数据遭修改,导致 TCPDF 库调用 PHP 服务器的 “phar://” 流封装,之后滥用 PHP 反序列化进程在底层服务器上运行代码。

这是一种非常复杂的攻击例程,它要求具备高级 PHP 编程知识利用反序列化利用代码,而且通常来讲难以被发现,而且是很多编程语言的特性,如 Ruby、Java 和 .NET,以及 PHP。

再三修复

Polict 表示,他在去年8月将漏洞CVE-2018-17057 告知 TCPDF 库作者。9月,TCPDF 团队发布 TCPDF 6.2.20 版本解决该问题。

然而,用户应当至少更新至 6.2.22,因为 TCPDF 团队不慎在试图修复由 Polict 报告的漏洞时,重新引入了 Sam Thomas 报告的漏洞。

Polict 在补丁发布6个月后刚刚发布漏洞详情,以便网站和 web 应用所有人能够足够的时间进行修复。

TCPDF 库是当前最受欢迎的 PHP 库之一,而且用于各种地方如独立网站、内容管理系统、CMS 插件、CMS 主题、企业内联网、CRM、HRM、发票解决方案、很多基于 PDF 的 web 应用等。

实际上修复工作并不简单。在某些情况下,用户需要替换文件并编辑 build 指令,而在另外一些情况下要求覆写大量代码。

本文由360代码卫士翻译自ZDNet

声明:本文来自代码卫士,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。