GTK+是用于创建图形用户界面的多平台工具包。 多家厂商的GTK+ gdk-pixbuf XPM图形渲染库实现中存在远程堆溢出漏洞,成功利用这个漏洞的攻击者可以在用户系统上执行任意代码。 函数库在处理XPM文件时存在整数溢出: if (n_col <= 0 || n_col >= G_MAXINT / (cpp + 1)) { g_set_error (error, GDK_PIXBUF_ERROR, GDK_PIXBUF_ERROR_CORRUPT_IMAGE, _(\"XPM file has invalid number of colors\")); return NULL; [...] colors = (XPMColor *) g_try_malloc ((sizeof (XPMColor) * n_col)); [...] n_col有效性检查可以防范第一个g_try_malloc中的整数溢出,但没有正确的检查第二个g_try_malloc,这可能导致分配不充分的堆缓冲区,然后在拷贝循环中将n_col用作上边界覆盖缓冲区。
GTK+是用于创建图形用户界面的多平台工具包。 多家厂商的GTK+ gdk-pixbuf XPM图形渲染库实现中存在远程堆溢出漏洞,成功利用这个漏洞的攻击者可以在用户系统上执行任意代码。 函数库在处理XPM文件时存在整数溢出: if (n_col <= 0 || n_col >= G_MAXINT / (cpp + 1)) { g_set_error (error, GDK_PIXBUF_ERROR, GDK_PIXBUF_ERROR_CORRUPT_IMAGE, _(\"XPM file has invalid number of colors\")); return NULL; [...] colors = (XPMColor *) g_try_malloc ((sizeof (XPMColor) * n_col)); [...] n_col有效性检查可以防范第一个g_try_malloc中的整数溢出,但没有正确的检查第二个g_try_malloc,这可能导致分配不充分的堆缓冲区,然后在拷贝循环中将n_col用作上边界覆盖缓冲区。