CVE-2025-59802Foxit PDF Reader和Editor在2025.2.1之前版本存在严重的签名欺骗漏洞。该漏洞利用了PDF规范中可选内容组(OCG)的特性,OCG的state属性是运行时属性,不包含在数字签名计算缓冲区中。攻击者可以通过JavaScript或PDF触发器在文档签名后动态修改OCG内容的可见性,从而改变签名PDF的视觉内容而不使签名失效。这导致签名内容与验证者看到的内容之间产生不匹配,严重破坏了数字签名的可信度和文档完整性。攻击者可以利用此漏洞伪造经过签名的法律文档、合同、财务报表等重要文件,对企业和个人的合法权益造成损害。Foxit官方已发布修复版本2025.2.1、14.0.1和13.2.1来解决此安全问题。
该漏洞的根本原因在于Foxit PDF阅读器对OCG(可选内容组)状态的处理方式。当PDF文档启用OCG支持时,OCG的可见性状态属于运行时属性,不会被纳入数字签名的计算缓冲区。这意味着即使文档已进行数字签名,攻击者仍可通过JavaScript代码在签名后修改OCG的显示状态。在正常的PDF签名流程中,签名者会对文档的特定内容进行数字签名以确保其完整性和不可否认性。然而,由于OCG状态不参与签名计算,攻击者可以构造一个包含OCG的PDF文档,在签名时隐藏恶意内容,签名后再将恶意内容显示出来,而数字签名仍然显示为有效。这种攻击方式特别危险,因为数字签名通常被视为文档真实性的可靠证明,而此漏洞使得攻击者可以在不破坏签名的情况下篡改文档内容。攻击者可以利用PDF的JavaScript API(如this.getOCGs())来动态控制OCG的可见性,结合文档打开事件(onOpen)或页面显示事件(onPageInvisibletoUser/onPageVisible)来自动执行恶意代码。