PDFME沙盒逃生和原型污染漏洞CVE-2025-53626
PDFME是基于TypeScript的PDF生成器和基于React的基本UI,由社区开发,为简化PDF设计和生成过程而生,MIT许可下完全免费使用。
PDFME项目通过插件机制提供了强大自定义能力,允许开发者根据业务需求创建各种类型的Schema(模式),插件系统由三部分组成。
一、基本情况
PDFME基于TypeScript和React开发的开源PDF生成与处理工具库,支持WYSIWYG(所见即所得)模板设计、PDF查看及动态内容生成。
PDFME项目提供丰富元素渲染能力和灵活定制选项,旨在简化PDF设计和生成,适用于需在浏览器和Node.js环境创建自定义 PDF用户。
栋科技漏洞库关注到PDFME受影版本的表达式求值功能包含允许沙盒逸出的关键漏洞,漏洞被追踪为CVE-2025-53626,CVSS评分6.1。
二、漏洞分析
CVE-2025-53626漏洞是PDFME 5.2.0到5.4.0版本中的表达式求值功能中发现的允许沙盒逸出的关键漏洞,可能导致XSS和原型污染攻击。
攻击者可利用漏洞可在应用程序的上下文中执行任意JavaScript代码; 窃取敏感信息,包括cookies和令牌; 通过原型污染修改应用程序。
1、沙盒逃生通向XSS
可以绕过表达式计算器的沙箱来执行任意JavaScript代码,攻击者可以通过间接方法获得函数构造器:
// Attack vector 1: Using Object.getOwnPropertyDescriptor
{ ((f, g) => f(g(Object), "constructor").value)(Object.getOwnPropertyDescriptor, Object.getPrototypeOf)("alert(location)")() }
// Attack vector 2: Using object property access
{ { f: Object.getOwnPropertyDescriptor }.f({ g: Object.getPrototypeOf }.g(Object), "constructor").value("alert(location)")() }
两个有效负载都绕过沙箱限制并执行函数(" alert(location)")()。
2、原型污染
表达式计算器允许访问原型访问器方法,这些方法可被Object.assign利用来污染原型链:
__lookupGetter__
__lookupSetter__
__defineGetter__
__defineSetter__
三、POC概念验证
在PDFME触发器警报中加载以下模板 alert(location):

四、影响范围
PDFME >= 5.2.0, < 5.4.1
五、修复建议
PDFME >= 5.4.1
六、参考链接
