Solaris是一款由Sun开发和维护的商业性质UNIX操作系统。 Solaris的/usr/src/uts/common/syscall/systeminfo.c文件中存在整数溢出漏洞,可能导致内核信息泄露。 漏洞相关的代码如下: 125 if (kstr != NULL) { 126 if ((strcnt = strlen(kstr)) >= count) { 127 getcnt = count - 1; 128 if (subyte(buf + count - 1, 0) < 0) 129 return (set_errno (EFAULT)); 130 } else 131 getcnt = strcnt + 1; 132 if (copyout(kstr, buf, getcnt)) 133 return (set_errno(EFAULT)); 134 return (strcnt + 1); 135 } 如果由用户提供的变量count为0的话,函数就会以-1长度参数调用copyout函数。由于copyout将长度参数解释为无符整数,因此就会将大量数据拷贝到用户空间,导致攻击者可以读取敏感的Kernel内存。
Solaris是一款由Sun开发和维护的商业性质UNIX操作系统。 Solaris的/usr/src/uts/common/syscall/systeminfo.c文件中存在整数溢出漏洞,可能导致内核信息泄露。 漏洞相关的代码如下: 125 if (kstr != NULL) { 126 if ((strcnt = strlen(kstr)) >= count) { 127 getcnt = count - 1; 128 if (subyte(buf + count - 1, 0) < 0) 129 return (set_errno (EFAULT)); 130 } else 131 getcnt = strcnt + 1; 132 if (copyout(kstr, buf, getcnt)) 133 return (set_errno(EFAULT)); 134 return (strcnt + 1); 135 } 如果由用户提供的变量count为0的话,函数就会以-1长度参数调用copyout函数。由于copyout将长度参数解释为无符整数,因此就会将大量数据拷贝到用户空间,导致攻击者可以读取敏感的Kernel内存。