漏洞概述 漏洞名称: dix: increase XLFDMAXFONTPAGENAMELEN to match libXfont2's MAXFONTPAGENAMELEN 漏洞描述: XLFDMAXFONTPAGENAMELEN 被设置为 256 字节,但 libXfont2 定义的 MAXFONTPAGENAMELEN 为 1024 字节,允许字体名称和别名目标达到该长度。在 fonts.alias 文件中,doListFontsAndAliases 函数将解析的别名目标复制到栈分配的 tmp_pattern[XLFDMAXFONTPAGENAMELEN],然后复制到 c-current.pattern[XLFDMAXFONTPAGENAMELEN](在 LWMutexRec 中定义)。doListFontsWithAlias 也有相同的模式,将解析的名称复制到 c-current.pattern[]。使用旧的 256 字节限制,字体别名条目中的目标名称超过 257 和 1023 字节会导致两个缓冲区溢出。 影响范围 攻击者可以利用此漏洞: 1. 创建一个包含字体别名的 fonts.alias 文件,其目标名称超过 256 字节。 2. 使用 SetFontPath 添加恶意目录。 3. 调用 ListFonts 以别名名称触发别名解析。 4. 过大的解析名称会溢出 256 字节的缓冲区。 修复方案 修复措施: 将 XLFDMAXFONTPAGENAMELEN 从 256 增加到 1024,以匹配 libXfont2 的 MAXFONTPAGENAMELEN,确保服务器可以处理字体库生成的任何名称。 漏洞发现者 发现者: Anonymous working with TrendMicro Zero Day Initiative ZDI-CAN: 36136 协助: Claude:claude-opus-4-8 端口: 代码块