CVE-2025-66034fontTools是一个用于处理字体文件的Python库,广泛应用于字体设计、排版和字体变体生成等场景。该库提供了丰富的API用于读取、修改和生成字体文件,支持TTF、OTF、WOFF等多种字体格式。
CVE-2025-66034漏洞存在于fontTools的varLib模块中,具体位于varLib.main()函数代码路径。该漏洞允许攻击者通过构造恶意的.designspace文件,在处理过程中实现任意文件写入操作。由于fontTools库在字体处理过程中会将文件内容写入用户指定的目标路径,而缺乏充分的路径安全验证,攻击者可以利用路径遍历等技术将恶意文件写入系统任意位置。
当攻击者成功将恶意脚本写入系统关键目录(如启动目录、计划任务目录等)后,可进一步实现持久化攻击和远程代码执行。该漏洞影响fontTools 4.33.0至4.60.2之前的所有版本,CVSS评分6.3,属于中等严重程度。漏洞已被官方在4.60.2版本中修复。
fontTools varLib模块主要用于处理字体变体文件(Variable Fonts)和designspace文件。在处理.designspace文件时,varLib.main()函数会解析文件中的路径信息,并将生成的字体文件输出到指定位置。
漏洞的核心问题在于:varLib模块在处理用户提供的输出路径时,未对路径进行充分的安全验证。具体表现为:
1. 路径解析缺陷:程序直接使用.designspace文件中指定的输出路径,未进行规范化或安全检查,允许使用路径遍历字符(如../)访问任意目录。
2. 文件写入权限:fontTools库在执行过程中具有文件系统写入权限,可将任意内容写入目标路径。
3. 利用条件:攻击者需要构造包含恶意路径的.designspace文件,并通过社会工程学手段诱骗受害者打开该文件。受害者可能是使用fontTools进行字体处理的设计师或开发人员。
4. 攻击后果:攻击者可将恶意脚本写入系统启动目录、计划任务目录或Web应用目录,结合其他机制(如系统启动、用户登录或Web服务访问)触发恶意代码执行。
CVSS向量显示该漏洞需要本地访问(AV:L)、高攻击复杂度(AC:H)、用户交互(UI:R),但一旦成功可导致高完整性影响(I:H)和低可用性影响(A:L)。