Sun Solaris aio_suspend()整数溢出本地拒绝服务漏洞 CVE-2009-0132 CNNVD-200901-193

4.9 AV AC AU C I A
发布: 2009-01-15
修订: 2011-03-08

Solaris是一款由Sun开发和维护的商业性质UNIX操作系统。 Solaris内核中用于在32位模式系统上处理SYS_kaio系统调用请求的代码存在整数溢出漏洞,本地攻击者可以利用这个漏洞导致由于内核忙碌而触发的系统崩溃。由于所有的Solaris区共享相同的内核,因此即使由普通的非全局区触发也可以导致整个系统崩溃。 /uts/common/os/aio.c中的源码: [..] 221 static int64_t 222 kaioc( 223 long a0, 224 long a1, 225 long a2, 226 long a3, 227 long a4, 228 long a5) 229 { 230 int error; 231 long rval = 0; 232 233 switch ((int)a0 & ~AIO_POLL_BIT) { ... 266 case AIOSUSPEND: 267 [1] error = aiosuspend((void *)a1, (int)a2, (timespec_t *)a3, 268 (int)a4, &rval, AIO_64); 269 break; [..] [1] aiosuspend()函数的a1、a2、a3和a4参数是受控的。 /uts/common/os/aio.c中的源码: [..] 897 static int 898 aiosuspend( 899 void *aiocb, 900 int nent, 901 struct timespec *timout, 902 int flag, 903 long *rval, 904 int run_mode) 905 { ... 925 aiop = curproc->p_aio; 926 [2] if (aiop == NULL || nent <= 0) 927 return (EINVAL); ... 951 if (model == DATAMODEL_NATIVE) 952 [3] ssize = (sizeof (aiocb_t *) * nent); 953 #ifdef _SYSCALL32_IMPL 954 else 955 [3] ssize = (sizeof (caddr32_t) * nent); 956...

0%
暂无可用Exp或PoC
当前有8条受影响产品信息