关键漏洞信息: Description: 核心问题: 在处理服务器响应时,X Window System 客户端库存在大量协议处理问题,主要源于信任服务器发送的正确协议数据,而未验证数据是否会导致溢出或其他损害。 主要漏洞类型: 1. 整数溢出计算内存需求 - 不检查计算是否溢出,导致分配太少内存并写入超出缓冲区范围的数据。 - 影响的函数包括:XQueryFont(), XListFontsWithInfo(), XGetMotionEvents(), ... 等。 2. 符号扩展问题计算内存需求 - 未检查符号扩展问题,导致在转换较小整型到较大整型时,负数在内存大小计算中使用,可能分配太少内存并溢出。 - 影响函数包括:XAllocColorCells(), XkbReadGetDeviceInfoReply(), XListInputDevices() 等。 3. 缓冲区溢出(未验证回复中的长度或偏移值) - 不检查服务器返回的数据长度或索引是否在指定范围内导致写入超出已分配内存边界。 - 影响的函数包括:XGetDeviceButtonMapping(), XQueryDeviceState()等。 4. 解析用户指定文件时的整数溢出 - 处理文件数据时,未检查读取的数据计算是否溢出,导致分配太少内存并溢出。 5. 解析用户指定文件的无界递归 - 处理C风格的#include指令时,递归深度无限制,可能导致堆栈溢出。 6. 未检查的返回值引起的内存破坏 - 假设XGetWindowProperty()返回的指针已正确初始化,但在返回失败时未初始化,使用未初始化指针读/写或传递给free()等函数。 Affected Versions: 所有以前版本都包含这些漏洞,可追溯到其首次引入。 Fixes: 固定版本和Git提交提供修复。 警告:git中的补丁顺序对应用顺序敏感,可能影响之前压缩包版本中补丁效果。